From dd3ef078815d238b48ae5f4d31a5c0befb2443cf Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 08:13:14 -0700 Subject: [PATCH 001/195] copy --- aider/website/docs/leaderboards/notes.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/aider/website/docs/leaderboards/notes.md b/aider/website/docs/leaderboards/notes.md index 30c015ca6..bd85c8070 100644 --- a/aider/website/docs/leaderboards/notes.md +++ b/aider/website/docs/leaderboards/notes.md @@ -9,8 +9,7 @@ nav_order: 800 All pricing information is the cost to run the benchmark at the time it was run. -Providers change their pricing, and every benchmark run ends up with a slightly -different cost. +Providers change their pricing and sometimes introduce entirely novel pricing structures. Pricing is provided on a *best efforts* basis, and may not always be current or fully accurate. From 86d338c811d336fef04c001ac7d5b30cb2ad1e96 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 08:53:38 -0700 Subject: [PATCH 002/195] no_think --- aider/resources/model-settings.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/aider/resources/model-settings.yml b/aider/resources/model-settings.yml index 56e7da53d..f8497ed3e 100644 --- a/aider/resources/model-settings.yml +++ b/aider/resources/model-settings.yml @@ -1411,4 +1411,14 @@ edit_format: diff-fenced use_repo_map: true weak_model_name: openrouter/google/gemini-2.0-flash-001 + +- name: openrouter/qwen/qwen3-235b-a22b + system_prompt_prefix: "/no_think" + use_temperature: 0.7 + extra_params: + max_tokens: 24000 + top_p: 0.8 + top_k: 20 + min_p: 0.0 + temperature: 0.7 \ No newline at end of file From cb380b423ebd23c1899a63c349f6b0764558e9c0 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:34:31 -0700 Subject: [PATCH 003/195] fix: Use rich Text for filenames in prompt header --- aider/io.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/aider/io.py b/aider/io.py index 90f581aab..f28a1c86d 100644 --- a/aider/io.py +++ b/aider/io.py @@ -1144,18 +1144,19 @@ class InputOutput: ro_paths = [] for rel_path in read_only_files: abs_path = os.path.abspath(os.path.join(self.root, rel_path)) - ro_paths.append(abs_path if len(abs_path) < len(rel_path) else rel_path) + ro_paths.append(Text(abs_path if len(abs_path) < len(rel_path) else rel_path)) - files_with_label = ["Readonly:"] + ro_paths + files_with_label = [Text("Readonly:")] + ro_paths read_only_output = StringIO() Console(file=read_only_output, force_terminal=False).print(Columns(files_with_label)) read_only_lines = read_only_output.getvalue().splitlines() console.print(Columns(files_with_label)) if editable_files: - files_with_label = editable_files + text_editable_files = [Text(f) for f in editable_files] + files_with_label = text_editable_files if read_only_files: - files_with_label = ["Editable:"] + editable_files + files_with_label = [Text("Editable:")] + text_editable_files editable_output = StringIO() Console(file=editable_output, force_terminal=False).print(Columns(files_with_label)) editable_lines = editable_output.getvalue().splitlines() From 1307215b8fdea01b249473bf4c314a6da48d2252 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:36:15 -0700 Subject: [PATCH 004/195] test: Test io.format_files_for_input pretty output --- tests/basic/test_io.py | 119 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 119 insertions(+) diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index e925ef66d..f590194ab 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -7,6 +7,7 @@ from prompt_toolkit.completion import CompleteEvent from prompt_toolkit.document import Document from aider.dump import dump # noqa: F401 +from rich.text import Text from aider.io import AutoCompleter, ConfirmGroup, InputOutput from aider.utils import ChdirTemporaryDirectory @@ -476,5 +477,123 @@ class TestInputOutputMultilineMode(unittest.TestCase): mock_print.assert_called_once() +class TestInputOutputFormatFiles(unittest.TestCase): + def test_format_files_for_input_pretty_false(self): + io = InputOutput(pretty=False, fancy_input=False) + rel_fnames = ["file1.txt", "file[markup].txt", "ro_file.txt"] + rel_read_only_fnames = ["ro_file.txt"] + + expected_output = ( + "file1.txt\n" + "file[markup].txt\n" + "ro_file.txt (read only)\n" + ) + # Sort the expected lines because the order of editable vs read-only might vary + # depending on internal sorting, but the content should be the same. + # The method sorts editable_files and read_only_files separately. + # The final output joins sorted(read_only_files) + sorted(editable_files) + + # Based on current implementation: + # read_only_files = ["ro_file.txt (read only)"] + # editable_files = ["file1.txt", "file[markup].txt"] + # output = "\n".join(read_only_files + editable_files) + "\n" + + # Correct expected output based on implementation: + expected_output_lines = sorted([ + "ro_file.txt (read only)", + "file1.txt", + "file[markup].txt", + ]) + expected_output = "\n".join(expected_output_lines) + "\n" + + actual_output = io.format_files_for_input(rel_fnames, rel_read_only_fnames) + + # Normalizing actual output by splitting, sorting, and rejoining + actual_output_lines = sorted(filter(None, actual_output.splitlines())) + normalized_actual_output = "\n".join(actual_output_lines) + "\n" + + self.assertEqual(normalized_actual_output, expected_output) + + @patch("rich.columns.Columns") + @patch("os.path.abspath") + @patch("os.path.join") + def test_format_files_for_input_pretty_true_no_files(self, mock_join, mock_abspath, mock_columns): + io = InputOutput(pretty=True, root="test_root") + io.format_files_for_input([], []) + mock_columns.assert_not_called() + + @patch("rich.columns.Columns") + @patch("os.path.abspath") + @patch("os.path.join") + def test_format_files_for_input_pretty_true_editable_only(self, mock_join, mock_abspath, mock_columns): + io = InputOutput(pretty=True, root="test_root") + rel_fnames = ["edit1.txt", "edit[markup].txt"] + + io.format_files_for_input(rel_fnames, []) + + mock_columns.assert_called_once() + args, _ = mock_columns.call_args + renderables = args[0] + + self.assertEqual(len(renderables), 2) + self.assertIsInstance(renderables[0], Text) + self.assertEqual(renderables[0].plain, "edit1.txt") + self.assertIsInstance(renderables[1], Text) + self.assertEqual(renderables[1].plain, "edit[markup].txt") + + @patch("rich.columns.Columns") + @patch("os.path.abspath") + @patch("os.path.join") + def test_format_files_for_input_pretty_true_readonly_only(self, mock_join, mock_abspath, mock_columns): + io = InputOutput(pretty=True, root="test_root") + + # Mock path functions to ensure rel_path is chosen by the shortener logic + mock_join.side_effect = lambda *args: "/".join(args) + mock_abspath.side_effect = lambda p: "/ABS_PREFIX_VERY_LONG/" + os.path.normpath(p) + + rel_read_only_fnames = ["ro1.txt", "ro[markup].txt"] + # When all files in chat are read-only + rel_fnames = list(rel_read_only_fnames) + + io.format_files_for_input(rel_fnames, rel_read_only_fnames) + + mock_columns.assert_called_once() + args, _ = mock_columns.call_args + renderables = args[0] + + self.assertEqual(len(renderables), 3) # Readonly: + 2 files + self.assertIsInstance(renderables[0], Text) + self.assertEqual(renderables[0].plain, "Readonly:") + self.assertIsInstance(renderables[1], Text) + self.assertEqual(renderables[1].plain, "ro1.txt") + self.assertIsInstance(renderables[2], Text) + self.assertEqual(renderables[2].plain, "ro[markup].txt") + + @patch("rich.columns.Columns") + @patch("os.path.abspath") + @patch("os.path.join") + def test_format_files_for_input_pretty_true_mixed_files(self, mock_join, mock_abspath, mock_columns): + io = InputOutput(pretty=True, root="test_root") + + mock_join.side_effect = lambda *args: "/".join(args) + mock_abspath.side_effect = lambda p: "/ABS_PREFIX_VERY_LONG/" + os.path.normpath(p) + + rel_fnames = ["edit1.txt", "edit[markup].txt", "ro1.txt", "ro[markup].txt"] + rel_read_only_fnames = ["ro1.txt", "ro[markup].txt"] + + io.format_files_for_input(rel_fnames, rel_read_only_fnames) + + self.assertEqual(mock_columns.call_count, 2) + + # First call for read-only files + args_ro, _ = mock_columns.call_args_list[0] + renderables_ro = args_ro[0] + self.assertEqual(renderables_ro, [Text("Readonly:"), Text("ro1.txt"), Text("ro[markup].txt")]) + + # Second call for editable files + args_ed, _ = mock_columns.call_args_list[1] + renderables_ed = args_ed[0] + self.assertEqual(renderables_ed, [Text("Editable:"), Text("edit1.txt"), Text("edit[markup].txt")]) + if __name__ == "__main__": unittest.main() From f31128706d135caaf50e786b3cfdd605b2daf7d0 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:36:20 -0700 Subject: [PATCH 005/195] style: Format test_io.py --- tests/basic/test_io.py | 49 ++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 19 deletions(-) diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index f590194ab..e831fef10 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -5,9 +5,9 @@ from unittest.mock import MagicMock, patch from prompt_toolkit.completion import CompleteEvent from prompt_toolkit.document import Document +from rich.text import Text from aider.dump import dump # noqa: F401 -from rich.text import Text from aider.io import AutoCompleter, ConfirmGroup, InputOutput from aider.utils import ChdirTemporaryDirectory @@ -483,11 +483,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): rel_fnames = ["file1.txt", "file[markup].txt", "ro_file.txt"] rel_read_only_fnames = ["ro_file.txt"] - expected_output = ( - "file1.txt\n" - "file[markup].txt\n" - "ro_file.txt (read only)\n" - ) + expected_output = "file1.txt\nfile[markup].txt\nro_file.txt (read only)\n" # Sort the expected lines because the order of editable vs read-only might vary # depending on internal sorting, but the content should be the same. # The method sorts editable_files and read_only_files separately. @@ -499,11 +495,13 @@ class TestInputOutputFormatFiles(unittest.TestCase): # output = "\n".join(read_only_files + editable_files) + "\n" # Correct expected output based on implementation: - expected_output_lines = sorted([ - "ro_file.txt (read only)", - "file1.txt", - "file[markup].txt", - ]) + expected_output_lines = sorted( + [ + "ro_file.txt (read only)", + "file1.txt", + "file[markup].txt", + ] + ) expected_output = "\n".join(expected_output_lines) + "\n" actual_output = io.format_files_for_input(rel_fnames, rel_read_only_fnames) @@ -517,7 +515,9 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("rich.columns.Columns") @patch("os.path.abspath") @patch("os.path.join") - def test_format_files_for_input_pretty_true_no_files(self, mock_join, mock_abspath, mock_columns): + def test_format_files_for_input_pretty_true_no_files( + self, mock_join, mock_abspath, mock_columns + ): io = InputOutput(pretty=True, root="test_root") io.format_files_for_input([], []) mock_columns.assert_not_called() @@ -525,7 +525,9 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("rich.columns.Columns") @patch("os.path.abspath") @patch("os.path.join") - def test_format_files_for_input_pretty_true_editable_only(self, mock_join, mock_abspath, mock_columns): + def test_format_files_for_input_pretty_true_editable_only( + self, mock_join, mock_abspath, mock_columns + ): io = InputOutput(pretty=True, root="test_root") rel_fnames = ["edit1.txt", "edit[markup].txt"] @@ -544,7 +546,9 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("rich.columns.Columns") @patch("os.path.abspath") @patch("os.path.join") - def test_format_files_for_input_pretty_true_readonly_only(self, mock_join, mock_abspath, mock_columns): + def test_format_files_for_input_pretty_true_readonly_only( + self, mock_join, mock_abspath, mock_columns + ): io = InputOutput(pretty=True, root="test_root") # Mock path functions to ensure rel_path is chosen by the shortener logic @@ -553,7 +557,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): rel_read_only_fnames = ["ro1.txt", "ro[markup].txt"] # When all files in chat are read-only - rel_fnames = list(rel_read_only_fnames) + rel_fnames = list(rel_read_only_fnames) io.format_files_for_input(rel_fnames, rel_read_only_fnames) @@ -561,7 +565,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): args, _ = mock_columns.call_args renderables = args[0] - self.assertEqual(len(renderables), 3) # Readonly: + 2 files + self.assertEqual(len(renderables), 3) # Readonly: + 2 files self.assertIsInstance(renderables[0], Text) self.assertEqual(renderables[0].plain, "Readonly:") self.assertIsInstance(renderables[1], Text) @@ -572,7 +576,9 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("rich.columns.Columns") @patch("os.path.abspath") @patch("os.path.join") - def test_format_files_for_input_pretty_true_mixed_files(self, mock_join, mock_abspath, mock_columns): + def test_format_files_for_input_pretty_true_mixed_files( + self, mock_join, mock_abspath, mock_columns + ): io = InputOutput(pretty=True, root="test_root") mock_join.side_effect = lambda *args: "/".join(args) @@ -588,12 +594,17 @@ class TestInputOutputFormatFiles(unittest.TestCase): # First call for read-only files args_ro, _ = mock_columns.call_args_list[0] renderables_ro = args_ro[0] - self.assertEqual(renderables_ro, [Text("Readonly:"), Text("ro1.txt"), Text("ro[markup].txt")]) + self.assertEqual( + renderables_ro, [Text("Readonly:"), Text("ro1.txt"), Text("ro[markup].txt")] + ) # Second call for editable files args_ed, _ = mock_columns.call_args_list[1] renderables_ed = args_ed[0] - self.assertEqual(renderables_ed, [Text("Editable:"), Text("edit1.txt"), Text("edit[markup].txt")]) + self.assertEqual( + renderables_ed, [Text("Editable:"), Text("edit1.txt"), Text("edit[markup].txt")] + ) + if __name__ == "__main__": unittest.main() From aef3863c4a1448d3a4ffb03415a46d794ec2278a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:36:33 -0700 Subject: [PATCH 006/195] fix: Remove unused import in test_io.py --- tests/basic/test_io.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index e831fef10..80cf50cb7 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -452,8 +452,6 @@ class TestInputOutputMultilineMode(unittest.TestCase): """Test that tool_output correctly handles hex colors without # prefix""" from unittest.mock import patch - from rich.text import Text - # Create IO with hex color without # for tool_output_color io = InputOutput(tool_output_color="FFA500", pretty=True) From d18a9f32bc1d3f2d30ff2982a199e83c76f3b08a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:38:21 -0700 Subject: [PATCH 007/195] fix: Fix flaky tests for pretty file list formatting --- tests/basic/test_io.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index 80cf50cb7..476b0a59a 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -475,6 +475,8 @@ class TestInputOutputMultilineMode(unittest.TestCase): mock_print.assert_called_once() +@patch("aider.io.is_dumb_terminal", return_value=False) +@patch.dict(os.environ, {"NO_COLOR": ""}) class TestInputOutputFormatFiles(unittest.TestCase): def test_format_files_for_input_pretty_false(self): io = InputOutput(pretty=False, fancy_input=False) From 4124cee722e940b7b7684cdf51e4e0cf8e2df012 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:39:22 -0700 Subject: [PATCH 008/195] test: Fix TestInputOutputFormatFiles method signatures --- tests/basic/test_io.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index 476b0a59a..d1d1f9686 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -478,7 +478,7 @@ class TestInputOutputMultilineMode(unittest.TestCase): @patch("aider.io.is_dumb_terminal", return_value=False) @patch.dict(os.environ, {"NO_COLOR": ""}) class TestInputOutputFormatFiles(unittest.TestCase): - def test_format_files_for_input_pretty_false(self): + def test_format_files_for_input_pretty_false(self, mock_is_dumb_terminal): io = InputOutput(pretty=False, fancy_input=False) rel_fnames = ["file1.txt", "file[markup].txt", "ro_file.txt"] rel_read_only_fnames = ["ro_file.txt"] @@ -516,7 +516,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_no_files( - self, mock_join, mock_abspath, mock_columns + self, mock_join, mock_abspath, mock_columns, mock_is_dumb_terminal ): io = InputOutput(pretty=True, root="test_root") io.format_files_for_input([], []) @@ -526,7 +526,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_editable_only( - self, mock_join, mock_abspath, mock_columns + self, mock_join, mock_abspath, mock_columns, mock_is_dumb_terminal ): io = InputOutput(pretty=True, root="test_root") rel_fnames = ["edit1.txt", "edit[markup].txt"] @@ -547,7 +547,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_readonly_only( - self, mock_join, mock_abspath, mock_columns + self, mock_join, mock_abspath, mock_columns, mock_is_dumb_terminal ): io = InputOutput(pretty=True, root="test_root") @@ -577,7 +577,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_mixed_files( - self, mock_join, mock_abspath, mock_columns + self, mock_join, mock_abspath, mock_columns, mock_is_dumb_terminal ): io = InputOutput(pretty=True, root="test_root") From bfcff84b286523e020d6d8d2ea31923b1d0099ce Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:42:18 -0700 Subject: [PATCH 009/195] fix: Patch rich.columns.Columns where it is used --- tests/basic/test_io.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index d1d1f9686..6131f5d65 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -512,7 +512,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): self.assertEqual(normalized_actual_output, expected_output) - @patch("rich.columns.Columns") + @patch("aider.io.Columns") @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_no_files( @@ -522,7 +522,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): io.format_files_for_input([], []) mock_columns.assert_not_called() - @patch("rich.columns.Columns") + @patch("aider.io.Columns") @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_editable_only( @@ -543,7 +543,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): self.assertIsInstance(renderables[1], Text) self.assertEqual(renderables[1].plain, "edit[markup].txt") - @patch("rich.columns.Columns") + @patch("aider.io.Columns") @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_readonly_only( @@ -573,7 +573,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): self.assertIsInstance(renderables[2], Text) self.assertEqual(renderables[2].plain, "ro[markup].txt") - @patch("rich.columns.Columns") + @patch("aider.io.Columns") @patch("os.path.abspath") @patch("os.path.join") def test_format_files_for_input_pretty_true_mixed_files( From 3ed897c66553d7c855a0f3277b0c6e5cfc20f259 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 09:43:36 -0700 Subject: [PATCH 010/195] fix: Correct Columns call count assertions in io tests --- tests/basic/test_io.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests/basic/test_io.py b/tests/basic/test_io.py index 6131f5d65..270a3c247 100644 --- a/tests/basic/test_io.py +++ b/tests/basic/test_io.py @@ -561,7 +561,7 @@ class TestInputOutputFormatFiles(unittest.TestCase): io.format_files_for_input(rel_fnames, rel_read_only_fnames) - mock_columns.assert_called_once() + self.assertEqual(mock_columns.call_count, 2) args, _ = mock_columns.call_args renderables = args[0] @@ -589,17 +589,17 @@ class TestInputOutputFormatFiles(unittest.TestCase): io.format_files_for_input(rel_fnames, rel_read_only_fnames) - self.assertEqual(mock_columns.call_count, 2) + self.assertEqual(mock_columns.call_count, 4) - # First call for read-only files + # Check arguments for the first rendering of read-only files (call 0) args_ro, _ = mock_columns.call_args_list[0] renderables_ro = args_ro[0] self.assertEqual( renderables_ro, [Text("Readonly:"), Text("ro1.txt"), Text("ro[markup].txt")] ) - # Second call for editable files - args_ed, _ = mock_columns.call_args_list[1] + # Check arguments for the first rendering of editable files (call 2) + args_ed, _ = mock_columns.call_args_list[2] renderables_ed = args_ed[0] self.assertEqual( renderables_ed, [Text("Editable:"), Text("edit1.txt"), Text("edit[markup].txt")] From f12395f4d3eeb30343c24bb56b5024cace835c47 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 10:33:50 -0700 Subject: [PATCH 011/195] together --- aider/resources/model-metadata.json | 4 ++++ aider/resources/model-settings.yml | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/aider/resources/model-metadata.json b/aider/resources/model-metadata.json index 7423b01a8..51b458df9 100644 --- a/aider/resources/model-metadata.json +++ b/aider/resources/model-metadata.json @@ -461,4 +461,8 @@ "supported_output_modalities": ["text"], "source": "https://ai.google.dev/gemini-api/docs/pricing#gemini-2.5-pro-preview" }, + "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 f8497ed3e..2cf7c5106 100644 --- a/aider/resources/model-settings.yml +++ b/aider/resources/model-settings.yml @@ -1413,7 +1413,6 @@ weak_model_name: openrouter/google/gemini-2.0-flash-001 - name: openrouter/qwen/qwen3-235b-a22b - system_prompt_prefix: "/no_think" use_temperature: 0.7 extra_params: max_tokens: 24000 @@ -1421,4 +1420,15 @@ top_k: 20 min_p: 0.0 temperature: 0.7 - \ No newline at end of file + +- name: together_ai/Qwen/Qwen3-235B-A22B-fp8-tput + system_prompt_prefix: "/no_think" + use_temperature: 0.7 + reasoning_tag: think + extra_params: + max_tokens: 24000 + top_p: 0.8 + top_k: 20 + min_p: 0.0 + temperature: 0.7 + \ No newline at end of file From 328584e5f4b90b654ca139af29f6444936a2acab Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 10:39:09 -0700 Subject: [PATCH 012/195] together only on OR --- aider/resources/model-settings.yml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aider/resources/model-settings.yml b/aider/resources/model-settings.yml index 2cf7c5106..c1a3ea833 100644 --- a/aider/resources/model-settings.yml +++ b/aider/resources/model-settings.yml @@ -1413,13 +1413,17 @@ weak_model_name: openrouter/google/gemini-2.0-flash-001 - name: openrouter/qwen/qwen3-235b-a22b + system_prompt_prefix: "/no_think" use_temperature: 0.7 extra_params: max_tokens: 24000 top_p: 0.8 top_k: 20 min_p: 0.0 - temperature: 0.7 + temperature: 0.7 + extra_body: + provider: + order: ["Together"] - name: together_ai/Qwen/Qwen3-235B-A22B-fp8-tput system_prompt_prefix: "/no_think" From c2fce2699e472f5e121f66487e4d04aac6aca0a0 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 10:58:24 -0700 Subject: [PATCH 013/195] feat: Add blog post about Qwen3 --- aider/website/_post/2025-05-08-qwen3.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 aider/website/_post/2025-05-08-qwen3.md diff --git a/aider/website/_post/2025-05-08-qwen3.md b/aider/website/_post/2025-05-08-qwen3.md new file mode 100644 index 000000000..e69de29bb From 758fa6f67e34ff07adaa897f4aac2afbc245176a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 10:58:26 -0700 Subject: [PATCH 014/195] feat: Add Qwen3 benchmark blog post with leaderboard table --- aider/website/_post/2025-05-08-qwen3.md | 283 ++++++++++++++++++++++++ 1 file changed, 283 insertions(+) diff --git a/aider/website/_post/2025-05-08-qwen3.md b/aider/website/_post/2025-05-08-qwen3.md index e69de29bb..5279a39e1 100644 --- a/aider/website/_post/2025-05-08-qwen3.md +++ b/aider/website/_post/2025-05-08-qwen3.md @@ -0,0 +1,283 @@ +--- +layout: post +title: Qwen3 Benchmark Results +excerpt: "Benchmark results for Qwen3 models using the Aider polyglot coding benchmark." +date: 2025-05-08 +--- + +You can add some introductory text for your blog post here. + +

Qwen3 polyglot coding leaderboard

+ +
+ +
+ + + +
+ +
+ + + + + + + + + + + + + + + {% assign max_cost = 0 %} + {% for row in site.data.qwen3_leaderboard %} {# <-- MODIFIED DATA SOURCE #} + {% if row.total_cost > max_cost %} + {% assign max_cost = row.total_cost %} + {% endif %} + {% endfor %} + {% if max_cost == 0 %}{% assign max_cost = 1 %}{% endif %} + {% assign edit_sorted = site.data.qwen3_leaderboard | sort: 'pass_rate_2' | reverse %} {# <-- MODIFIED DATA SOURCE #} + {% for row in edit_sorted %} {% comment %} Add loop index for unique IDs {% endcomment %} + {% assign row_index = forloop.index0 %} + + + + + + + + + + + + + {% endfor %} + +
+ + ModelPercent correctCostCommandCorrect edit formatEdit Format
+ + + {{ row.model }} +
+ {{ row.pass_rate_2 }}% +
+ {% if row.total_cost > 0 %} +
+ {% endif %} + {% assign rounded_cost = row.total_cost | times: 1.0 | round: 2 %} + {% if row.total_cost == 0 or rounded_cost == 0.00 %}{% else %}${{ rounded_cost }}{% endif %} +
{{ row.command }}{{ row.percent_cases_well_formed }}%{{ row.edit_format }}
+ + + + + + From 043c42b2b41b2074c468d56a4303c2f81a7193de Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 10:59:49 -0700 Subject: [PATCH 015/195] feat: Create Qwen3 leaderboard data file --- aider/website/_data/qwen3_leaderboard.yml | 55 +++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 aider/website/_data/qwen3_leaderboard.yml diff --git a/aider/website/_data/qwen3_leaderboard.yml b/aider/website/_data/qwen3_leaderboard.yml new file mode 100644 index 000000000..07e378674 --- /dev/null +++ b/aider/website/_data/qwen3_leaderboard.yml @@ -0,0 +1,55 @@ +- dirname: 2025-05-08-03-20-24--qwen3-32b-default + test_cases: 225 + model: Qwen3 32B + edit_format: diff + commit_hash: aaacee5-dirty, aeaf259 + pass_rate_1: 14.2 + pass_rate_2: 40.0 + pass_num_1: 32 + pass_num_2: 90 + percent_cases_well_formed: 83.6 + error_outputs: 119 + num_malformed_responses: 50 + num_with_malformed_responses: 37 + user_asks: 97 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 12 + prompt_tokens: 317591 + completion_tokens: 120418 + test_timeouts: 5 + total_tests: 225 + command: aider --model openrouter/qwen/qwen3-32b + date: 2025-05-08 + versions: 0.82.4.dev + seconds_per_case: 372.2 + total_cost: 0.7603 + +- dirname: 2025-05-08-03-22-37--qwen3-235b-defaults + test_cases: 225 + model: Qwen3 235B A22B + 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 + percent_cases_well_formed: 91.6 + error_outputs: 58 + num_malformed_responses: 29 + num_with_malformed_responses: 19 + user_asks: 102 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + prompt_tokens: 0 + completion_tokens: 0 + 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 From b5cde63b370326a3ea232837cef4aa0afec9135f Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 11:00:41 -0700 Subject: [PATCH 016/195] initial --- aider/website/_posts/2025-05-08-qwen3.md | 283 +++++++++++++++++++++++ 1 file changed, 283 insertions(+) create mode 100644 aider/website/_posts/2025-05-08-qwen3.md diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md new file mode 100644 index 000000000..5279a39e1 --- /dev/null +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -0,0 +1,283 @@ +--- +layout: post +title: Qwen3 Benchmark Results +excerpt: "Benchmark results for Qwen3 models using the Aider polyglot coding benchmark." +date: 2025-05-08 +--- + +You can add some introductory text for your blog post here. + +

Qwen3 polyglot coding leaderboard

+ +
+ +
+ + + +
+ +
+ + + + + + + + + + + + + + + {% assign max_cost = 0 %} + {% for row in site.data.qwen3_leaderboard %} {# <-- MODIFIED DATA SOURCE #} + {% if row.total_cost > max_cost %} + {% assign max_cost = row.total_cost %} + {% endif %} + {% endfor %} + {% if max_cost == 0 %}{% assign max_cost = 1 %}{% endif %} + {% assign edit_sorted = site.data.qwen3_leaderboard | sort: 'pass_rate_2' | reverse %} {# <-- MODIFIED DATA SOURCE #} + {% for row in edit_sorted %} {% comment %} Add loop index for unique IDs {% endcomment %} + {% assign row_index = forloop.index0 %} + + + + + + + + + + + + + {% endfor %} + +
+ + ModelPercent correctCostCommandCorrect edit formatEdit Format
+ + + {{ row.model }} +
+ {{ row.pass_rate_2 }}% +
+ {% if row.total_cost > 0 %} +
+ {% endif %} + {% assign rounded_cost = row.total_cost | times: 1.0 | round: 2 %} + {% if row.total_cost == 0 or rounded_cost == 0.00 %}{% else %}${{ rounded_cost }}{% endif %} +
{{ row.command }}{{ row.percent_cases_well_formed }}%{{ row.edit_format }}
+ + + + + + From eef0051b9335878c6e1dbd4875f00e626abcbbd3 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 11:01:03 -0700 Subject: [PATCH 017/195] chore: Remove temporary comments --- aider/website/_posts/2025-05-08-qwen3.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index 5279a39e1..da4b5bdf3 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -35,13 +35,13 @@ You can add some introductory text for your blog post here. {% assign max_cost = 0 %} - {% for row in site.data.qwen3_leaderboard %} {# <-- MODIFIED DATA SOURCE #} + {% for row in site.data.qwen3_leaderboard %} {% if row.total_cost > max_cost %} {% assign max_cost = row.total_cost %} {% endif %} {% endfor %} {% if max_cost == 0 %}{% assign max_cost = 1 %}{% endif %} - {% assign edit_sorted = site.data.qwen3_leaderboard | sort: 'pass_rate_2' | reverse %} {# <-- MODIFIED DATA SOURCE #} + {% assign edit_sorted = site.data.qwen3_leaderboard | sort: 'pass_rate_2' | reverse %} {% for row in edit_sorted %} {% comment %} Add loop index for unique IDs {% endcomment %} {% assign row_index = forloop.index0 %} From 0a5c1960b36f5712f58d29dbb06df93463db93c7 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 11:01:15 -0700 Subject: [PATCH 018/195] cleanup --- aider/website/_post/2025-05-08-qwen3.md | 283 ------------------------ 1 file changed, 283 deletions(-) delete mode 100644 aider/website/_post/2025-05-08-qwen3.md diff --git a/aider/website/_post/2025-05-08-qwen3.md b/aider/website/_post/2025-05-08-qwen3.md deleted file mode 100644 index 5279a39e1..000000000 --- a/aider/website/_post/2025-05-08-qwen3.md +++ /dev/null @@ -1,283 +0,0 @@ ---- -layout: post -title: Qwen3 Benchmark Results -excerpt: "Benchmark results for Qwen3 models using the Aider polyglot coding benchmark." -date: 2025-05-08 ---- - -You can add some introductory text for your blog post here. - -

Qwen3 polyglot coding leaderboard

- -
- -
- - - -
- -
- - - - - - - - - - - - - - - {% assign max_cost = 0 %} - {% for row in site.data.qwen3_leaderboard %} {# <-- MODIFIED DATA SOURCE #} - {% if row.total_cost > max_cost %} - {% assign max_cost = row.total_cost %} - {% endif %} - {% endfor %} - {% if max_cost == 0 %}{% assign max_cost = 1 %}{% endif %} - {% assign edit_sorted = site.data.qwen3_leaderboard | sort: 'pass_rate_2' | reverse %} {# <-- MODIFIED DATA SOURCE #} - {% for row in edit_sorted %} {% comment %} Add loop index for unique IDs {% endcomment %} - {% assign row_index = forloop.index0 %} - - - - - - - - - - - - - {% endfor %} - -
- - ModelPercent correctCostCommandCorrect edit formatEdit Format
- - - {{ row.model }} -
- {{ row.pass_rate_2 }}% -
- {% if row.total_cost > 0 %} -
- {% endif %} - {% assign rounded_cost = row.total_cost | times: 1.0 | round: 2 %} - {% if row.total_cost == 0 or rounded_cost == 0.00 %}{% else %}${{ rounded_cost }}{% endif %} -
{{ row.command }}{{ row.percent_cases_well_formed }}%{{ row.edit_format }}
- - - - - - From d32d0b790987da368e3a1236010341d9ae8c227b Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 11:05:37 -0700 Subject: [PATCH 019/195] chore: Remove last updated date cog code --- aider/website/_posts/2025-05-08-qwen3.md | 27 ------------------------ 1 file changed, 27 deletions(-) diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index da4b5bdf3..e2a6f420a 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -254,30 +254,3 @@ You can add some introductory text for your blog post here. - - From 35fe1df499056a088acfd45d358e895851e56473 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 11:05:40 -0700 Subject: [PATCH 020/195] feat: Make leaderboard title configurable and set custom title in post --- aider/website/_includes/leaderboard_table.js | 11 ++++++++--- aider/website/_posts/2025-05-08-qwen3.md | 1 + 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/aider/website/_includes/leaderboard_table.js b/aider/website/_includes/leaderboard_table.js index 8f9f40a82..0dacbdbe7 100644 --- a/aider/website/_includes/leaderboard_table.js +++ b/aider/website/_includes/leaderboard_table.js @@ -188,10 +188,15 @@ document.addEventListener('DOMContentLoaded', function() { // Update the leaderboard title based on mode and selection if (leaderboardTitle) { - if (currentMode === 'view' && selectedRows.size > 0) { - leaderboardTitle.textContent = filteredTitle; + // Check if a custom title is provided globally + if (typeof LEADERBOARD_CUSTOM_TITLE !== 'undefined' && LEADERBOARD_CUSTOM_TITLE) { + leaderboardTitle.textContent = LEADERBOARD_CUSTOM_TITLE; } else { - leaderboardTitle.textContent = defaultTitle; + if (currentMode === 'view' && selectedRows.size > 0) { + leaderboardTitle.textContent = filteredTitle; + } else { + leaderboardTitle.textContent = defaultTitle; + } } } diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index e2a6f420a..51f6d4292 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -252,5 +252,6 @@ You can add some introductory text for your blog post here. From d89d500eabaef94c967df426eedcace24d41f216 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 11:31:07 -0700 Subject: [PATCH 021/195] chore: Update default settings for Qwen3 235b model --- aider/models.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/aider/models.py b/aider/models.py index 166cb3974..1e4b408e2 100644 --- a/aider/models.py +++ b/aider/models.py @@ -526,6 +526,11 @@ class Model(ModelSettings): if "qwen3" in model and "235b" in model: self.edit_format = "diff" self.use_repo_map = True + self.system_prompt_prefix = "/no_think" + self.use_temperature = 0.7 + self.extra_params = { + "max_tokens": 24000, "top_p": 0.8, "top_k": 20, "min_p": 0.0 + } return # <-- # use the defaults From f047b2928b0f8e1fb75eafe284c73533ed9ed63a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 11:31:14 -0700 Subject: [PATCH 022/195] style: Format models.py --- aider/models.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/aider/models.py b/aider/models.py index 1e4b408e2..5abc535b1 100644 --- a/aider/models.py +++ b/aider/models.py @@ -528,9 +528,7 @@ class Model(ModelSettings): self.use_repo_map = True self.system_prompt_prefix = "/no_think" self.use_temperature = 0.7 - self.extra_params = { - "max_tokens": 24000, "top_p": 0.8, "top_k": 20, "min_p": 0.0 - } + self.extra_params = {"max_tokens": 24000, "top_p": 0.8, "top_k": 20, "min_p": 0.0} return # <-- # use the defaults From 43dd9ef8a5a804c7387f8f3fe8575606fcdf67c7 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 11:32:11 -0700 Subject: [PATCH 023/195] tweak qwen3 settings --- aider/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/models.py b/aider/models.py index 5abc535b1..3c7affcbe 100644 --- a/aider/models.py +++ b/aider/models.py @@ -528,7 +528,7 @@ class Model(ModelSettings): self.use_repo_map = True self.system_prompt_prefix = "/no_think" self.use_temperature = 0.7 - self.extra_params = {"max_tokens": 24000, "top_p": 0.8, "top_k": 20, "min_p": 0.0} + self.extra_params = {"top_p": 0.8, "top_k": 20, "min_p": 0.0} return # <-- # use the defaults From 87768303068fdeac4d79a31471aabd104f0cf613 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 11:32:24 -0700 Subject: [PATCH 024/195] copy --- aider/resources/model-settings.yml | 44 +++---- aider/website/_data/qwen3_leaderboard.yml | 138 +++++++++++++++++++++- aider/website/_posts/2025-05-08-qwen3.md | 87 +++++++++++++- 3 files changed, 241 insertions(+), 28 deletions(-) diff --git a/aider/resources/model-settings.yml b/aider/resources/model-settings.yml index c1a3ea833..338521179 100644 --- a/aider/resources/model-settings.yml +++ b/aider/resources/model-settings.yml @@ -1412,27 +1412,27 @@ use_repo_map: true weak_model_name: openrouter/google/gemini-2.0-flash-001 -- name: openrouter/qwen/qwen3-235b-a22b - system_prompt_prefix: "/no_think" - use_temperature: 0.7 - extra_params: - max_tokens: 24000 - top_p: 0.8 - top_k: 20 - min_p: 0.0 - temperature: 0.7 - extra_body: - provider: - order: ["Together"] +#- name: openrouter/qwen/qwen3-235b-a22b +# system_prompt_prefix: "/no_think" +# use_temperature: 0.7 +# extra_params: +# max_tokens: 24000 +# top_p: 0.8 +# top_k: 20 +# min_p: 0.0 +# temperature: 0.7 +# extra_body: +# provider: +# order: ["Together"] -- name: together_ai/Qwen/Qwen3-235B-A22B-fp8-tput - system_prompt_prefix: "/no_think" - use_temperature: 0.7 - reasoning_tag: think - extra_params: - max_tokens: 24000 - top_p: 0.8 - top_k: 20 - min_p: 0.0 - temperature: 0.7 +#- name: together_ai/Qwen/Qwen3-235B-A22B-fp8-tput +# system_prompt_prefix: "/no_think" +# use_temperature: 0.7 +# reasoning_tag: think +# extra_params: +# max_tokens: 24000 +# top_p: 0.8 +# top_k: 20 +# min_p: 0.0 +# temperature: 0.7 \ No newline at end of file diff --git a/aider/website/_data/qwen3_leaderboard.yml b/aider/website/_data/qwen3_leaderboard.yml index 07e378674..faa20fab7 100644 --- a/aider/website/_data/qwen3_leaderboard.yml +++ b/aider/website/_data/qwen3_leaderboard.yml @@ -1,6 +1,6 @@ - dirname: 2025-05-08-03-20-24--qwen3-32b-default test_cases: 225 - model: Qwen3 32B + model: Qwen3 32B on OpenRouter, all providers, default settings (thinking) edit_format: diff commit_hash: aaacee5-dirty, aeaf259 pass_rate_1: 14.2 @@ -28,7 +28,7 @@ - dirname: 2025-05-08-03-22-37--qwen3-235b-defaults test_cases: 225 - model: Qwen3 235B A22B + model: Qwen3 235B A22B on OpenRouter, all providers, default settings (thinking) edit_format: diff commit_hash: aaacee5-dirty pass_rate_1: 17.3 @@ -53,3 +53,137 @@ versions: 0.82.4.dev seconds_per_case: 428.1 total_cost: 1.8037 + + +- dirname: 2025-05-08-17-39-14--qwen3-235b-or-together-only + test_cases: 225 + model: Qwen3 235B A22B on OpenRouter only TogetherAI, recommended /no_think settings + edit_format: diff + commit_hash: 328584e + pass_rate_1: 28.0 + pass_rate_2: 54.7 + pass_num_1: 63 + pass_num_2: 123 + percent_cases_well_formed: 90.7 + error_outputs: 39 + num_malformed_responses: 32 + num_with_malformed_responses: 21 + user_asks: 106 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + prompt_tokens: 2816606 + completion_tokens: 362346 + test_timeouts: 2 + total_tests: 225 + command: aider --model openrouter/qwen/qwen3-235b-a22b + date: 2025-05-08 + versions: 0.82.4.dev + seconds_per_case: 77.2 + total_cost: 0.6399 + + +- dirname: 2025-04-30-04-49-37--Qwen3-235B-A22B-whole-nothink + test_cases: 225 + model: Qwen3-235B-A22B with VLLM, bfloat16, recommended /no_think settings + edit_format: whole + commit_hash: 0c383df-dirty + pass_rate_1: 28.0 + pass_rate_2: 65.3 + pass_num_1: 63 + pass_num_2: 147 + percent_cases_well_formed: 100.0 + error_outputs: 3 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 166 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 3 + test_timeouts: 0 + total_tests: 225 + command: aider --model openai/Qwen3-235B-A22B + date: 2025-04-30 + versions: 0.81.4.dev + seconds_per_case: 166.0 + total_cost: 0.0000 + +- dirname: 2025-04-30-04-49-50--Qwen3-235B-A22B-diff-nothink + test_cases: 225 + model: Qwen3-235B-A22B with VLLM, bfloat16, recommended /no_think settings + edit_format: diff + commit_hash: 0c383df-dirty + pass_rate_1: 29.8 + pass_rate_2: 61.3 + pass_num_1: 67 + pass_num_2: 138 + percent_cases_well_formed: 94.7 + error_outputs: 25 + num_malformed_responses: 25 + num_with_malformed_responses: 12 + user_asks: 97 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 2 + total_tests: 225 + command: aider --model openai/Qwen3-235B-A22B + date: 2025-04-30 + versions: 0.81.4.dev + seconds_per_case: 158.2 + total_cost: 0.0000 + +- dirname: 2025-04-30-04-08-41--Qwen3-32B-whole-nothink + test_cases: 225 + model: Qwen3-32B with VLLM, bfloat16, recommended /no_think settings + edit_format: whole + commit_hash: 0c383df-dirty + pass_rate_1: 20.4 + pass_rate_2: 45.8 + pass_num_1: 46 + pass_num_2: 103 + percent_cases_well_formed: 100.0 + error_outputs: 3 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 94 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 3 + test_timeouts: 5 + total_tests: 225 + command: aider --model openai/Qwen3-32B + date: 2025-04-30 + versions: 0.81.4.dev + seconds_per_case: 48.1 + total_cost: 0.0000 + +- dirname: 2025-04-30-04-08-51--Qwen3-32B-diff-nothink + test_cases: 225 + model: Qwen3-32B with VLLM, bfloat16, recommended /no_think settings + edit_format: diff + commit_hash: 0c383df-dirty + pass_rate_1: 20.4 + pass_rate_2: 41.3 + pass_num_1: 46 + pass_num_2: 93 + percent_cases_well_formed: 94.2 + error_outputs: 17 + num_malformed_responses: 14 + num_with_malformed_responses: 13 + user_asks: 83 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 3 + test_timeouts: 4 + total_tests: 225 + command: aider --model openai/Qwen3-32B + date: 2025-04-30 + versions: 0.81.4.dev + seconds_per_case: 59.4 + total_cost: 0.0000 \ No newline at end of file diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index 51f6d4292..4923f5330 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -1,13 +1,29 @@ --- layout: post -title: Qwen3 Benchmark Results +title: Qwen3 benchmark results excerpt: "Benchmark results for Qwen3 models using the Aider polyglot coding benchmark." date: 2025-05-08 --- -You can add some introductory text for your blog post here. +# Qwen3 results on the aider polyglot benchmark -

Qwen3 polyglot coding leaderboard

+As [previously discussed when Qwen2.5 was released](/2024/11/21/quantization.html), +details matter when working with open source models for AI coding. +Proprietary models are served by their creators or trusted providers with stable inference settings. +Open source models are wonderful because anyone can serve them, +but API providers can use very different inference settings, quantizations, etc. + +Below are collection of aider polyglot benchmark results for the new Qwen3 models. +Results are presented with various settings against various API providers, +with the hope of showcasing the strengths of these models and its providers. + +{: .note } +This article is being updated as new results become available. + + + + +

Qwen3 results on the aider polyglot benchmark

@@ -252,6 +268,69 @@ You can add some introductory text for your blog post here. + + +## OpenRouter only TogetherAI, recommended /no_think settings + +These results were obtained with the +[recommended](https://huggingface.co/Qwen/Qwen3-235B-A22B#best-practices) +non-thinking model settings in `.aider.model.settings.yml`: + +```yaml +- name: openrouter/qwen/qwen3-235b-a22b + system_prompt_prefix: "/no_think" + use_temperature: 0.7 + extra_params: + max_tokens: 24000 + top_p: 0.8 + top_k: 20 + min_p: 0.0 + temperature: 0.7 + extra_body: + provider: + order: ["Together"] +``` + +And then running aider: + +```bash +aider --model openrouter/qwen/qwen3-235b-a22b +``` + + +## OpenRouter, all providers, default settings (thinking) + +These results were obtained by simply running aider as shown below, without any model specific settings. +This should have enabled thinking, assuming upstream API providers honor that convention for Qwen3. + +```bash +aider --model openrouter/qwen/qwen3-xxx +``` + +## VLLM, bfloat16, recommended /no_think + +These [benchmarks results were obtained by GitHub user AlongWY](https://github.com/Aider-AI/aider/pull/3908) +with the +[recommended](https://huggingface.co/Qwen/Qwen3-235B-A22B#best-practices) +non-thinking model settings in `.aider.model.settings.yml`: + +```yaml +- name: openai/ + system_prompt_prefix: "/no_think" + use_temperature: 0.7 + extra_params: + max_tokens: 24000 + top_p: 0.8 + top_k: 20 + min_p: 0.0 + temperature: 0.7 +``` + +And then running aider: + +```bash +aider --model openai/ --openai-api-base +``` From d5ea078f24323dabe52783a7f3c0f2bf8f83a417 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 11:34:42 -0700 Subject: [PATCH 025/195] copy --- aider/website/_posts/2025-05-08-qwen3.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index 4923f5330..01a544b25 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -15,14 +15,13 @@ but API providers can use very different inference settings, quantizations, etc. Below are collection of aider polyglot benchmark results for the new Qwen3 models. Results are presented with various settings against various API providers, -with the hope of showcasing the strengths of these models and its providers. +with the hope of showcasing the strengths of these models and their providers. + +See details for configuring Qwen3 after the results table. {: .note } This article is being updated as new results become available. - - -

Qwen3 results on the aider polyglot benchmark

From acd7309b7878aab0aeda2d27fad07d56d9ed56b6 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 11:41:51 -0700 Subject: [PATCH 026/195] copy --- aider/website/_data/qwen3_leaderboard.yml | 14 +++++++------- aider/website/_posts/2025-05-08-qwen3.md | 9 ++++++--- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/aider/website/_data/qwen3_leaderboard.yml b/aider/website/_data/qwen3_leaderboard.yml index faa20fab7..e773bdee2 100644 --- a/aider/website/_data/qwen3_leaderboard.yml +++ b/aider/website/_data/qwen3_leaderboard.yml @@ -1,6 +1,6 @@ - dirname: 2025-05-08-03-20-24--qwen3-32b-default test_cases: 225 - model: Qwen3 32B on OpenRouter, all providers, default settings (thinking) + model: Qwen3 32B diff on OpenRouter, all providers, default settings (thinking) edit_format: diff commit_hash: aaacee5-dirty, aeaf259 pass_rate_1: 14.2 @@ -28,7 +28,7 @@ - dirname: 2025-05-08-03-22-37--qwen3-235b-defaults test_cases: 225 - model: Qwen3 235B A22B on OpenRouter, all providers, default settings (thinking) + model: Qwen3 235B A22B diff on OpenRouter, all providers, default settings (thinking) edit_format: diff commit_hash: aaacee5-dirty pass_rate_1: 17.3 @@ -57,7 +57,7 @@ - dirname: 2025-05-08-17-39-14--qwen3-235b-or-together-only test_cases: 225 - model: Qwen3 235B A22B on OpenRouter only TogetherAI, recommended /no_think settings + model: Qwen3 235B A22B diff on OpenRouter only TogetherAI, recommended /no_think settings edit_format: diff commit_hash: 328584e pass_rate_1: 28.0 @@ -86,7 +86,7 @@ - dirname: 2025-04-30-04-49-37--Qwen3-235B-A22B-whole-nothink test_cases: 225 - model: Qwen3-235B-A22B with VLLM, bfloat16, recommended /no_think settings + model: Qwen3-235B-A22B whole with VLLM, bfloat16, recommended /no_think settings edit_format: whole commit_hash: 0c383df-dirty pass_rate_1: 28.0 @@ -112,7 +112,7 @@ - dirname: 2025-04-30-04-49-50--Qwen3-235B-A22B-diff-nothink test_cases: 225 - model: Qwen3-235B-A22B with VLLM, bfloat16, recommended /no_think settings + model: Qwen3-235B-A22B diff with VLLM, bfloat16, recommended /no_think settings edit_format: diff commit_hash: 0c383df-dirty pass_rate_1: 29.8 @@ -138,7 +138,7 @@ - dirname: 2025-04-30-04-08-41--Qwen3-32B-whole-nothink test_cases: 225 - model: Qwen3-32B with VLLM, bfloat16, recommended /no_think settings + model: Qwen3-32B whole with VLLM, bfloat16, recommended /no_think settings edit_format: whole commit_hash: 0c383df-dirty pass_rate_1: 20.4 @@ -164,7 +164,7 @@ - dirname: 2025-04-30-04-08-51--Qwen3-32B-diff-nothink test_cases: 225 - model: Qwen3-32B with VLLM, bfloat16, recommended /no_think settings + model: Qwen3-32B diff with VLLM, bfloat16, recommended /no_think settings edit_format: diff commit_hash: 0c383df-dirty pass_rate_1: 20.4 diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index 01a544b25..79d53ea8d 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -14,10 +14,13 @@ Open source models are wonderful because anyone can serve them, but API providers can use very different inference settings, quantizations, etc. Below are collection of aider polyglot benchmark results for the new Qwen3 models. -Results are presented with various settings against various API providers, -with the hope of showcasing the strengths of these models and their providers. +Results are presented using both "diff" and "whole" +[edit formats](https://aider.chat/docs/more/edit-formats.html), +with various models settings, against various API providers. -See details for configuring Qwen3 after the results table. +See details on the +[model settings](https://aider.chat/docs/config/adv-model-settings.html#model-settings) +used after the results table. {: .note } This article is being updated as new results become available. From e4274aa4f66a404374f9939526948d74569927eb Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 12:08:05 -0700 Subject: [PATCH 027/195] copy --- HISTORY.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 48738aa73..132b84e59 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,9 +2,9 @@ ### main branch -- Added support for `qwen3-235b` models, including `openrouter/qwen/qwen3-235b-a22b`. +- Added support for `qwen3-235b` models. - Added support for `gemini-2.5-pro-preview-05-06` models. -- Added repomap support for OCaml and OCaml interface files, by Andrey Popp. +- Added repo-map support for OCaml and OCaml interface files, by Andrey Popp. - Introduced `--attribute-co-authored-by` option to add co-author trailer to commit messages, by Andrew Grigorev. - Updated Gemini model aliases (e.g., `gemini`, `gemini-2.5-pro`) to point to the `05-06` preview versions. - Marked Gemini 2.5 Pro preview models as `overeager` by default. From cd7567fcf603857b6abc762bc4d4593502e31105 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 12:08:14 -0700 Subject: [PATCH 028/195] chore: Refine ask mode prompt instructions --- aider/coders/ask_prompts.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aider/coders/ask_prompts.py b/aider/coders/ask_prompts.py index 855806592..93106380a 100644 --- a/aider/coders/ask_prompts.py +++ b/aider/coders/ask_prompts.py @@ -8,7 +8,9 @@ class AskPrompts(CoderPrompts): Answer questions about the supplied code. Always reply to the user in {language}. -Describe code changes however you like. Don't use SEARCH/REPLACE blocks! +Describe code changes however you like. +Don't use SEARCH/REPLACE blocks! +Don't return entire updated source files. """ example_messages = [] From 82f33c12206d1ab7a19d4b5369a40c3016b255ee Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 12:14:41 -0700 Subject: [PATCH 029/195] copy --- aider/website/_posts/2025-05-08-qwen3.md | 1 + aider/website/assets/2025-05-08-qwen3.jpg | Bin 0 -> 226001 bytes 2 files changed, 1 insertion(+) create mode 100644 aider/website/assets/2025-05-08-qwen3.jpg diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index 79d53ea8d..21716c725 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -2,6 +2,7 @@ layout: post title: Qwen3 benchmark results excerpt: "Benchmark results for Qwen3 models using the Aider polyglot coding benchmark." +highlight_image: /assets/2025-05-08-qwen3.jpg date: 2025-05-08 --- diff --git a/aider/website/assets/2025-05-08-qwen3.jpg b/aider/website/assets/2025-05-08-qwen3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..69934518c22eae9c8df019aacd6a856499ad6701 GIT binary patch literal 226001 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

2yZ5|H)wr*Qs8&nb)KgHQy15 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 H2LA50EM=*(Yrs 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�HY$l_~o=C^8q_(Z?a zlWcCXZ<5ZL3jH`irjk5sb!`)|=|-kCrMbu&qp2Y?n^dc?8RaxC|1$4DzflxRC#8FZ zl>YmQq)m2Flfmvver{gq)R@Q^uDNQh-PUhh9X7p0p>;#uI7LpIx86in-%8zM?`H>D zaqcu}Z?XQW5FXn|3%byst0l3?B(7i49>qMUO-qbLu*_XG4%+T*!>;JVZBrUWlInVv z+hYg@J*oNKXKEmw-nwlqyPGfbP@8>I60n)kP#v5yFPtn(Zj+aYC%wDxoyFt({O4@W zEftdO4wxVE0o-&qS$e}Tc zwG=x(>rJ=!O0{}ZABj3GEECKL zXyo)K6e8GQi}MRmZ&~6M(WaZE1h62fx5F`Xft z@N}vhD&M=z-N|MH^AN?owqg^Z^6&MoaXV*7DA^;cPHDPDe4d9jd^xEb&2qEN%l%y_ z!1m#xLU&K@tI{AxrLQRrIGTzYy2<2=-_@T~t(x9nZX~!Hxp!5a)s7(Pt`<-DLfiz;kJrIs~WQ zr5#~?SczP^`a8qHbGg|kRO52w1>e)bm9_p@o+6ju*6xtmv%#<@v938NvIJXX}h7QQ!Ctk_GJ zEXhKf<<2%x{q76?u&t9pzy>%iou#xeNMW~;(M1(2=Vc^2U0rtkH%g(z=3aV>_C3Vr z`)ScAR%cTWbjlE6qEC*|_dVwm7ps};zieGm&hF7qruQa!hG!bYx1@xcPgEU0m3!fg zCWJR|=cH|@(Czp+Srza+d&Ob5A?PZ$MT1~uA#Gtl<#lEnh?~e48E&kwblk~jZE5s*Ls21G zMl7?5vey(a07Kt?{83ea)a5z@cgE4+`(7I{ejdF9DL|DD&@l)21 zn>J2GKh`g(h{~AkxXjpky7h!Y@5d}qRJcq^#_?59=NWUT@Tj(3y`|nmMYHN@1$|uy z&@O4Du%JBNV?6qWH{|#VHAH>bT0J8+48vvoKw+Y>hXL2R)OUh1y1Yuy#{dvc=lgcnDGrNsgtWFzwf4 z1aTUZV2-bM9=%#}JB#BJa{tX?3lLb`%Td;y zELV&~La7pEsXlE0yUf)yJTR+mX0uqEWrN=u7v8F1+N3v1%$D5$*i)H_BnmKK-;0~J z6$@Yp*JWu$KNs2^g!S(naBycSXrD|0&mrIg*<8ma^-uCRAgz^PJ!VeN(!?&KQf^y- zI<9vTc`MKKX<`mLdu%V$=++1Dwh(fIzlG*#+@6h!mmyr!C8;lAVtxlnU)2<3OJ-8b zbNtpr(2U9wNTw&!@v#x^nl8hL1*PyXWZphC4VqC@r|0E8e36%3o?7v;JTOjIq`bM0 z2PhU5uIJqkWNDW=ZG_1>c49CC3u-6z>48tdxKH1l%Qjmf`8Ky6e(ixDfQ1hmb;FgN z1nr;wLK}c4_|^K|+@-pF@$uHzHndre|L9)mP0*xsH0&3vexm& z0tEoY-1GZ|COhTf{t4f0HGSrL2v9}&uCTJs(r4wfgRs1Ufaf>OFzaS#b)&~EfnV&g z<+vrupGo+(VI{(g9Z-f+;BZc1EsmY#Hd*^ z;$=tsR!eKM^Sgar6{@sKAO>2(71C=K;9b7Vm1OT=1L)uq0lOq7szavLCII$S$530ld~QGZRJM5~qTT{fpUNcc zD0xh9UeS*PvTsoIv|+1G`QEmM+1zyV@e@Crp3dOgteTwa!Fl{_lr{2WuHU2JicSTu z0gQMX8T3U8p!;dcNRyt|EdN6#uP@4zSDRTGa#s|q{F`_ltilHiL2%%++R<4l;`_XH zL)7w&T<+v?%6eyVJWD-) z)D>DOxu{UrYIMyb*a+NVD-H7tEz81*i?cN~Cb!bzqZVYp&^}V1F!J9uYWX=oYRXu# zm}17-v_tnB&RDwM(7hdI_C$S#f?|!FiJ!CIPJW9XGk87W(ChBr>He{g32~G4Abz^3 zs%+a5GQzA+i+$?+Wa&fVhFcb2T4lJ~p6hC`F|W9iiy3t>5%^Jobc!*Z$+7WU@)j2G z0%C-XoLZzRG3-_+^{D|PZ`m}ZD?smojH3qHgKWyyx5*pmP0}X++(+0yUi;s9*gg9j zbnaw|h7Dc~wv^XX#d@v@Udf~Ttn2v|tfGlhWWs*gK)bn-XUM{`>M<6gnX04%(}%f(jDs8YG5lV^$4NOeQ8=A#mol}w z`<~R65Piqe{J3g<@!lT>#m4Bz+WW$~e9p4m6oMXD2Oj|P3;Cu$E$E|cDj)L$X+ym3 zO0*1+lWS80hPswt!*m}{&uCg?mS%kK=#4U($WjcYji0El@rFJaE)2q{y9q6|`_}0U zk&WcDRZQ&tJlX%6uCgF>|1&azqxTIB?XVHPu8^myxAvpqx(mtmnP#7Y!zg1zlVQ%V zXq;+8jGt94Ny%JqgpRXhGSBG<5E2et_46{AY{^HCMNi+)^HOV;Y2gs@jKoy{b*H3_ zb;!ILuSf^6mKywpp7w#N8_S$NTQ-hHtqW2$*evFuS>+l0jT zJGi+c8ka9FiU~tfWTAvj(s2N-%qdfWI@kK7YVtZ!uP+X9GBRdnbT(*J(ISgF@PdU~ zwWP37bB{_gYNzSla6FUG=674%B3jx*fJ$e<94`Y|9;e7qc%ft!r2&qdqXL|Q4)8Nx z&b@qQ$jhNzb?n=X7CT+lW%t}l;tX$9T_@ZFi01lWbfSU07Fji|SJg{2q0=j9+s!#- z$!z|4LLbQ!t2)Km=Z3XrZH>4Z?J7RWgbHRHN#)=Y6kij45my(z<`L(}u3DebD9>q9 zGgxEGtqje^NPb?|O_|c+NgXhWBe&P^8!oi9%}{T9r)1IONSLf6B4JuY6r;2M*d2Hh zI6k;l3&h%1J`lo<%naK} z!x){vamSz;VA0Xx-gEz^=qYV@x5G!w|GJLH&0H%?F9gIEl2 zcRU=SsBjeCSKhdlSe!A7cw4cb!D9tpe0C^ADhm6)ch*}93Hus9Y(ut$9cGxZMlANT zDt02cnEExScUI-OV==%Omakof-{zQRY@= z*`wxpPjv(g8isgP+Z2zTWb16G@*!$^hinThqcs&0{t@nLWYUHbCQTnMa9=m`7PLvc zk#os{2AJ2m5b>U>YYfmOaEbnir5p7Evzr+rR@&o)N^M{nsGJnq%t{fCg$e_eNdTRj zu(M+nENe^Go~!>gwL<`=EMeCJVXg;_)We4DD1Q;u%TN1WH~V9LAJgd!WA<7@*6E~6 zny^5cpd4LNdQA#f)&xF|UcpK??Nblyg|fYEtsBnImOtffP-GrDE+sV>y|0nebu&a7 zQ(Ou=RQ-}>?vChH(Za}u_1^--c`S8@k^t9u`635B;pyjl`6Vc(QN7?`AzBoHD;I@q z0+~K-)5iv3%9a6r;HZ@5i4yP7dv~7!o-NhNxmIOu=OlscJtj&Pmo~hbJI z!$Gg3jzAsGN+N|2L%Vnb#9)moN`2znA#8v3acXk$R|ESVSaUUV0K5H;vmdf_hF*_}yPiBal9vG1kJM(jbdthU!A*;W4;kx>^C(wJC&m2;moUzDYmGU7p?Qdw+`c%(HHy8t%(~>S)Xcexz8OGj?_j#y zo<=WqUv##5mJ<*AEvneI%L#XB=lR|-w&Cv0Shtzo9i#3~;{U(BKW9BAAUSvPtE@fy zvVy4B%^I}EsjfRfuJjLDB&OEP%d zDG_0ofO1dhzX0*F;Cf}w_fCAH7^NQ-o0Jz_&l{DB`?pC;kJ(j!p-n6uwQv6cO!y-A z3r(f()CACbmGf^4{`DQUAxaNL=!E??^A-_aX>wzz61;nODtm<5JskbauZ2$eto&0$ zrGFtdjNX{e||`{l++O(}(s}oO&Wm-{zsK3s2rYmFJfa%&cF$@IZ8|-6)((GgILgk_kC>;a5J__hm1*X1EQlG74`hloQbf zUACofr=K(Qc#@a61ok8?h3~Y5wwnUAzy3FW9V8wHvneK}G-O6M8C`dl1>e|V-F|kM z&C`w$@hMcOjV#F~#{AbwSb{l^ddmp445(>uj&xCP)6so;J`do>7r5?6JN05B%6ku?tO)!H*!^ph80M_XtaVW-& z+1)YdKN)ki@+F1sBrW9BPU|f=+qkxlIs1FW$Vg?P38O82uD^ZCoUv>tjk29YyngsWjaS>h-PR zW4ua|S9(itsGL+BtP%0!_tj`cf*$5lNPmFs8T;gPy{b6k`)-1?tOyX87dGd@XySl2 z!hKo3yy7{d6h5yngQk9_G+33yne^(RVz>dpX$MMSbU|ZQf%O?2hc#cI150M#$QzJt za94#{tB~5s1IBL)vV)W#4OsXQDog~aq=44RbM_33WZ@d&vzOVK8Dw$@f3Pq^4MA+f z-+}>P)Xy%MTSn?vU0=4Ao*aqTOc zdPg32lBdf@3!PFL;t~fws>HlB=}Z3-dyB|~d(4&^7I)0!(2#Qt6#ZyXI7`;9$;uj% z5cNhy3fT!{j0f@akl)S|O}PaK$YisoZG$rBYhdXpf5#EwrUhY%uroP&6aZhG*=-Xb z+1#9w6rqgqA^UfS>pi}e?&4r7e|7~zCS9@DMP@_l#s?Vfg+uOTNvg2B?;?ZibWpUw zWYBVR%V3j)dGC~yN}7TV+~&?6?ZD&nNYw7Mk+SXgJ>JZeg9{&+mqn24@;Di{Tt-OH3;H?yN3uiA^V(>9`*B@gS7 zm!h{?IgO#Q)mjpN%(ocCMZeIt4=IHXMGC5c6L1k|MG)ich3Hwi1CMx(3P+S<#=g5lF1FY?)|k><&uZMoj1* z3&GO%@|vlM^>qepX-)3*yE10Kc?xD=FJ;p@vGO2&74?)F`B;>_uo?wH#mU48;u?6k=Z!9!l;CuUP-sXt1YSyGk08 znjuLw73uKJmh!yjSv(brbq^+F33YF}kYn0ROYAdYMsr+f)x!sOUtK4H3V9Jd4?Z26eJ8pCTjYjz62+)=jA8i@>g=XdF zMzc5P3sqmaZoVb>DbxPbj|s$ky5#=9P%{44zx+G=?)M~i@hK4j30W?v!2Q6N;}_{~ zBzhV(Eer8@t8b{{g@V$~Jgd|u#n$vj-OHy}$!t(!*yw_bl6olq_oE5d2%wB+g2rak zO;@j9r26hCKrwx#(GUO%s!DL2Qj}CX<^zwQ`SUM<5IB0sM!83(tP~iG5cj)1%bogZSD z$iSMzZPJxrQ*U?}rh6xy&H+UqY4@RX8@;IW60EhjoDH=>ciA64u1|}`D+U-6J$%8w zsH}Y-8^)ya9t^bluqrcI7h$OyXwk_2G=ryUK4WVh$&hVwqREwXs60rrvz5<&;BC%B zb$h;7_2NFpayWs$!{<#Htl1H&{|l{gPwSJcU2b-Bt%d=YEku&mdgaA)tQ8M74+lj2 zd~<6yXgUH)^$N;5bOwKWrjFUe%l^K|+1pF7jIV!#?>BY!YsHjt*%yc?8{I_%tj+Do zdwSh^3?@1<5L3M>MxqoYda>djBG>tu8nZK_SAW<9-&A)&JicMm&8WFlH!^iu2pSZIFHcBR{{Z0 z1+qsv#l^)3JdQn&Sst4M@rv%1TW_OLqTy(7Jeu(Yl#bQzCFNW2Wr{a$>27QusiHW% z3p~thSjYSIw%XL782pwU6XPhr_FPgRRNc7rfz6swai}drm5$>Acmfu|En4R*PFb8) zEz4y#(oSpC(SaONdF3XIjYodqVVD{kGOTiMYA+2-kp61xsmEQjEk?r5xrGFv9`>5X z%Z@04qrIngrTMuGx_SQ<#mdahJ_-1xOOGjyg)T$xE?fCZA=b(XUi*}hEAz{blQT=Z zHgj{?1%NyT-{F9TD>FZLVXV>4?oT11BZYAuwzyp_vo*op&G`Bk_mlw8(yvi%Ne0b=9%L>5W*mOs@$c4-gM}Rl7 z990X1z9{A->VneQ8!UOs;|APHa)9?gA`XxiUL;GeIAi-2@i{KhsXhm-){qj)vaCLk ztniFX&8g!Ip18aV1A%mRaMIyiY54L9=I)%!J()^% z7Bc}1>WV2k+*U$KQ*L2tLLSAtFg-!4*^dqM`{+-7Nm$+DHcL65M|>|oV^*t!88H~= zky-fW6y{e}_3-$TD-y0i8m`nd3HyyMFly_{=xQ6+9De^Ro_!s5J(N6)f86aVESfvw zIDC*l%`vu2Fgc{8K0JH+_yH)B#Sq(BQL!HPC93+4)R|kwnT#48n^R0FJB?X|T_FPJ zw#5<}^EP~(Kt;XT24TDC=pu^l{&B%Kbfp9Yb+pPygo+h9`N}xKwpof2NqQw*dJ21> z15_f?y8&AI=)%NEG|KKs2T>Kt=?h$K!qks#4gNDNt20S!dh~g$1<~AtFk2C!;&K@$i^4OcT<%r*C@zB*VGbts5;8KjwY<4x93`RJQ~S4;qsOFRH_YY_=I< zo>DFN)1g5L8d+a{dh%UQ^Y?(0Y2J-0n6Whsmf+FK$y)GhQo9^nb1#aF;|fc5iwrcN z;Gh2#Kd7RGaRy%fJ>aY>Sju6ypLSXq_={70+PV4;+(?X7Tu}NCGtXRAtJdG1*P?B< z7QDqqTwxX+2p0^GJq-4W+UOx8jLZnjnff}Th2wirF<8NqWDDlGQfBkBUKZ2p*1tPm z%y4`e2^h61x_-`MrgBWa3Zi>ob?B^^f|Cc{$S)ie^$MvAskfAp zDO_wQ9>)RU6|Z~d+75wO%TbY+%%q0mwa93?d*p$V^-BYr5A&W*N(Swa^R0Z|ob!IO z=c^bY9roc`RUTK_B&#(C&ickCEDE2|BLn}f3cpe(8t?kyHw>-DwO1V{!ofroB57sDs*vKMUw)1CgK4l_Zd=$ zGf(V(p)n^ehzyl8a5Cexv9prab9Y%(hrj1$u+Vm|PV+D{8YJ27N}X5M8y(4#n{!zj zP3VUE$B)U92-K76mR0W>rah3vjIec-LplnPc^Yz~9yZ)1aY!tcbtv#C~hJs00&(d}EYTY=*| zDP$;89;Gl`;$c#flSC5Xdi>=f0q23Ud}Pa%u+#U&C{dY?aJ}xWSADKxXFbaP`qr*0 zv@_&d`ZgdShhf=%U5^R{(BlObf{e2MPKAT@MN%9EzuY|JF+0!FGk!9KOof%}{rR*( zT_?+FY%0k&5d(6_frAI;g-lX;WM7M}&x(BMClsglNvOo%>$(pbPG-&~^exZ>Xl1Bi=`#&s!g4MrmGMd!a9`d!koty$l2{9|T z2kx8QMoQmy5tDmOZivjLE~c33#q%b;t532m+Se?vEbxD)Pnb^*G`HS9ngT_q#BM1p z0tQT{jFj!5$_yN$YF)dv$@mZrp$)$@G81hNg7Jw-j6omeOR*0ra) zJSVc)l zK#GzfLmMwjt|hp=%YwbxT4?Xll|;4g>54(1g!)o=gsVBOFQAGYf)uI-m29s>P^ z7QMk*(3XDqzl*O^VDhYZmX&EOm$BV~GLO#_PS4s@QTMG8nTsEkI2`*kJ7)3{_T3MP zQ^755ctl<__vHycf>6e#dL0o~0{F?Va9#4`okomIA8+@-xC=1a5#AhwcYI%q0j1+; zS?x!DOL`aSaCache9-S$e8rdIXK0NA0%{b7VvTs0CCgu?b@I;M$O<1Z!ZS@8G0lSJNyPW5mwb49-S`}aI8(&Thc zodvtmrkdZthXupy?=k6y4#$K+b$@D?=(*(yC1)CPwh9K4hiGWLAH6gyFO960k%~hD zlUKixgy7;W4X`8hj#Hz|jLgp?(X01H6W&|9%&ru!Be7bqmW5$~j zKq+kArpKkI#CqQ47|^z)Pm+{Xfa%PoMJ*ua(0D8>~Q95M{|8Fllj9izG<`zhl3_<2X-e$?3@6b2Hnj!1P1y6BaL{vkOJeNX8=2v4Pso z8lW5&K`f!9%<%ExzVh0)kj$ILj1Fu%|B(5zb(e256fa>xF2xWxVMY*Ruux>}WXv3R zDP>@2KI)ST+fvbKg?oktsa{~(DgNcy-j~xb{3}tr#eHV%)xAf3Hm>kT)1Y?{?JP z-nJg+G!F?k=PYAdz0S5SQ;(*@`i_{9QI;vS1IKOc=X{wugEm{1FXMIfEt1wrEI@Qf zG~g|S_Gg0KX;S05{orz*kL@Z(NAr=&BEvTgLy>?HNMQr}HjLbQ`?hSo2%M`_r%j?p*Qnl^)~ zNa~}rio1OLrAU=+;|CgkQS~t>Ept0@ghrlMoX9HVQe#|YFT!tWvQ$|u(yZ)~Dr@et zqG8Dumej_=&jIP(1ND;TMZE&hhCLUMyZl)mY<>huuQj2y%hgPszb;AXJF>%DnaNP6 zmXh(tqoi>2;dS~%HQS(Sv6i;KmPq$=SH8$bxk zdcp*oND`I!85+LQ5G|%2aQzBdv{%Ow5N~s6`Z*#fsk&|D-S=JhJm*H!PxAFWqxWTj zLcocoD%fNVY3fVbo>`)($-R1_B3P+t!pL??2+Z|WI@$zJD zA)=4szncoi1oc;mVcIaWoC7U`Zqf|dU0DhXAafPYDzDfMoQKu{I{b4$6@J6>xu>L! zJ?XXp>bO!mS&Amlb?pp-wA7|~kX3LeK7wwQjNpdIbEjC8mOF_(dDEf4 z)f{E>qYirld zqiCL|?Gjto@J@Bu<^{y^sVR!{)-wZg$5`ir(t#-53d3LN3q}e3;i_CD*eI)oMhS|C z=bv0#;9mwY6&|v17&`x05F0+VGTH^r5V<3R!kArQa-^d+`gA7c9`>~gx6vml7&nb2 z&M4sp6mKw$8{=z9UeUSV|V+J1l{@cWq zjQ(w0*4~mIBfLFT!hs)4Yjt;Cl?WO(Ak9L{efuVc@fLeRGe%VtUJ3d|y{@0PIUQpv zi&7zmaWz<##FjJ0=33oN(t?+0b_&;UaM-wOD2#a;_3eObfmeMfi+ zKv4s?-?_ZjPRM0ii@$6#7B6`J3oXPn&G)#=@JJA}F~KeEa@&@Y;NB{e zG&$v<@-k)U+`ebInj;|{+c*8zsZW&3WU49JiehOSnt17yO{1RrTaFYHatF)&FT_V? zsy$wg!Bn6Tecb8gAJOfIdH&EN{F_pQ2ZC3dUv7V)A(+SV54-y2+hz%`K0iFz30*8t znelpMcLu%=dG$JLmHeS(u0!OyzZ|Y3rUUj4Lc6|(K*U%}@W|OWb32(xPe1yx72b%; zbyCFWb?RdjG9qs9?m~1E7Xe1|j=Tr1J3SOkN!G1n6-<$IaJHYRi7_WqT>_es2hx;U z+@txeUtKjg^|>@tTr}s} z)nd;VVvn+DbUEpJJ7m$8fkne5cSVf@wx)i;SWJ08o!e{pEpVhfM0&TPX~yO@8E>py z>m|60y;^E7(@U2TAgjWxvz?FoU=%8xTfa-Tc$_c=OO1Y7H)_@s;&`w88YgiFcN0n_ z3+M+_@YqMq$SY6LOTI?%g((|0=CFcC>Gr|su1jXELPjhz%+@s)4kxw)ENQHvdew7V zVLK`kLv-o~bYWZR*#TZ_FAl1jD-b6?Y}?iN63)OB0BR_b5v)t}km{wZghN5z zkAk`cjkC9`DU>7YJU|-UrG}5&3YIoNXXezhwX}=R_ULIV#b*t09ZuVf`meL`PhglX zKh1LB1MA}9aJzJ1S{v!sr|BOQ7=pfz~5+-J6k6D>-estpLVT82=%Ts>X^P9Us zzj*yaXS6dNGGRGb4;m0FV28%Lw2!SS-=jMS~*y$BZ*1%9n;Y7zUZJn@nlGweYg zZ7Q7j4|!tyL=&AL=QnUmvj{l5Mwy$4BUGKsguEV}+R|~H*|KK(n{7e%$<#hIT0v6$ zqi!TvXY0ktvc^c{WbDG|GCvre31I|HT3V$*h1?1}SgD^}$Ce6;mZ_^FmUHWMzQAQ) zCZ)!HQ$VJz>fn5h&h-~nk+$?LdxO}c;R+<}MQSVTEmTt1Pay0*7c^C8#R+VcuwF7~ z*J6sJ_CwvsCUXN6w{t174WM)|FYl03WY01^^S)juk1Ck6BS7qZ06r;-=HdJ9l5xl~ z7)MmYziw(mKPO0SYH<- z_;w4E%yZXLg_`3)q!Qgu^tIHo?rM`?;0I)4iXF9OHTVYH8xSTy$*_QOl@R;c)^LmT ztT|?YAQu)&eaM{iOA%7&OL^+gByLMJT*$GZaSvhS1WGSmi#rl(w0*3H(o0u$gH%mS zAn5ZV&v=jyFGr%(1XHk_KcYomh$ZwJR%O`TYDyS-qxuF}y2kgM0NW!%Ho`z|hS*fz92O2P(M&SnWwmiH-^-_ZJu<#Q1Ot;pLo-)kFl-hg@wW;lwn z(|(J&%d;(?#|n0&EHvx6+4W_gGB}X_)l%uWO@~td&QeT-AFaYaknrIR=mxEv0~qbU zC5)@eKFEVNr_|m*L~5ZrQi~mTWc}TKal>t`(Gq5$&^iL@l$}n-Yuk3aZ zewbDAMsH`kd_t1R=FnbP4{veg{CCTe+RYm7)ImO97^>eJ7SX?GORLX}?_L#-X6_`9 z=2VXfESMC1orl8Jb{5PvgPaCop|3^?9z2e#eFAO#+$`Af^q#29?xu`h_N0zjx~1`@ z;+9@rA}n1Il(e8?-G{KHjTypvjHDui5_1oRqw-oWr;z%oktreMwmT7PZcTeWqh~04 z5hbNQp1nrF?KYC)B&*nd+iPubvHZmq?f7#pvBQ+xU`B|%)c`Q*rVc&7A}*;ZHU9hY zRI|KUr_Bq0S>?~%AN6u(fMpP&F>Sm2tdB=vw*0u~O~kVGh|iy#l8{rNdWmSWCe;Fg z$nJ$BkZ2!>7yjh6HS${zv&7-O5$hM!Z?=Dr%2NAlzaFIF`I_bjXelmHg>7SAPC;DX zgN28J9-O@fALx6^=j`N{?2hXQjRN`>Q9G2oxeT{oXb$SX&@P26Gch)*%=pO=RN)je zq@YGok3s^(MpBqKW@)^0b2H8OxNwux=ZvFeQ8KGSnocU_158Rj9jhNj$X@8Z0`mnw z5*pSG{9W&I$gVo~urh-6l-QOm+;BE1t2(NJUs6>?mC!uQ8o}pG1-(x(iH%NB^0^>LSEH! zZOj|m!nXwuOxmmNb+Z5q=_#^0Ekz6WB-nMBz`848AKU1s20~Jb@;@qj=uC?UChFzd zWq>;kJ3&2j%>yi_5Y}tOk=1B#9Dx4*U^@Gy={(d#{!&FnMP7x7o{pdkodxJ9O)ja^ zd+!_I%{GcB_<@)8AR(3gKDG%{^ji>Ctw`C(I^mmoyeLzg>|)_&n7HU^6em z&iZm>6Ve(gvN0|c`ec`Ib5KxViw00RKy$cjQ3etTn2Bt6W&M%#N^u? zXv(BoYFPQhaD_QUeGfuVXyOyS6|=b&gr1~#{4ubOzxGF}VeyyeI@NjJ9c#O z?f+*pexV5*Xr`uaqGs_W!9OOq6PrO6zMDD%2R{@2cLTY2rSkRM;)FEl%G*P)>H zrekoslh`?3OJ&x-COaig;-6G<{X&~xTIg>&r>>j6{7q6Rkh_8E`B+?Y}4O}}_x9BjAqFGHbN`Y2}FHu&ctl_u2)-R1~ z{G7dAUz$E|a*1C6K~9OpdD}hs&qOOS=`Qp^w+~fD>=%`8RRD$Z@6-9~r8QOF+3bdX z`C`_;n33zZ#Y{Gnl4>ig#K7PvLUcO|_mfaR(Z5Jon)!nIf#_e~$NQP>r)RQtiB-5Mizj!-Rpq+2tp!PA*fK_y%1we1<`%IW2loycC$({vlpyi?`d;4! zX^Ht!DLfC$T{RLG@#llGX2DX(TTI_W+Zi)KyTouSQDQ}w->zI%J54p!33>G=HqLx= z!p+4G?#@bjt#Ef{*?|gv|4SOk(qFPNcm91=Cc2%pQ`UrKQNt7$zdSMHD|h-tPB5l9F2if(GOWoHT6sd3NJ( z`Kv$sgEtc7QHa9k`Qig!mdI+wv0)M{d)e42Cm$@jnBV5kg81?lo9a^E{bc#y%jw$o_+I`_HDdVl>Z)k2YM~L2k;7 z>}C#HM4J()-F^^X3x3S+X&}1n=N>9J7I{&wzUu*9DX2jiAa;9I;&2-|TIT3z2N;jYHcU?s-+&-m7V6l(?Uw!dJ!i0LWmH4O1 zAw_`eZ}Xr(C%6Ml_;ueM_5Y>L-}U}ykH0fPz5kCSiU6b{bcAtIa3yE7dd|AkmK4?_ z`;1FP(CQ?d77#A6R|W3a2QOI^m5sfmFBF0lde+!yt@)duUg+!?kgJlIt)@NoYFvxq zU8aoc14Z?jf?vOT=S+gqti21}$-KJk)lR7w&JzZoPEXfp2;p|nX7o;yfl(xDZGDY8 zd1E9T13SFNDy2WL&)zP@b!tXTNzhBpjQ3ug1FgCiITjsOw(QyYtKKO)@ZbeGdYKKJ z;k@oW@m^L^ap_N${M-#!pNCB;ibRCwPjq7;NHC6LWNy9pzy-7c!z}Z?1x$FYvl7~0 zkOlj-$KBql>>LgE7jANp?O&GGf1&+Q3hle%m?u3emFE%#PO+q2q!}@BF}}Gvx_$(f zW7^A|8)zQ0loX=MZfxnY%-W#kB*Yr5wtMN~h1+IS)$)ZqXvwi}CCKyAqTowE@M{pq zcM_>68W}1rVoC^|i?Cc-|A~@7;G~j4Mb=E9h2so#>f7M8e0EZnI*BlGT{VyM$0=XK zbA)~U4sY5Cv1evE%p&(lU07@&H#@CXa2myuf1<=J>lH|g9&|XBvd_QM6srq)iEFtU zDCvYT@2#HEBLcYzWYu_IALlzgBRT>w^AhBbc3P?VQlnxRI)?-^U`Q8Tw-=HrN0IcLqPQB|YH7{A|GW%aI6 zl=WkE3>6HRbhE9Tx0BhCHureU#yb}HT}OQmcK0>>4RleWz`M&B&j9mz$Q$*SR)t!6yb?%w)50vv|Ja| zYHLQ1%PhI&EE!(n>m|0czE``8MksH)W-WccXsy1QwjZ@vP%$gi1+*!Y-reE;t)Lg1 zaR0)Up~c0a=s{^~o&E{pLLC8uD<4ekinj$E_?Vp)FJ+E4WezG=yZI*T-rkUyO)8Mo zJ(+4MZx$x7d(UXzn_}a3tQj*b7v*RLAV`<$v4}m$Y53a%e!p_`e@R8Gcqh8m5#U7E zwd%O)1`zq8sF;dV6{3h*uj1omxg*c@C5zXRu8&p2W(}$c-5#tLf4l&p*Dgny*3G%k z)VZE(0_?PD^kDgKEd&0;Z0)kw!r^a8sl`LTUYrC zWVPFAT)$q;;~VO?as3S4E9pm8EuqQ@DXF(NPiN0Lta^0cBb`mTHT&mASWL_+l^wu zWR|~c1h1zjW%cFxsPfwrdbZN_7qLQm?dJmIm8hRF@;Z`{N>G}B+&u6p@zM0-kNW-- z$4!ly zFwAWU@P9^K{QGPEB6~N%>7PKXscN!5Qa}s5C5-Aui6$XR5_LvfD}_EBc5totPO_9# z^z%;z_L@lRkfBfB9*EMLSchvaChll`UgAjIPz~Rn?!})P08mRyPaqBY>A9=<>yTkk z7`J4XegY*etYL?0Rh_sqhffwy7suABeb*jdPGL4`RWUvNbjFltVc8~8HVsH_Qw9Bw zHQZ+Wx-ns~&f5YqXmwZ?Vuiz&VS#qhiNWR??ciSb|;U5g*j&~ETgy_|bq%xjZkC4FpP&Q?dw za*OjLayZYqot0$TU-f3cDECFi1RpHks}an5ykJzVSJleF8+dK^KHS|^MSS9^F579-EFI0tG*BG`1?9D zE;MoYyB6!c9s;M{Q zpg!PltYZg)snYCZRVyjO%emf^<$02)>bXAsS*q6=r)N(ty%E`6R#5*|Usg%!haIMu zWIFhRz3M{idiMgcWe=SR`1au{mdpX!J9b)UD#zLAiTr6*y=sE#k*{%`z&^d+r+}uD zdvEQQC0T{kAw2qFMa@9ZCH$UYzJ~ zq1vuv8T=1pEx^eP+g9^Ax1_bvt`o{3H_H9{-SLk?dd!{IiJYoB(;u4SiwslCa&9-( zSf+FpuW7jmXj=1y#Om_`S*rC>`wjIA+VXC|Yx3s;*nvF&2MJ5$$11z!pYd$ZyTbQI z<(ye-bX-Q&G8}5^@nkZ=3qbC7h?hxn=dW-=p6Cy$bU1r56B7|XsEF7ml?Sd$^1vyY zcCGgi&x#=-NoaEBX>Pf-LhHymo#&Lz>`04*DVGBT|FDDT)G&QNkEr=%v{c=UzDfP+ zQ;nvkH{pyn#}BbQyy)PhnW*Lw`|~_y`VZEI=G`tx#u>|{@LiHC`=Zk+o5S!0x$|}h z|EgyHmhQNg`80vtj7IbByqba%o@Z-R&&q13a3C`kdMdK2#b?5i=~JdI({AsQMYF$X z@Se!B0Bw|X#~*0lYL#;a4@C{#(&HlcJ!~k=J!(GIcMLuEIdg6y=@nnHKtQ zFqV!2qBrn8unD56^$0lu2P3bz!llHX

x0OqbYI?`Fz>_|~WcGFAcA&1Sn7MrKsp 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

)zwuNJ1<|d4>BGG0S~TeuyD2m*%g`s&LmFr z9I80+Yw{K2MYHyrAh+obaW!j7b1@sv zUSSBl_U_0+C-XwQVs7*UW+(5QAgG^R;#DNhMO78%RNA&%9WOVbyOBmPrFw%7 zWCkm2-Sf71%BS_#0YxjT2{f}=A%HZ6+D^t)$FxE8^xR@pKpC_* z)+zteu9P5g1gtA^IwnGG*Cd7MoRiey=~W(98yr;o?C>EoFfA&LrG-dTJy@DXnFeOAFN_}mz?vAY zUGa3fej}YWfi$PJkXzT5p0=&n_{?PF5lG&$r^ey+O>^`ZL+N2r2Mylav{VTQ>()E!HH!GXL zHP|mOF?N6&Mj`o<@06<>aUKAnqZQ?wX}9?quoR(84I#+gx}@^BHT`l+9!tfj#zOo( z%aW2I#2jrcW$mk?xx`}9nMDHEY6uctWML$5y94PDeLC%j;BpLVNp&HQIaYt|i{W`N zebzt_*EmBy5Mbn-0>S8jOnf>~Rn*B(XURZ(Mog~q@(S@QI}9A%wgTLfjnrHPs6 zJv%}bs>EgU$HDAQQJdiH@kd3^r!pDey^d+)B_;HaD|U^33&qicnFp5ns*EU=Jv~S# z-1$`1vaQ5hd%y|GjYxjgnb`35F2mydxJ#hnN&x7MSBnPAU1ngO=`T9XzxwIFo^A!G z{UgSKM@I4wjn}{5@hk3a_rUCx`@?7WXD{%UMBY55{X+Xq477j-$uHnq4%Lk`eFbsP zjs9V;`CqxS`(xekQs;KB5}fv)&j&5OcW4eoHGE-X*ulbIiG8_W%}`ztULM)E|B_P8 zn5C*1q@&7IXgURtHiPbysu3GWiF~tfH22#jNr&>%eK6VwW4_RB=88S8TjAMa@Gi|b zxVH6vp#BBAJ7|=>(Oi6&ppK11t>`4;XSSaN`N<(aW#MP%@Uyr4YmN&+b5LF^ddkD1 zQ~vX>^h!PV(xBvgO^6Qc1y@0Ctz5Gi_v6piwql09%(yAalYqd54+IF3Yb0u_YN9M4SlMB=d^s_Lc7d83{9j0NGP+45{d4iJ|Dp7xQEn5q@nX zfarbmLk3S=|4jN4oMy)JTjwEkm*~HBZc6@q>L)dR^2Sd|`Iq+_4}*q4RC|}N6@Coy zXJDv_BAuNNT!2mC$wUj2WYLk+WiV_<4q|Qkpl#it`3_RADQ{8{CgLufQpwFXKNEiu zA{;WDlD(vVmdtQ^i2!k#1dBcR!yBq!EvWw~u}KU;N@E+bi5US`2~NV~i=Iu% Date: Thu, 8 May 2025 12:30:06 -0700 Subject: [PATCH 030/195] feat: Show spinner while waiting for first stream content --- aider/mdstream.py | 38 +++++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/aider/mdstream.py b/aider/mdstream.py index 24c14f0d4..c24d97928 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -2,6 +2,8 @@ import io import time +import threading +from aider.utils import Spinner from rich import box from rich.console import Console @@ -115,9 +117,20 @@ class MarkdownStream: else: self.mdargs = dict() - # Initialize rich Live display with empty text - self.live = Live(Text(""), refresh_per_second=1.0 / self.min_delay) - self.live.start() + # Defer Live creation until the first update so the Spinner can be shown. + self.live = None + self.spinner = Spinner("Streaming markdown...") + self._spinner_stop_event = threading.Event() + self._spinner_thread = threading.Thread(target=self._spin, daemon=True) + self._spinner_thread.start() + self._live_started = False + + def _spin(self): + """Background thread that keeps the spinner moving until stopped.""" + while not self._spinner_stop_event.is_set(): + time.sleep(0.1) + self.spinner.step() + self.spinner.end() def _render_markdown_to_lines(self, text): """Render markdown text to a list of lines. @@ -146,6 +159,15 @@ class MarkdownStream: except Exception: pass # Ignore any errors during cleanup + # Ensure the spinner thread is properly shut down + if hasattr(self, "_spinner_stop_event"): + self._spinner_stop_event.set() + if hasattr(self, "_spinner_thread") and self._spinner_thread.is_alive(): + try: + self._spinner_thread.join(timeout=0.1) + except Exception: + pass + def update(self, text, final=False): """Update the displayed markdown content. @@ -163,6 +185,16 @@ class MarkdownStream: Markdown going to the console works better in terminal scrollback buffers. The live window doesn't play nice with terminal scrollback. """ + # On the first call, stop the spinner and start the Live renderer + if not getattr(self, "_live_started", False): + if hasattr(self, "_spinner_stop_event"): + self._spinner_stop_event.set() + if hasattr(self, "_spinner_thread"): + self._spinner_thread.join() + self.live = Live(Text(""), refresh_per_second=1.0 / self.min_delay) + self.live.start() + self._live_started = True + now = time.time() # Throttle updates to maintain smooth rendering if not final and now - self.when < self.min_delay: From 1d7c56b8c5a5733f9e0e6250f9db65d18f287b18 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 12:30:11 -0700 Subject: [PATCH 031/195] chore: Reorder imports in mdstream.py --- aider/mdstream.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/mdstream.py b/aider/mdstream.py index c24d97928..ed881b28f 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -1,9 +1,8 @@ #!/usr/bin/env python import io -import time import threading -from aider.utils import Spinner +import time from rich import box from rich.console import Console @@ -14,6 +13,7 @@ from rich.syntax import Syntax from rich.text import Text from aider.dump import dump # noqa: F401 +from aider.utils import Spinner _text_prefix = """ # Header From 606e27a337d65b21101b1eef5643c18cb317feb3 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 12:35:02 -0700 Subject: [PATCH 032/195] copy --- aider/mdstream.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/mdstream.py b/aider/mdstream.py index ed881b28f..ba80849ad 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -119,7 +119,7 @@ class MarkdownStream: # Defer Live creation until the first update so the Spinner can be shown. self.live = None - self.spinner = Spinner("Streaming markdown...") + self.spinner = Spinner("Waiting for LLM") self._spinner_stop_event = threading.Event() self._spinner_thread = threading.Thread(target=self._spin, daemon=True) self._spinner_thread.start() From 96bc57167fc27c18ff560b6a74d3d631b1063bbe Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 12:35:10 -0700 Subject: [PATCH 033/195] feat: Improve ask prompt to elide unchanging code --- aider/coders/ask_prompts.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/aider/coders/ask_prompts.py b/aider/coders/ask_prompts.py index 93106380a..c8c2fb4ea 100644 --- a/aider/coders/ask_prompts.py +++ b/aider/coders/ask_prompts.py @@ -8,9 +8,8 @@ class AskPrompts(CoderPrompts): Answer questions about the supplied code. Always reply to the user in {language}. -Describe code changes however you like. -Don't use SEARCH/REPLACE blocks! -Don't return entire updated source files. +Describe code changes however you like, but elide unchanging code. +Don't use SEARCH/REPLACE blocks or return huge swaths of unchanging code. """ example_messages = [] From b8f9d459fb86e8fecdf81af601696c99ec0b37f4 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 13:48:58 -0700 Subject: [PATCH 034/195] copy --- HISTORY.md | 7 +- aider/website/HISTORY.md | 11 +- aider/website/assets/sample-analytics.jsonl | 974 ++++++++++---------- aider/website/docs/faq.md | 13 +- 4 files changed, 508 insertions(+), 497 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 132b84e59..79f9626d2 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -5,6 +5,7 @@ - Added support for `qwen3-235b` models. - Added support for `gemini-2.5-pro-preview-05-06` models. - Added repo-map support for OCaml and OCaml interface files, by Andrey Popp. +- Added a spinner animation while waiting for the LLM to start streaming its response. - Introduced `--attribute-co-authored-by` option to add co-author trailer to commit messages, by Andrew Grigorev. - Updated Gemini model aliases (e.g., `gemini`, `gemini-2.5-pro`) to point to the `05-06` preview versions. - Marked Gemini 2.5 Pro preview models as `overeager` by default. @@ -20,7 +21,11 @@ - The `aider scrape` command-line tool will now use Playwright for web scraping if it is available, by Jon Keys. - Fixed linter command execution on Windows by adopting `oslex` for argument quoting, by Titusz Pan. - Improved cross-platform display of shell commands by using `oslex` for robust argument quoting, by Titusz Pan. -- Aider wrote 46% of the code in this release. +- Improved `/ask` mode to instruct the LLM to elide unchanging code in its responses. +- Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. +- Improved display of filenames in the prompt header using rich Text formatting. +- Enabled `reasoning_effort` for Gemini 2.5 Flash models. +- Aider wrote 50% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 8fa19229c..677b9ed8f 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -26,9 +26,10 @@ cog.out(text) ### main branch -- Added support for `qwen3-235b` models, including `openrouter/qwen/qwen3-235b-a22b`. +- Added support for `qwen3-235b` models. - Added support for `gemini-2.5-pro-preview-05-06` models. -- Added repomap support for OCaml and OCaml interface files, by Andrey Popp. +- Added repo-map support for OCaml and OCaml interface files, by Andrey Popp. +- Added a spinner animation while waiting for the LLM to start streaming its response. - Introduced `--attribute-co-authored-by` option to add co-author trailer to commit messages, by Andrew Grigorev. - Updated Gemini model aliases (e.g., `gemini`, `gemini-2.5-pro`) to point to the `05-06` preview versions. - Marked Gemini 2.5 Pro preview models as `overeager` by default. @@ -44,7 +45,11 @@ cog.out(text) - The `aider scrape` command-line tool will now use Playwright for web scraping if it is available, by Jon Keys. - Fixed linter command execution on Windows by adopting `oslex` for argument quoting, by Titusz Pan. - Improved cross-platform display of shell commands by using `oslex` for robust argument quoting, by Titusz Pan. -- Aider wrote 46% of the code in this release. +- Improved `/ask` mode to instruct the LLM to elide unchanging code in its responses. +- Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. +- Improved display of filenames in the prompt header using rich Text formatting. +- Enabled `reasoning_effort` for Gemini 2.5 Flash models. +- Aider wrote 50% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index a667682bb..70f22786f 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,490 +1,3 @@ -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591242} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591242} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591255} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591261} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 8690, "completion_tokens": 345, "total_tokens": 9035, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591274} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591286} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 7292, "completion_tokens": 1220, "total_tokens": 8512, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591320} -{"event": "command_code", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591356} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591356} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8562, "completion_tokens": 885, "total_tokens": 9447, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591367} -{"event": "command_diff", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591397} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745591415} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745592842} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745592843} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745592843} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745592843} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745592864} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 7148, "completion_tokens": 118, "total_tokens": 7266, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745592870} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745593117} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745593128} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745593128} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745593128} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1745593131} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132185} -{"event": "repo", "properties": {"num_files": 210}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132185} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132185} -{"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": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132185} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132186} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132243} -{"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": 5920, "completion_tokens": 369, "total_tokens": 6289, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132250} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132280} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746132280} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145284} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145285} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145285} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145322} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145323} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145323} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145359} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145359} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145359} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145381} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145381} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145381} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145385} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145397} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145397} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145397} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145400} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145410} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145410} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145410} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145410} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145430} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 21091, "completion_tokens": 965, "total_tokens": 22056, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145453} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145493} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 22758, "completion_tokens": 96, "total_tokens": 22854, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145498} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145505} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145506} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145575} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145577} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145578} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145578} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145578} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145595} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 21165, "completion_tokens": 665, "total_tokens": 21830, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145626} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145642} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 22974, "completion_tokens": 626, "total_tokens": 23600, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145655} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145666} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145669} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145671} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145681} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145684} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145684} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145684} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145684} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145691} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145696} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145698} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145698} -{"event": "cli session", "properties": {"main_model": "o3", "weak_model": "gpt-4.1-mini", "editor_model": "gpt-4.1", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145698} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145703} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145707} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145708} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145708} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145712} -{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gpt-4.1-mini", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 23102, "completion_tokens": 3097, "total_tokens": 26199, "cost": 0.35490000000000005, "total_cost": 0.35490000000000005}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145734} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145736} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145749} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145749} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145749} -{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gpt-4.1-mini", "editor_model": "gpt-4.1", "edit_format": "diff", "prompt_tokens": 24907, "completion_tokens": 1560, "total_tokens": 26467, "cost": 0.31147, "total_cost": 0.6663700000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145753} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145756} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145756} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145756} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145759} -{"event": "command_diff", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145770} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145814} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145814} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145814} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145818} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145847} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145848} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145848} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145849} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145857} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145857} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145857} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145859} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145882} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145949} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145949} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145949} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145951} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145963} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145963} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145963} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145963} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145964} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145971} -{"event": "repo", "properties": {"num_files": 615}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145971} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145971} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746145971} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746146011} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746146014} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746146014} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 21508, "completion_tokens": 724, "total_tokens": 22232, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746146038} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497069} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497069} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497069} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497072} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497077} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497174} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497177} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 30848, "completion_tokens": 526, "total_tokens": 31374, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497198} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497235} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 31391, "completion_tokens": 528, "total_tokens": 31919, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497253} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497546} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 15562, "completion_tokens": 328, "total_tokens": 15890, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497569} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497569} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497571} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497574} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497662} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497662} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497662} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497666} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497674} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497675} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497675} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497678} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497704} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497705} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497705} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497709} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497783} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497783} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497783} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497787} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497814} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497815} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497815} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497819} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497839} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497840} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497840} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497842} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497852} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497852} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497852} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746497856} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501582} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501588} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501589} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501590} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501591} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501592} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501593} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501593} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501593} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501593} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501661} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501662} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501662} -{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501662} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501662} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501663} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501663} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501663} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501663} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501784} -{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501790} -{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746501790} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746548297} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554583} -{"event": "model warning", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554586} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554618} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554618} -{"event": "cli session", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554619} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554619} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554622} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554627} -{"event": "model warning", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554630} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554631} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554631} -{"event": "cli session", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554631} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554631} -{"event": "message_send", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED", "edit_format": "whole", "prompt_tokens": 1831, "completion_tokens": 158, "total_tokens": 1989, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554638} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554640} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746554640} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561895} -{"event": "model warning", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561898} -{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561920} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561922} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561923} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561923} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561923} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-05-06", "weak_model": "gemini/gemini-2.5-pro-preview-05-06", "editor_model": "gemini/gemini-2.5-pro-preview-05-06", "edit_format": "whole", "prompt_tokens": 8566, "completion_tokens": 10, "total_tokens": 8576, "cost": 0.010807500000000001, "total_cost": 0.010807500000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561929} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746561929} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562529} -{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562531} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562536} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562536} -{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562536} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562536} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 1862, "completion_tokens": 339, "total_tokens": 2201, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562557} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562559} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746562559} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746630985} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746630989} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746630989} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631023} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631023} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631023} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631023} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631085} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631087} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631087} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631087} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631087} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631102} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631734} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631734} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631734} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631734} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631736} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced", "prompt_tokens": 10039, "completion_tokens": 10, "total_tokens": 10049, "cost": 0.01264875, "total_cost": 0.01264875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631741} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631746} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631763} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631765} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631766} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631766} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631766} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631767} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced", "prompt_tokens": 10023, "completion_tokens": 10, "total_tokens": 10033, "cost": 9990.01252875, "total_cost": 9990.01252875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631772} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631795} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631804} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631805} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631805} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631805} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631811} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631838} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631839} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631839} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631839} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746631844} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633659} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633659} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633659} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633659} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633672} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633728} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 10520, "completion_tokens": 138, "total_tokens": 10658, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633788} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633798} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633806} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633806} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633806} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633806} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633808} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 4930, "completion_tokens": 787, "total_tokens": 5717, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746633938} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746634244} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746635197} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746635197} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746635197} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746635198} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746635222} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746635299} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 4998, "completion_tokens": 991, "total_tokens": 5989, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746635317} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636463} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636745} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636748} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636748} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636748} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced", "prompt_tokens": 10025, "completion_tokens": 20, "total_tokens": 10045, "cost": 0.012731250000000001, "total_cost": 0.012731250000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636782} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636782} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636796} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636797} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636797} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636797} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9605, "completion_tokens": 13, "total_tokens": 9618, "cost": 0.012136250000000001, "total_cost": 0.012136250000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636802} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636802} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636814} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636814} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636814} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636814} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 7634, "completion_tokens": 9, "total_tokens": 7643, "cost": 0.0096325, "total_cost": 0.0096325}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636818} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636819} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636863} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636864} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636864} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636864} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9661, "completion_tokens": 13, "total_tokens": 9674, "cost": 0.01220625, "total_cost": 0.01220625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636869} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636869} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636903} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636903} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636903} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636903} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 7623, "completion_tokens": 97, "total_tokens": 7720, "cost": 0.010498750000000001, "total_cost": 0.010498750000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636910} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636926} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636926} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636926} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636926} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9548, "completion_tokens": 177, "total_tokens": 9725, "cost": 0.013705000000000002, "total_cost": 0.013705000000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746636935} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637010} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637010} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637010} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637010} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9693, "completion_tokens": 593, "total_tokens": 10286, "cost": 0.01804625, "total_cost": 0.01804625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637039} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637039} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637062} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637062} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637062} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637063} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9877, "completion_tokens": 469, "total_tokens": 10346, "cost": 0.017036250000000003, "total_cost": 0.017036250000000003}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637102} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637102} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637741} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637744} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637744} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637745} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 10769, "completion_tokens": 415, "total_tokens": 11184, "cost": 0.017611250000000002, "total_cost": 0.017611250000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637797} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637797} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637816} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637816} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637816} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637816} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9891, "completion_tokens": 368, "total_tokens": 10259, "cost": 0.016043750000000002, "total_cost": 0.016043750000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637917} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746637917} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641506} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641507} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641507} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641507} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9544, "completion_tokens": 13, "total_tokens": 9557, "cost": 0.012060000000000001, "total_cost": 0.012060000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641512} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641513} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641570} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641571} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641571} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641571} -{"event": "message_send_exception", "properties": {"exception": "Model is None and does not exist in passed completion_response. Passed completion_response=, model=None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641576} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641576} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641608} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641608} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641608} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641608} -{"event": "message_send_exception", "properties": {"exception": "Model is None and does not exist in passed completion_response. Passed completion_response=, model=None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641613} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641613} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641630} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641630} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641630} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641630} -{"event": "message_send_exception", "properties": {"exception": "Model is None and does not exist in passed completion_response. Passed completion_response=, model=None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641635} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641635} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641711} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641711} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641711} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641712} -{"event": "message_send_exception", "properties": {"exception": "Model is None and does not exist in passed completion_response. Passed completion_response=, model=None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641717} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641717} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641747} -{"event": "repo", "properties": {"num_files": 616}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641748} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641748} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641748} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 9055, "completion_tokens": 57, "total_tokens": 9112, "cost": 0.01188875, "total_cost": 0.01188875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641753} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641753} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641859} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641860} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641860} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641860} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 10879, "completion_tokens": 55, "total_tokens": 10934, "cost": 0.014148750000000002, "total_cost": 0.014148750000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641865} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746641865} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642137} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642140} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642140} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642141} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642170} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642170} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642170} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642171} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642199} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642200} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642201} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642201} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642201} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 14013, "completion_tokens": 340, "total_tokens": 14353, "cost": 0.02091625, "total_cost": 0.02091625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642240} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642240} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642274} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642274} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642274} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642274} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 12853, "completion_tokens": 3080, "total_tokens": 15933, "cost": 0.04686625, "total_cost": 0.04686625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642307} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642307} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642372} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642372} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642372} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642372} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 14020, "completion_tokens": 2279, "total_tokens": 16299, "cost": 0.040315000000000004, "total_cost": 0.040315000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642397} {"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642397} {"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642510} {"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642511} @@ -998,3 +511,490 @@ {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716073} {"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 26488, "completion_tokens": 403, "total_tokens": 26891, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716145} {"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716145} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721958} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721960} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721960} +{"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": 1746721960} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721985} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722024} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722053} +{"event": "message_send", "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", "prompt_tokens": 13638, "completion_tokens": 385, "total_tokens": 14023, "cost": 0.0208975, "total_cost": 0.0208975}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722068} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722095} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722098} +{"event": "message_send", "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", "prompt_tokens": 17782, "completion_tokens": 1505, "total_tokens": 19287, "cost": 0.037277500000000005, "total_cost": 0.058175000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722171} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722185} +{"event": "message_send", "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", "prompt_tokens": 20819, "completion_tokens": 108, "total_tokens": 20927, "cost": 0.027103750000000003, "total_cost": 0.08527875000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722191} +{"event": "command_diff", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722202} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722230} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722237} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722245} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722246} +{"event": "message_send", "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", "prompt_tokens": 25435, "completion_tokens": 399, "total_tokens": 25834, "cost": 0.03578375, "total_cost": 0.12106250000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722299} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722331} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722335} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722340} +{"event": "message_send", "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", "prompt_tokens": 29275, "completion_tokens": 659, "total_tokens": 29934, "cost": 0.04318375, "total_cost": 0.16424625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722360} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722369} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722370} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722382} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722382} +{"event": "message_send", "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": "ask", "prompt_tokens": 21916, "completion_tokens": 479, "total_tokens": 22395, "cost": 0.032185000000000005, "total_cost": 0.19643125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722501} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722527} +{"event": "message_send", "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", "prompt_tokens": 22728, "completion_tokens": 377, "total_tokens": 23105, "cost": 0.03218, "total_cost": 0.22861125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722535} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722547} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722560} +{"event": "message_send", "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", "prompt_tokens": 26430, "completion_tokens": 885, "total_tokens": 27315, "cost": 0.04188750000000001, "total_cost": 0.27049875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722612} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722623} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722875} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722878} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722878} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722878} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 609, "completion_tokens": 12, "total_tokens": 621, "cost": 9.855e-05, "total_cost": 9.855e-05}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722880} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722880} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722899} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722901} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722901} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722901} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 605, "completion_tokens": 236, "total_tokens": 841, "cost": 0.00023234999999999998, "total_cost": 0.00023234999999999998}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722904} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722904} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722934} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722937} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722937} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722937} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5661, "completion_tokens": 320, "total_tokens": 5981, "cost": 0.00104115, "total_cost": 0.00104115}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722943} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722949} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722951} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722951} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722951} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722966} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723226} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723229} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723229} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723229} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6242, "completion_tokens": 1356, "total_tokens": 7598, "cost": 0.0017499, "total_cost": 0.0017499}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723250} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723250} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723310} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723312} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723312} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723313} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6242, "completion_tokens": 1123, "total_tokens": 7365, "cost": 0.0016101, "total_cost": 0.0016101}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723368} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723368} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723389} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723392} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723392} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723392} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6242, "completion_tokens": 1255, "total_tokens": 7497, "cost": 0.0016893, "total_cost": 0.0016893}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723470} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723529} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723532} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723532} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723532} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723540} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723571} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723574} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723574} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723574} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723578} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723597} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723600} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723600} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723600} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723606} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723632} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723634} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723634} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723634} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 642, "total_tokens": 6879, "cost": 0.0013207499999999999, "total_cost": 0.0013207499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723646} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723646} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723703} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723705} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723705} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723705} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 1418, "total_tokens": 7655, "cost": 0.00178635, "total_cost": 0.00178635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723742} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723947} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723950} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723950} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723950} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 880, "total_tokens": 7117, "cost": 0.0014635499999999999, "total_cost": 0.0014635499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723974} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723974} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724025} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724027} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724027} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724027} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 1282, "total_tokens": 7519, "cost": 0.0017047499999999999, "total_cost": 0.0017047499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724047} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724047} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724236} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724238} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724238} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724238} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 629, "total_tokens": 6866, "cost": 0.0013129499999999998, "total_cost": 0.0013129499999999998}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724249} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724249} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724301} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724303} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724303} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724303} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 718, "total_tokens": 6955, "cost": 0.00136635, "total_cost": 0.00136635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724317} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724317} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724534} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724536} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724536} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724536} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724588} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724592} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724594} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724594} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724594} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 765, "total_tokens": 7002, "cost": 0.00139455, "total_cost": 0.00139455}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724615} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724615} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724781} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724784} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724784} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724784} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 1394, "total_tokens": 7631, "cost": 0.00177195, "total_cost": 0.00177195}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724838} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724838} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724896} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724899} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724899} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724899} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 922, "total_tokens": 7159, "cost": 0.00148875, "total_cost": 0.00148875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724936} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724936} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725372} +{"event": "model warning", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725375} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725377} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725377} +{"event": "cli session", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725378} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725379} +{"event": "message_send", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "diff", "prompt_tokens": 3492, "completion_tokens": 271, "total_tokens": 3763, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725391} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725491} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725491} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725501} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725507} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725509} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725509} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725509} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725533} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725534} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725536} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725536} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725536} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725541} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725551} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725553} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725553} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725553} +{"event": "message_send", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "whole", "prompt_tokens": 1935, "completion_tokens": 51, "total_tokens": 1986, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725558} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725558} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725561} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725563} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725563} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725563} +{"event": "message_send", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "whole", "prompt_tokens": 1943, "completion_tokens": 15, "total_tokens": 1958, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725573} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725573} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725636} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725642} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725644} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725644} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725644} +{"event": "message_send", "properties": {"main_model": "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput", "weak_model": "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput", "editor_model": "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput", "edit_format": "whole", "prompt_tokens": 1951, "completion_tokens": 43, "total_tokens": 1994, "cost": 0.000416, "total_cost": 0.000416}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725648} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725648} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725775} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725777} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725777} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725777} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5707, "completion_tokens": 195, "total_tokens": 5902, "cost": 0.0009730499999999999, "total_cost": 0.0009730499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725786} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725786} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725789} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725791} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725791} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725791} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5707, "completion_tokens": 581, "total_tokens": 6288, "cost": 0.0012046499999999998, "total_cost": 0.0012046499999999998}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725820} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725820} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725846} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725848} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725848} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725848} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725860} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725862} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725864} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725864} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725864} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5707, "completion_tokens": 1253, "total_tokens": 6960, "cost": 0.0016078499999999999, "total_cost": 0.0016078499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725927} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725927} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} +{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726382} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced", "prompt_tokens": 6865, "completion_tokens": 82, "total_tokens": 6947, "cost": 0.00940125, "total_cost": 0.00940125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726385} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726426} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726426} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726482} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726490} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} +{"event": "message_send_exception", "properties": {"exception": "Only one live display may be active at once"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726502} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726502} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced", "prompt_tokens": 6866, "completion_tokens": 199, "total_tokens": 7065, "cost": 0.0105725, "total_cost": 0.0105725}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726540} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726540} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726547} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726548} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726548} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726548} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726553} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726913} +{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726914} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726914} +{"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": 1746726914} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726926} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726931} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726951} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726959} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726990} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726990} +{"event": "message_send", "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": "ask", "prompt_tokens": 14008, "completion_tokens": 3802, "total_tokens": 17810, "cost": 0.05553000000000001, "total_cost": 0.05553000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727053} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727062} +{"event": "message_send", "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", "prompt_tokens": 19187, "completion_tokens": 3743, "total_tokens": 22930, "cost": 0.06141375, "total_cost": 0.11694375000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727102} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727129} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727152} +{"event": "message_send", "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", "prompt_tokens": 38503, "completion_tokens": 672, "total_tokens": 39175, "cost": 0.05484875, "total_cost": 0.17179250000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727163} +{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727208} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727226} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727229} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727256} +{"event": "message_send", "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", "prompt_tokens": 31466, "completion_tokens": 273, "total_tokens": 31739, "cost": 0.04206250000000001, "total_cost": 0.21385500000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727262} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727440} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727511} +{"event": "message_send", "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", "prompt_tokens": 31733, "completion_tokens": 312, "total_tokens": 32045, "cost": 0.04278625, "total_cost": 0.25664125000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727535} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746728999} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746728999} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729004} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729006} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729006} +{"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": 1746729006} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729012} +{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729014} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729054} +{"event": "message_send", "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", "prompt_tokens": 13502, "completion_tokens": 156, "total_tokens": 13658, "cost": 0.0184375, "total_cost": 0.0184375}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729065} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729303} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} +{"event": "message_send", "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", "prompt_tokens": 28623, "completion_tokens": 246, "total_tokens": 28869, "cost": 0.03823875, "total_cost": 0.03823875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730236} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730236} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730237} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730241} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730406} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730407} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730407} +{"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": 1746730407} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730411} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730413} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730417} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730429} +{"event": "message_send", "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", "prompt_tokens": 18827, "completion_tokens": 786, "total_tokens": 19613, "cost": 0.031393750000000005, "total_cost": 0.031393750000000005}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730443} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730453} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730453} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730459} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730459} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730459} +{"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": 1746730459} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730461} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730545} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} +{"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": 1746730546} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730555} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730665} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730665} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730791} +{"event": "message_send", "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", "prompt_tokens": 31357, "completion_tokens": 990, "total_tokens": 32347, "cost": 0.04909625, "total_cost": 0.04909625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730823} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} +{"event": "message_send", "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", "prompt_tokens": 5588, "completion_tokens": 184, "total_tokens": 5772, "cost": 0.008825000000000001, "total_cost": 0.008825000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730865} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730865} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730899} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730913} +{"event": "message_send", "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", "prompt_tokens": 32702, "completion_tokens": 583, "total_tokens": 33285, "cost": 0.046707500000000006, "total_cost": 0.09580375000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730995} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731013} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731017} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731050} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731067} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731081} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731081} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731081} +{"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": 1746731081} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731084} +{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731109} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731136} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731136} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731136} +{"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": 1746731136} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731138} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731144} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731153} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731154} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731154} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731154} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731156} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731176} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731177} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731177} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731177} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731179} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731206} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731212} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731275} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731277} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731289} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731289} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731289} +{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731294} +{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731300} +{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731303} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731311} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731314} +{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731325} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731360} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731360} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731487} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731495} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731495} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731495} +{"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": 1746731495} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731498} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731501} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731502} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731502} +{"event": "message_send", "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": "ask", "prompt_tokens": 8223, "completion_tokens": 2842, "total_tokens": 11065, "cost": 0.038698750000000004, "total_cost": 0.038698750000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731628} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731706} +{"event": "message_send", "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", "prompt_tokens": 10957, "completion_tokens": 1920, "total_tokens": 12877, "cost": 0.03289625, "total_cost": 0.071595}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731749} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731814} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731821} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731839} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731850} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731850} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731850} +{"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": 1746731850} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731875} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731875} +{"event": "message_send", "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": "ask", "prompt_tokens": 8249, "completion_tokens": 2823, "total_tokens": 11072, "cost": 0.03854125, "total_cost": 0.03854125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731951} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731955} +{"event": "message_send", "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", "prompt_tokens": 11032, "completion_tokens": 1587, "total_tokens": 12619, "cost": 0.029660000000000006, "total_cost": 0.06820125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732083} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732115} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732120} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732122} +{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732190} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732249} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732249} +{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732293} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732352} +{"event": "message_send", "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", "prompt_tokens": 13572, "completion_tokens": 1866, "total_tokens": 15438, "cost": 0.035625000000000004, "total_cost": 0.10382625000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732387} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732489} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732491} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732493} +{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732498} +{"event": "message_send", "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", "prompt_tokens": 5588, "completion_tokens": 340, "total_tokens": 5928, "cost": 0.010385000000000002, "total_cost": 0.010385000000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732503} +{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732510} +{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732512} +{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732514} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732518} +{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-preview-05-06", "edit_format": "diff", "prompt_tokens": 9935, "completion_tokens": 5219, "total_tokens": 15154, "cost": 0.30811000000000005, "total_cost": 0.41193625000000006}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732604} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} +{"event": "message_send", "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", "prompt_tokens": 5588, "completion_tokens": 227, "total_tokens": 5815, "cost": 0.009255000000000001, "total_cost": 0.009255000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732807} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732807} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732840} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732850} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732852} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732852} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732852} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732857} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732859} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732861} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732861} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732861} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732864} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732906} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732907} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732907} +{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732910} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736688} +{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736691} +{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736755} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736759} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736762} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736762} +{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736762} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736765} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736769} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736771} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736771} +{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736771} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736779} +{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "diff", "prompt_tokens": 7487, "completion_tokens": 400, "total_tokens": 7887, "cost": 0.00136305, "total_cost": 0.00136305}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736790} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736795} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736798} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736864} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737186} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} +{"event": "message_send", "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", "prompt_tokens": 30117, "completion_tokens": 361, "total_tokens": 30478, "cost": 0.04125625000000001, "total_cost": 0.04125625000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737284} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737284} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 436f0f8bc..e2d8ac531 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,12 +264,13 @@ tr:hover { background-color: #f5f5f5; } - - - - - - + + + + + + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25668,48355.7%
gemini/gemini-2.5-pro-preview-03-25442,01936.9%
o352,6664.4%
gemini/gemini-2.5-pro-preview-05-0618,6541.6%
openrouter/REDACTED15,5871.3%
gemini/REDACTED1,9890.2%
gemini/gemini-2.5-pro-preview-05-06575,43340.7%
gemini/gemini-2.5-pro-exp-03-25413,81529.3%
gemini/gemini-2.5-pro-preview-03-25263,26118.6%
openrouter/REDACTED135,1099.6%
o315,1541.1%
together_ai/REDACTED7,7070.5%
together_ai/Qwen/Qwen3-235B-A22B-fp8-tput1,9940.1%
{: .note :} From 81721259315ec2a9355e8378dc1f16bb86c69f96 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 13:52:37 -0700 Subject: [PATCH 035/195] copy --- aider/website/_posts/2025-05-08-qwen3.md | 1 + 1 file changed, 1 insertion(+) diff --git a/aider/website/_posts/2025-05-08-qwen3.md b/aider/website/_posts/2025-05-08-qwen3.md index 21716c725..474ee5852 100644 --- a/aider/website/_posts/2025-05-08-qwen3.md +++ b/aider/website/_posts/2025-05-08-qwen3.md @@ -25,6 +25,7 @@ used after the results table. {: .note } This article is being updated as new results become available. +Also, some results were submitted by aider users and have not been verified.

Qwen3 results on the aider polyglot benchmark

From 4709a539c609a71082ee677ab43da1331f3a4f9b Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:01:28 -0700 Subject: [PATCH 036/195] fix: Preserve original read-only files when cloning Commands --- aider/commands.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aider/commands.py b/aider/commands.py index 29f20a976..7a7a738c3 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -47,6 +47,7 @@ class Commands: parser=self.parser, verbose=self.verbose, editor=self.editor, + original_read_only_fnames=self.original_read_only_fnames, ) def __init__( From 7a3805d39f15d6d453e6f508aaf868f9539f8d22 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:02:46 -0700 Subject: [PATCH 037/195] test: add tests for /reset and /drop with cloned coder --- tests/basic/test_commands.py | 84 ++++++++++++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/tests/basic/test_commands.py b/tests/basic/test_commands.py index 7ded4ca3a..2d15e02f5 100644 --- a/tests/basic/test_commands.py +++ b/tests/basic/test_commands.py @@ -2105,3 +2105,87 @@ class TestCommands(TestCase): mock_tool_error.assert_any_call( "Command '/model gpt-4' is only supported in interactive mode, skipping." ) + + def test_reset_after_coder_clone_preserves_original_read_only_files(self): + with GitTemporaryDirectory() as repo_dir_path: + repo_dir = str(repo_dir_path) + io = InputOutput(pretty=False, fancy_input=False, yes=True) + + orig_ro_path = Path(repo_dir) / "orig_ro.txt" + orig_ro_path.write_text("original read only") + + editable_path = Path(repo_dir) / "editable.txt" + editable_path.write_text("editable content") + + other_ro_path = Path(repo_dir) / "other_ro.txt" + other_ro_path.write_text("other read only") + + original_read_only_fnames_set = {str(orig_ro_path)} + + # Create the initial Coder + orig_coder = Coder.create(main_model=self.GPT35, io=io, fnames=[], repo=None) + orig_coder.root = repo_dir # Set root for path operations + + # Replace its commands object with one that has the original_read_only_fnames + orig_coder.commands = Commands( + io, orig_coder, original_read_only_fnames=list(original_read_only_fnames_set) + ) + orig_coder.commands.coder = orig_coder + + # Populate coder's file sets + orig_coder.abs_read_only_fnames.add(str(orig_ro_path)) + orig_coder.abs_fnames.add(str(editable_path)) + orig_coder.abs_read_only_fnames.add(str(other_ro_path)) + + # Simulate SwitchCoder by creating a new coder from the original one + new_coder = Coder.create(from_coder=orig_coder) + new_commands = new_coder.commands + + # Perform /reset + new_commands.cmd_reset("") + + # Assertions for /reset + self.assertEqual(len(new_coder.abs_fnames), 0) + self.assertEqual(len(new_coder.abs_read_only_fnames), 1) + self.assertIn(str(orig_ro_path), new_coder.abs_read_only_fnames) + self.assertEqual(len(new_coder.done_messages), 0) + self.assertEqual(len(new_coder.cur_messages), 0) + + def test_drop_bare_after_coder_clone_preserves_original_read_only_files(self): + with GitTemporaryDirectory() as repo_dir_path: + repo_dir = str(repo_dir_path) + io = InputOutput(pretty=False, fancy_input=False, yes=True) + + orig_ro_path = Path(repo_dir) / "orig_ro.txt" + orig_ro_path.write_text("original read only") + + editable_path = Path(repo_dir) / "editable.txt" + editable_path.write_text("editable content") + + other_ro_path = Path(repo_dir) / "other_ro.txt" + other_ro_path.write_text("other read only") + + original_read_only_fnames_set = {str(orig_ro_path)} + + orig_coder = Coder.create(main_model=self.GPT35, io=io, fnames=[], repo=None) + orig_coder.root = repo_dir + orig_coder.commands = Commands( + io, orig_coder, original_read_only_fnames=list(original_read_only_fnames_set) + ) + orig_coder.commands.coder = orig_coder + + orig_coder.abs_read_only_fnames.add(str(orig_ro_path)) + orig_coder.abs_fnames.add(str(editable_path)) + orig_coder.abs_read_only_fnames.add(str(other_ro_path)) + orig_coder.done_messages = [{"role": "user", "content": "d1"}] + orig_coder.cur_messages = [{"role": "user", "content": "c1"}] + + new_coder = Coder.create(from_coder=orig_coder) + new_commands = new_coder.commands + new_commands.cmd_drop("") + + self.assertEqual(len(new_coder.abs_fnames), 0) + self.assertEqual(len(new_coder.abs_read_only_fnames), 1) + self.assertIn(str(orig_ro_path), new_coder.abs_read_only_fnames) + self.assertEqual(new_coder.done_messages, [{"role": "user", "content": "d1"}]) + self.assertEqual(new_coder.cur_messages, [{"role": "user", "content": "c1"}]) From 8f0fa6684dd60e412362e99529dd652053b4ba9c Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:08:06 -0700 Subject: [PATCH 038/195] feat: implement Knight Rider style spinner animation --- aider/utils.py | 62 ++++++++++++++++++++++++++++++++++---------------- 1 file changed, 42 insertions(+), 20 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 8ab8184a3..3ec6701e9 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -1,4 +1,3 @@ -import itertools import os import platform import oslex @@ -251,29 +250,34 @@ def run_install(cmd): class Spinner: - unicode_spinner = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"] - ascii_spinner = ["|", "/", "-", "\\"] - def __init__(self, text): self.text = text self.start_time = time.time() self.last_update = 0 self.visible = False self.is_tty = sys.stdout.isatty() - self.tested = False - def test_charset(self): - if self.tested: - return - self.tested = True - # Try unicode first, fall back to ascii if needed - try: - # Test if we can print unicode characters - print(self.unicode_spinner[0], end="", flush=True) - print("\r", end="", flush=True) - self.spinner_chars = itertools.cycle(self.unicode_spinner) - except UnicodeEncodeError: - self.spinner_chars = itertools.cycle(self.ascii_spinner) + self.scanner_width = 7 # Width of the scanning area (e.g., 7 for "[---■--]") + self.scanner_pos = 0 + self.scanner_dir = 1 if self.scanner_width > 1 else 0 # Direction of scanner movement + + # Attempt to use Unicode characters for the scanner, fallback to ASCII + self.scanner_char = "#" # ASCII fallback + self.trail_char = "-" # ASCII fallback + if self.is_tty: + try: + # Test print Unicode chars and erase them to check encoding support + sys.stdout.write("■─") + sys.stdout.flush() + sys.stdout.write("\b\b \b\b") # Backspace, write spaces, backspace + sys.stdout.flush() + self.scanner_char = "■" # Unicode + self.trail_char = "─" # Unicode + except UnicodeEncodeError: + pass # Stick to ASCII fallbacks + except Exception: # Catch other potential IO errors on strange terminals + pass + self.animation_len = self.scanner_width + 2 # For brackets like "[]" def step(self): if not self.is_tty: @@ -291,12 +295,30 @@ class Spinner: if not self.visible: return - self.test_charset() - print(f"\r{self.text} {next(self.spinner_chars)}\r{self.text} ", end="", flush=True) + frame = [self.trail_char] * self.scanner_width + # Ensure scanner_pos is within bounds for frame assignment + current_pos_in_frame = max(0, min(self.scanner_pos, self.scanner_width - 1)) + if self.scanner_width > 0: # Only place char if width is positive + frame[current_pos_in_frame] = self.scanner_char + + animation_segment = f"[{''.join(frame)}]" + print(f"\r{self.text} {animation_segment}", end="", flush=True) + + # Update scanner position for the next frame + if self.scanner_width > 1: + self.scanner_pos += self.scanner_dir + if self.scanner_pos >= self.scanner_width - 1: # Reached or passed the end + self.scanner_pos = self.scanner_width - 1 # Pin to end + self.scanner_dir = -1 # Reverse direction + elif self.scanner_pos <= 0: # Reached or passed the beginning + self.scanner_pos = 0 # Pin to start + self.scanner_dir = 1 # Reverse direction def end(self): if self.visible and self.is_tty: - print("\r" + " " * (len(self.text) + 3)) + clear_len = len(self.text) + 1 + self.animation_len # text + space + animation segment + print("\r" + " " * clear_len + "\r", end="", flush=True) # Clear line and reset cursor + self.visible = False def find_common_root(abs_fnames): From 20faadcbd976a04102265e6590df4b5f031ca398 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:08:11 -0700 Subject: [PATCH 039/195] style: Apply linter fixes --- aider/utils.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 3ec6701e9..214d6c310 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -1,12 +1,13 @@ import os import platform -import oslex import subprocess import sys import tempfile import time from pathlib import Path +import oslex + from aider.dump import dump # noqa: F401 IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp", ".pdf"} @@ -259,7 +260,7 @@ class Spinner: self.scanner_width = 7 # Width of the scanning area (e.g., 7 for "[---■--]") self.scanner_pos = 0 - self.scanner_dir = 1 if self.scanner_width > 1 else 0 # Direction of scanner movement + self.scanner_dir = 1 if self.scanner_width > 1 else 0 # Direction of scanner movement # Attempt to use Unicode characters for the scanner, fallback to ASCII self.scanner_char = "#" # ASCII fallback @@ -269,13 +270,13 @@ class Spinner: # Test print Unicode chars and erase them to check encoding support sys.stdout.write("■─") sys.stdout.flush() - sys.stdout.write("\b\b \b\b") # Backspace, write spaces, backspace + sys.stdout.write("\b\b \b\b") # Backspace, write spaces, backspace sys.stdout.flush() self.scanner_char = "■" # Unicode self.trail_char = "─" # Unicode except UnicodeEncodeError: pass # Stick to ASCII fallbacks - except Exception: # Catch other potential IO errors on strange terminals + except Exception: # Catch other potential IO errors on strange terminals pass self.animation_len = self.scanner_width + 2 # For brackets like "[]" @@ -298,7 +299,7 @@ class Spinner: frame = [self.trail_char] * self.scanner_width # Ensure scanner_pos is within bounds for frame assignment current_pos_in_frame = max(0, min(self.scanner_pos, self.scanner_width - 1)) - if self.scanner_width > 0: # Only place char if width is positive + if self.scanner_width > 0: # Only place char if width is positive frame[current_pos_in_frame] = self.scanner_char animation_segment = f"[{''.join(frame)}]" @@ -308,7 +309,7 @@ class Spinner: if self.scanner_width > 1: self.scanner_pos += self.scanner_dir if self.scanner_pos >= self.scanner_width - 1: # Reached or passed the end - self.scanner_pos = self.scanner_width - 1 # Pin to end + self.scanner_pos = self.scanner_width - 1 # Pin to end self.scanner_dir = -1 # Reverse direction elif self.scanner_pos <= 0: # Reached or passed the beginning self.scanner_pos = 0 # Pin to start @@ -316,8 +317,8 @@ class Spinner: def end(self): if self.visible and self.is_tty: - clear_len = len(self.text) + 1 + self.animation_len # text + space + animation segment - print("\r" + " " * clear_len + "\r", end="", flush=True) # Clear line and reset cursor + clear_len = len(self.text) + 1 + self.animation_len # text + space + animation segment + print("\r" + " " * clear_len + "\r", end="", flush=True) # Clear line and reset cursor self.visible = False From 62dc55dd77dc204b34da68139555aca713d6d7c5 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:09:34 -0700 Subject: [PATCH 040/195] feat: Position cursor on scanner char in spinner animation --- aider/utils.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 214d6c310..68b27931f 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -296,14 +296,35 @@ class Spinner: if not self.visible: return - frame = [self.trail_char] * self.scanner_width + frame_chars = [self.trail_char] * self.scanner_width # Ensure scanner_pos is within bounds for frame assignment current_pos_in_frame = max(0, min(self.scanner_pos, self.scanner_width - 1)) - if self.scanner_width > 0: # Only place char if width is positive - frame[current_pos_in_frame] = self.scanner_char - animation_segment = f"[{''.join(frame)}]" - print(f"\r{self.text} {animation_segment}", end="", flush=True) + if self.scanner_width > 0: # Only place char if width is positive + frame_chars[current_pos_in_frame] = self.scanner_char + + animation_content = "".join(frame_chars) # Content inside brackets, e.g., "---■--" + animation_segment = f"[{animation_content}]" # Full animation part, e.g., "[---■--]" + + # Print the entire line to display it + full_line_output = f"\r{self.text} {animation_segment}" + sys.stdout.write(full_line_output) + + # Now, calculate backspaces to position cursor on the scanner_char + # Only if scanner_char was actually placed (i.e., scanner_width > 0) + if self.scanner_width > 0: + # Number of characters in animation_content *after* the scanner_char + # (self.scanner_width - 1) is the last index of animation_content. + # So, (self.scanner_width - 1) - current_pos_in_frame gives count of chars after. + chars_in_content_after_scanner = (self.scanner_width - 1) - current_pos_in_frame + + # We also need to backspace over the closing bracket ']' + num_backspaces = chars_in_content_after_scanner + 1 + + num_backspaces = max(0, num_backspaces) # Ensure not negative + sys.stdout.write('\b' * num_backspaces) + + sys.stdout.flush() # Flush after all writes for this frame # Update scanner position for the next frame if self.scanner_width > 1: @@ -314,7 +335,6 @@ class Spinner: elif self.scanner_pos <= 0: # Reached or passed the beginning self.scanner_pos = 0 # Pin to start self.scanner_dir = 1 # Reverse direction - def end(self): if self.visible and self.is_tty: clear_len = len(self.text) + 1 + self.animation_len # text + space + animation segment From 15317a9f4bc1b44cc658a9b769ec28c0c5ef6dff Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:09:38 -0700 Subject: [PATCH 041/195] style: Run linter and apply fixes --- aider/utils.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 68b27931f..f72528019 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -322,7 +322,7 @@ class Spinner: num_backspaces = chars_in_content_after_scanner + 1 num_backspaces = max(0, num_backspaces) # Ensure not negative - sys.stdout.write('\b' * num_backspaces) + sys.stdout.write("\b" * num_backspaces) sys.stdout.flush() # Flush after all writes for this frame @@ -335,6 +335,7 @@ class Spinner: elif self.scanner_pos <= 0: # Reached or passed the beginning self.scanner_pos = 0 # Pin to start self.scanner_dir = 1 # Reverse direction + def end(self): if self.visible and self.is_tty: clear_len = len(self.text) + 1 + self.animation_len # text + space + animation segment From e1ab9cc0ab813766cf130a4333c960f238db8cb5 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 14:19:26 -0700 Subject: [PATCH 042/195] fix: Correct spinner erasure and update animation --- aider/mdstream.py | 2 +- aider/utils.py | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/aider/mdstream.py b/aider/mdstream.py index ba80849ad..8820d7261 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -128,7 +128,7 @@ class MarkdownStream: def _spin(self): """Background thread that keeps the spinner moving until stopped.""" while not self._spinner_stop_event.is_set(): - time.sleep(0.1) + time.sleep(0.15) self.spinner.step() self.spinner.end() diff --git a/aider/utils.py b/aider/utils.py index f72528019..ccd5fc334 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -272,7 +272,7 @@ class Spinner: sys.stdout.flush() sys.stdout.write("\b\b \b\b") # Backspace, write spaces, backspace sys.stdout.flush() - self.scanner_char = "■" # Unicode + self.scanner_char = "≡" # Unicode self.trail_char = "─" # Unicode except UnicodeEncodeError: pass # Stick to ASCII fallbacks @@ -321,7 +321,7 @@ class Spinner: # We also need to backspace over the closing bracket ']' num_backspaces = chars_in_content_after_scanner + 1 - num_backspaces = max(0, num_backspaces) # Ensure not negative + num_backspaces = max(0, num_backspaces) + 1 # Ensure not negative sys.stdout.write("\b" * num_backspaces) sys.stdout.flush() # Flush after all writes for this frame @@ -433,8 +433,8 @@ def printable_shell_command(cmd_list): def main(): spinner = Spinner("Running spinner...") - for _ in range(40): # 40 steps * 0.25 seconds = 10 seconds - time.sleep(0.25) + for _ in range(300): + time.sleep(0.15) spinner.step() spinner.end() From c3d4fdb4c1d1d31c45f68d229ec2686fb0498a43 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:25:14 -0700 Subject: [PATCH 043/195] fix: Preserve original read-only files across symlinks --- aider/commands.py | 33 ++++++++++++++++++++++++++------- 1 file changed, 26 insertions(+), 7 deletions(-) diff --git a/aider/commands.py b/aider/commands.py index 7a7a738c3..3dd370e51 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -81,8 +81,20 @@ class Commands: self.help = None self.editor = editor - # Store the original read-only filenames provided via args.read - self.original_read_only_fnames = set(original_read_only_fnames or []) + # Store the original read-only filenames provided via args.read. + # Keep both the raw path as given and the canonical realpath so we + # can match them later even when symlinks (eg /var ↔ /private/var) + # are involved. + self.original_read_only_fnames = set() + for fname in original_read_only_fnames or []: + # As provided + self.original_read_only_fnames.add(str(fname)) + # Canonical path (best-effort) + try: + self.original_read_only_fnames.add(os.path.realpath(fname)) + except Exception: + # Ignore paths that cannot be resolved + pass def cmd_model(self, args): "Switch the Main Model to a new LLM" @@ -411,16 +423,23 @@ class Commands: def _drop_all_files(self): self.coder.abs_fnames = set() + # Helper to compare two paths while ignoring symlinks/resolution. + def _paths_match(p1, p2): + try: + return os.path.samefile(p1, p2) + except (FileNotFoundError, OSError): + return os.path.normpath(p1) == os.path.normpath(p2) + # When dropping all files, keep those that were originally provided via args.read if self.original_read_only_fnames: - # Keep only the original read-only files to_keep = set() for abs_fname in self.coder.abs_read_only_fnames: rel_fname = self.coder.get_rel_fname(abs_fname) - if ( - abs_fname in self.original_read_only_fnames - or rel_fname in self.original_read_only_fnames - ): + keep = any( + _paths_match(abs_fname, orig) or rel_fname == orig + for orig in self.original_read_only_fnames + ) + if keep: to_keep.add(abs_fname) self.coder.abs_read_only_fnames = to_keep else: From 2ebb2103b8b8a5fea03948ac09a5a27af082e05a Mon Sep 17 00:00:00 2001 From: MDW Date: Wed, 16 Apr 2025 16:52:12 +0200 Subject: [PATCH 044/195] ci: add pre-commit.yml for GitHub Actions This commit adds a new GitHub Actions workflow configuration file (`pre-commit.yml`) to automate the execution of pre-commit hooks on pull requests and pushes. The workflow includes steps to install dependencies, cache pre-commit hooks, run the hooks, convert logs to Checkstyle format, save the cache, and upload logs as artifacts. This setup ensures that code quality checks are enforced consistently across the repository. --- .github/workflows/pre-commit.yml | 48 ++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 .github/workflows/pre-commit.yml diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml new file mode 100644 index 000000000..5de58d77d --- /dev/null +++ b/.github/workflows/pre-commit.yml @@ -0,0 +1,48 @@ +--- +name: pre-commit +on: + pull_request: + push: + workflow_dispatch: +jobs: + pre-commit: + runs-on: ubuntu-latest + env: + RAW_LOG: pre-commit.log + CS_XML: pre-commit.xml + steps: + - run: sudo apt-get update && sudo apt-get install cppcheck uncrustify + if: false + - uses: actions/checkout@v4 + - run: python -m pip install pre-commit + - uses: actions/cache/restore@v4 + with: + path: ~/.cache/pre-commit/ + key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }} + - name: Run pre-commit hooks + env: + SKIP: no-commit-to-branch + run: | + set -o pipefail + pre-commit gc + pre-commit run --show-diff-on-failure --color=always --all-files | tee ${RAW_LOG} + - name: Convert Raw Log to Checkstyle format (launch action) + uses: mdeweerd/logToCheckStyle@v2025.1.1 + if: ${{ failure() }} + with: + in: ${{ env.RAW_LOG }} + # out: ${{ env.CS_XML }} + - uses: actions/cache/save@v4 + if: ${{ ! cancelled() }} + with: + path: ~/.cache/pre-commit/ + key: pre-commit-4|${{ env.pythonLocation }}|${{ hashFiles('.pre-commit-config.yaml') }} + - name: Provide log as artifact + uses: actions/upload-artifact@v4 + if: ${{ ! cancelled() }} + with: + name: precommit-logs + path: | + ${{ env.RAW_LOG }} + ${{ env.CS_XML }} + retention-days: 2 From d127d456694cb10adc6deaab6194d34c166fe835 Mon Sep 17 00:00:00 2001 From: MDW Date: Wed, 16 Apr 2025 17:36:09 +0200 Subject: [PATCH 045/195] chore: update codespell skip patterns Update the `skip` patterns in the `pyproject.toml` file to exclude `tests/fixtures/*` and `aider/website/*`. --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index f7b25eee8..928c5fee2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,5 +48,5 @@ build-backend = "setuptools.build_meta" write_to = "aider/_version.py" [tool.codespell] -skip = "*.svg,Gemfile.lock" +skip = "*.svg,Gemfile.lock,tests/fixtures/*,aider/website/*" write-changes = true From a2ecc5883b90c8b22a957891d57b076fc1483a29 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:28:11 -0700 Subject: [PATCH 046/195] feat: add shell completion generation using shtab --- aider/args.py | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/aider/args.py b/aider/args.py index 4e3fcb4c0..98bc01b94 100644 --- a/aider/args.py +++ b/aider/args.py @@ -6,6 +6,7 @@ import sys from pathlib import Path import configargparse +import shtab from aider import __version__ from aider.args_formatter import ( @@ -858,16 +859,35 @@ def get_sample_dotenv(): def main(): - arg = sys.argv[1] if len(sys.argv[1:]) else None - - if arg == "md": - print(get_md_help()) - elif arg == "dotenv": - print(get_sample_dotenv()) + if len(sys.argv) > 1: + command = sys.argv[1] else: + command = "yaml" # Default to yaml if no command is given + + if command == "md": + print(get_md_help()) + elif command == "dotenv": + print(get_sample_dotenv()) + elif command == "yaml": + print(get_sample_yaml()) + elif command == "completion": + if len(sys.argv) > 2: + shell = sys.argv[2] + if shell not in shtab.SUPPORTED_SHELLS: + print(f"Error: Unsupported shell '{shell}'.", file=sys.stderr) + print(f"Supported shells are: {', '.join(shtab.SUPPORTED_SHELLS)}", file=sys.stderr) + sys.exit(1) + parser = get_parser([], None) + print(shtab.complete(parser, shell=shell, prog="aider")) + else: + print("Error: Please specify a shell for completion.", file=sys.stderr) + print(f"Usage: python {sys.argv[0]} completion ", file=sys.stderr) + print(f"Supported shells are: {', '.join(shtab.SUPPORTED_SHELLS)}", file=sys.stderr) + sys.exit(1) + else: + # Default to YAML for any other unrecognized argument, or if 'yaml' was explicitly passed print(get_sample_yaml()) if __name__ == "__main__": - status = main() - sys.exit(status) + main() From 09acfc8147bf210d9206ebe40186d2a3b94c38a2 Mon Sep 17 00:00:00 2001 From: MDW Date: Wed, 16 Apr 2025 17:40:01 +0200 Subject: [PATCH 047/195] style(pre-commit): apply python style from pre-commit hooks --- aider/coders/editblock_fenced_coder.py | 1 + aider/coders/help_coder.py | 1 + aider/linter.py | 3 ++- tests/basic/test_watch.py | 2 +- 4 files changed, 5 insertions(+), 2 deletions(-) diff --git a/aider/coders/editblock_fenced_coder.py b/aider/coders/editblock_fenced_coder.py index 80e5036ea..cd09e27c5 100644 --- a/aider/coders/editblock_fenced_coder.py +++ b/aider/coders/editblock_fenced_coder.py @@ -5,5 +5,6 @@ from .editblock_fenced_prompts import EditBlockFencedPrompts class EditBlockFencedCoder(EditBlockCoder): """A coder that uses fenced search/replace blocks for code modifications.""" + edit_format = "diff-fenced" gpt_prompts = EditBlockFencedPrompts() diff --git a/aider/coders/help_coder.py b/aider/coders/help_coder.py index fcb1e6aa1..311805af7 100644 --- a/aider/coders/help_coder.py +++ b/aider/coders/help_coder.py @@ -5,6 +5,7 @@ from .help_prompts import HelpPrompts class HelpCoder(Coder): """Interactive help and documentation about aider.""" + edit_format = "help" gpt_prompts = HelpPrompts() diff --git a/aider/linter.py b/aider/linter.py index 51ed40b70..9c980366d 100644 --- a/aider/linter.py +++ b/aider/linter.py @@ -1,10 +1,11 @@ import os +import oslex import re +import shlex import subprocess import sys import traceback import warnings -import oslex from dataclasses import dataclass from pathlib import Path diff --git a/tests/basic/test_watch.py b/tests/basic/test_watch.py index 524f80e08..16e4f8206 100644 --- a/tests/basic/test_watch.py +++ b/tests/basic/test_watch.py @@ -155,7 +155,7 @@ def test_ai_comment_pattern(): assert ( question_js_has_bang == "?" ), "Expected at least one bang (!) comment in watch_question.js fixture" - + # Test Lisp fixture lisp_path = fixtures_dir / "watch.lisp" lisp_lines, lisp_comments, lisp_has_bang = watcher.get_ai_comments(str(lisp_path)) From 30097ab85972242f2fe8f3234121a6440d542b98 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:29:01 -0700 Subject: [PATCH 048/195] fix: Exit with status code from main() --- aider/args.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aider/args.py b/aider/args.py index 98bc01b94..4e714a624 100644 --- a/aider/args.py +++ b/aider/args.py @@ -890,4 +890,5 @@ def main(): if __name__ == "__main__": - main() + status = main() + sys.exit(status) From 40a5a88d56c2728f693c0ef25e991699b9d74270 Mon Sep 17 00:00:00 2001 From: MDW Date: Wed, 16 Apr 2025 18:29:07 +0200 Subject: [PATCH 049/195] style: remove or ignore unused imports The following files had unused imports removed: - `scripts/30k-image.py` - `scripts/dl_icons.py` - `scripts/redact-cast.py` --- benchmark/refactor_tools.py | 2 +- scripts/30k-image.py | 1 - scripts/dl_icons.py | 1 - scripts/redact-cast.py | 2 -- 4 files changed, 1 insertion(+), 5 deletions(-) diff --git a/benchmark/refactor_tools.py b/benchmark/refactor_tools.py index 117770a67..03812b0c1 100755 --- a/benchmark/refactor_tools.py +++ b/benchmark/refactor_tools.py @@ -132,7 +132,7 @@ def find_non_self_methods(path): with open(filename, "r") as file: try: node = ast.parse(file.read(), filename=filename) - except: + except: # noqa: E722 pass checker = SelfUsageChecker() checker.visit(node) diff --git a/scripts/30k-image.py b/scripts/30k-image.py index 9a62206e4..4921b3c20 100644 --- a/scripts/30k-image.py +++ b/scripts/30k-image.py @@ -7,7 +7,6 @@ This creates a shareable social media graphic with confetti animation. import argparse import base64 import math -import os import random from pathlib import Path diff --git a/scripts/dl_icons.py b/scripts/dl_icons.py index 8240ca641..7d878c907 100644 --- a/scripts/dl_icons.py +++ b/scripts/dl_icons.py @@ -3,7 +3,6 @@ Download Material Design Icons SVGs used in the README and save to local assets. """ -import os from pathlib import Path import requests diff --git a/scripts/redact-cast.py b/scripts/redact-cast.py index 91f230e87..c7a1e4ea8 100755 --- a/scripts/redact-cast.py +++ b/scripts/redact-cast.py @@ -1,7 +1,5 @@ #!/usr/bin/env python3 import json -import os -import re import sys import pyte From 1f6f48086438f747b7b1fcc5a86b882e148a04e6 Mon Sep 17 00:00:00 2001 From: MDW Date: Wed, 16 Apr 2025 18:32:50 +0200 Subject: [PATCH 050/195] style(scripts): add flake8 noqa directive to 30k-image.py This commit adds a flake8 directive to disable the E501 line length check for the 30k-image.py script. --- scripts/30k-image.py | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/30k-image.py b/scripts/30k-image.py index 4921b3c20..29924d424 100644 --- a/scripts/30k-image.py +++ b/scripts/30k-image.py @@ -1,4 +1,5 @@ #!/usr/bin/env python +# flake8: noqa: E501 """ Generate a celebratory SVG image for Aider reaching 30,000 GitHub stars. This creates a shareable social media graphic with confetti animation. From 217b45ae88ef65f8e7ab914b42b67a45a1b33530 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:29:40 -0700 Subject: [PATCH 051/195] fix: Set parser.prog for shtab completion compatibility --- aider/args.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aider/args.py b/aider/args.py index 4e714a624..cd6e4363d 100644 --- a/aider/args.py +++ b/aider/args.py @@ -878,7 +878,8 @@ def main(): print(f"Supported shells are: {', '.join(shtab.SUPPORTED_SHELLS)}", file=sys.stderr) sys.exit(1) parser = get_parser([], None) - print(shtab.complete(parser, shell=shell, prog="aider")) + parser.prog = "aider" # Set the program name on the parser + print(shtab.complete(parser, shell=shell)) else: print("Error: Please specify a shell for completion.", file=sys.stderr) print(f"Usage: python {sys.argv[0]} completion ", file=sys.stderr) From 1d5c3c3a2bd3656c45e5737cb7795f6c81b38c95 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 14:30:27 -0700 Subject: [PATCH 052/195] add shtab --- requirements.txt | 4 ++++ requirements/common-constraints.txt | 8 +++++--- requirements/requirements-browser.txt | 2 +- requirements/requirements-dev.txt | 4 ++-- requirements/requirements.in | 1 + 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/requirements.txt b/requirements.txt index f3c08d722..5fcad0a8b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -414,6 +414,10 @@ scipy==1.13.1 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in +shtab==1.7.2 + # via + # -c requirements/common-constraints.txt + # -r requirements/requirements.in six==1.17.0 # via # -c requirements/common-constraints.txt diff --git a/requirements/common-constraints.txt b/requirements/common-constraints.txt index e23b6c23a..3406f7f40 100644 --- a/requirements/common-constraints.txt +++ b/requirements/common-constraints.txt @@ -249,7 +249,7 @@ markupsafe==3.0.2 # via jinja2 marshmallow==3.26.1 # via dataclasses-json -matplotlib==3.10.1 +matplotlib==3.10.3 # via -r requirements/requirements-dev.in mccabe==0.7.0 # via flake8 @@ -269,7 +269,7 @@ multiprocess==0.70.18 # via pathos mypy-extensions==1.1.0 # via typing-inspect -narwhals==1.38.0 +narwhals==1.38.2 # via altair nest-asyncio==1.6.0 # via llama-index-core @@ -486,6 +486,8 @@ setuptools==80.3.1 # via pip-tools shellingham==1.5.4 # via typer +shtab==1.7.2 + # via -r requirements/requirements.in six==1.17.0 # via # mixpanel @@ -592,7 +594,7 @@ urllib3==2.4.0 # requests uv==0.7.3 # via -r requirements/requirements-dev.in -virtualenv==20.31.1 +virtualenv==20.31.2 # via pre-commit watchfiles==1.0.5 # via -r requirements/requirements.in diff --git a/requirements/requirements-browser.txt b/requirements/requirements-browser.txt index 4b8c880f0..3f9dbbbc5 100644 --- a/requirements/requirements-browser.txt +++ b/requirements/requirements-browser.txt @@ -58,7 +58,7 @@ markupsafe==3.0.2 # via # -c requirements/common-constraints.txt # jinja2 -narwhals==1.38.0 +narwhals==1.38.2 # via # -c requirements/common-constraints.txt # altair diff --git a/requirements/requirements-dev.txt b/requirements/requirements-dev.txt index fc05acc51..4d49ef191 100644 --- a/requirements/requirements-dev.txt +++ b/requirements/requirements-dev.txt @@ -127,7 +127,7 @@ markdown-it-py==3.0.0 # via # -c requirements/common-constraints.txt # rich -matplotlib==3.10.1 +matplotlib==3.10.3 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in @@ -301,7 +301,7 @@ uv==0.7.3 # via # -c requirements/common-constraints.txt # -r requirements/requirements-dev.in -virtualenv==20.31.1 +virtualenv==20.31.2 # via # -c requirements/common-constraints.txt # pre-commit diff --git a/requirements/requirements.in b/requirements/requirements.in index 6ddde184b..d1c49e35b 100644 --- a/requirements/requirements.in +++ b/requirements/requirements.in @@ -27,6 +27,7 @@ psutil watchfiles socksio pillow +shtab oslex google-generativeai From 9297ee982d962c1e5ea0143ec14c65fdb24dcde7 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:30:31 -0700 Subject: [PATCH 053/195] fix: Preserve original path spelling for read-only files --- aider/commands.py | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/aider/commands.py b/aider/commands.py index 3dd370e51..1811f8044 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -435,11 +435,20 @@ class Commands: to_keep = set() for abs_fname in self.coder.abs_read_only_fnames: rel_fname = self.coder.get_rel_fname(abs_fname) - keep = any( - _paths_match(abs_fname, orig) or rel_fname == orig - for orig in self.original_read_only_fnames - ) - if keep: + + # Prefer to keep the *original* spelling that the user supplied + # (eg the /var/… symlink) rather than the canonicalised path we + # may have stored internally. This preserves exactly what the + # user (and the tests) expect to see. + kept_name = None + for orig in self.original_read_only_fnames: + if _paths_match(abs_fname, orig) or rel_fname == orig: + kept_name = str(orig) + break + + if kept_name: + to_keep.add(kept_name) + else: to_keep.add(abs_fname) self.coder.abs_read_only_fnames = to_keep else: From 920b20b17dccb631acbaa23fa6f8defb3f7eb7fd Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:31:56 -0700 Subject: [PATCH 054/195] feat: add --shell-completions arg for shell completion scripts --- aider/args.py | 12 ++++++++++++ aider/main.py | 8 ++++++++ 2 files changed, 20 insertions(+) diff --git a/aider/args.py b/aider/args.py index cd6e4363d..4e57f5c35 100644 --- a/aider/args.py +++ b/aider/args.py @@ -811,6 +811,18 @@ def get_parser(default_config_files, git_root): help="Specify which editor to use for the /editor command", ) + supported_shells_list = sorted(list(shtab.SUPPORTED_SHELLS)) + group.add_argument( + "--shell-completions", + metavar="SHELL", + choices=supported_shells_list, + help=( + "Print shell completion script for the specified SHELL and exit. Supported shells:" + f" {', '.join(supported_shells_list)}. Example: aider --shell-completions bash" + ), + ) + + ########## group = parser.add_argument_group("Deprecated model settings") # Add deprecated model shortcut arguments diff --git a/aider/main.py b/aider/main.py index a37f16129..82d00f474 100644 --- a/aider/main.py +++ b/aider/main.py @@ -15,6 +15,7 @@ except ImportError: import importlib_resources from dotenv import load_dotenv +import shtab from prompt_toolkit.enums import EditingMode from aider import __version__, models, urls, utils @@ -502,6 +503,13 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F # Parse again to include any arguments that might have been defined in .env args = parser.parse_args(argv) + if args.shell_completions: + # Ensure parser.prog is set for shtab, though it should be by default + parser.prog = "aider" + print(shtab.complete(parser, shell=args.shell_completions)) + sys.exit(0) + + if git is None: args.git = False From ee9ad75509a6af39c020a0e228c82595e6101330 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:32:08 -0700 Subject: [PATCH 055/195] style: apply linter fixes --- aider/args.py | 1 - aider/main.py | 5 ++--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/aider/args.py b/aider/args.py index 4e57f5c35..1543bb07e 100644 --- a/aider/args.py +++ b/aider/args.py @@ -822,7 +822,6 @@ def get_parser(default_config_files, git_root): ), ) - ########## group = parser.add_argument_group("Deprecated model settings") # Add deprecated model shortcut arguments diff --git a/aider/main.py b/aider/main.py index 82d00f474..ea344f0ba 100644 --- a/aider/main.py +++ b/aider/main.py @@ -14,8 +14,8 @@ except ImportError: git = None import importlib_resources -from dotenv import load_dotenv import shtab +from dotenv import load_dotenv from prompt_toolkit.enums import EditingMode from aider import __version__, models, urls, utils @@ -509,7 +509,6 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F print(shtab.complete(parser, shell=args.shell_completions)) sys.exit(0) - if git is None: args.git = False @@ -912,7 +911,7 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F commit_prompt=args.commit_prompt, subtree_only=args.subtree_only, git_commit_verify=args.git_commit_verify, - attribute_co_authored_by=args.attribute_co_authored_by, # Pass the arg + attribute_co_authored_by=args.attribute_co_authored_by, # Pass the arg ) except FileNotFoundError: pass From 0b4430f228f2f397f5a031a8641bcf87535aa294 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 14:34:56 -0700 Subject: [PATCH 056/195] Revert "fix: Preserve original path spelling for read-only files" This reverts commit 9297ee982d962c1e5ea0143ec14c65fdb24dcde7. --- aider/commands.py | 19 +++++-------------- 1 file changed, 5 insertions(+), 14 deletions(-) diff --git a/aider/commands.py b/aider/commands.py index 1811f8044..3dd370e51 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -435,20 +435,11 @@ class Commands: to_keep = set() for abs_fname in self.coder.abs_read_only_fnames: rel_fname = self.coder.get_rel_fname(abs_fname) - - # Prefer to keep the *original* spelling that the user supplied - # (eg the /var/… symlink) rather than the canonicalised path we - # may have stored internally. This preserves exactly what the - # user (and the tests) expect to see. - kept_name = None - for orig in self.original_read_only_fnames: - if _paths_match(abs_fname, orig) or rel_fname == orig: - kept_name = str(orig) - break - - if kept_name: - to_keep.add(kept_name) - else: + keep = any( + _paths_match(abs_fname, orig) or rel_fname == orig + for orig in self.original_read_only_fnames + ) + if keep: to_keep.add(abs_fname) self.coder.abs_read_only_fnames = to_keep else: From 79923c954b743cd7ad97361ad71cc535bf561341 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 14:35:08 -0700 Subject: [PATCH 057/195] Revert "fix: Preserve original read-only files across symlinks" This reverts commit c3d4fdb4c1d1d31c45f68d229ec2686fb0498a43. --- aider/commands.py | 33 +++++++-------------------------- 1 file changed, 7 insertions(+), 26 deletions(-) diff --git a/aider/commands.py b/aider/commands.py index 3dd370e51..7a7a738c3 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -81,20 +81,8 @@ class Commands: self.help = None self.editor = editor - # Store the original read-only filenames provided via args.read. - # Keep both the raw path as given and the canonical realpath so we - # can match them later even when symlinks (eg /var ↔ /private/var) - # are involved. - self.original_read_only_fnames = set() - for fname in original_read_only_fnames or []: - # As provided - self.original_read_only_fnames.add(str(fname)) - # Canonical path (best-effort) - try: - self.original_read_only_fnames.add(os.path.realpath(fname)) - except Exception: - # Ignore paths that cannot be resolved - pass + # Store the original read-only filenames provided via args.read + self.original_read_only_fnames = set(original_read_only_fnames or []) def cmd_model(self, args): "Switch the Main Model to a new LLM" @@ -423,23 +411,16 @@ class Commands: def _drop_all_files(self): self.coder.abs_fnames = set() - # Helper to compare two paths while ignoring symlinks/resolution. - def _paths_match(p1, p2): - try: - return os.path.samefile(p1, p2) - except (FileNotFoundError, OSError): - return os.path.normpath(p1) == os.path.normpath(p2) - # When dropping all files, keep those that were originally provided via args.read if self.original_read_only_fnames: + # Keep only the original read-only files to_keep = set() for abs_fname in self.coder.abs_read_only_fnames: rel_fname = self.coder.get_rel_fname(abs_fname) - keep = any( - _paths_match(abs_fname, orig) or rel_fname == orig - for orig in self.original_read_only_fnames - ) - if keep: + if ( + abs_fname in self.original_read_only_fnames + or rel_fname in self.original_read_only_fnames + ): to_keep.add(abs_fname) self.coder.abs_read_only_fnames = to_keep else: From 311981f4e5b39bfa5431fe11fda58cf13f200b12 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:39:14 -0700 Subject: [PATCH 058/195] test: Use os.path.samefile for robust read-only file assertion --- tests/basic/test_commands.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_commands.py b/tests/basic/test_commands.py index 2d15e02f5..8f668c6f5 100644 --- a/tests/basic/test_commands.py +++ b/tests/basic/test_commands.py @@ -2147,7 +2147,11 @@ class TestCommands(TestCase): # Assertions for /reset self.assertEqual(len(new_coder.abs_fnames), 0) self.assertEqual(len(new_coder.abs_read_only_fnames), 1) - self.assertIn(str(orig_ro_path), new_coder.abs_read_only_fnames) + # self.assertIn(str(orig_ro_path), new_coder.abs_read_only_fnames) + self.assertTrue( + any(os.path.samefile(p, str(orig_ro_path)) for p in new_coder.abs_read_only_fnames), + f"File {str(orig_ro_path)} not found in {new_coder.abs_read_only_fnames}", + ) self.assertEqual(len(new_coder.done_messages), 0) self.assertEqual(len(new_coder.cur_messages), 0) @@ -2186,6 +2190,10 @@ class TestCommands(TestCase): self.assertEqual(len(new_coder.abs_fnames), 0) self.assertEqual(len(new_coder.abs_read_only_fnames), 1) - self.assertIn(str(orig_ro_path), new_coder.abs_read_only_fnames) + # self.assertIn(str(orig_ro_path), new_coder.abs_read_only_fnames) + self.assertTrue( + any(os.path.samefile(p, str(orig_ro_path)) for p in new_coder.abs_read_only_fnames), + f"File {str(orig_ro_path)} not found in {new_coder.abs_read_only_fnames}", + ) self.assertEqual(new_coder.done_messages, [{"role": "user", "content": "d1"}]) self.assertEqual(new_coder.cur_messages, [{"role": "user", "content": "c1"}]) From c147571b1843405aa4d7946d52807f94044146c7 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 14:43:56 -0700 Subject: [PATCH 059/195] feat: add shell-completions option --- aider/website/assets/sample-analytics.jsonl | 184 ++++++++++---------- aider/website/assets/sample.aider.conf.yml | 3 + aider/website/assets/sample.env | 3 + aider/website/docs/config/aider_conf.md | 3 + aider/website/docs/config/dotenv.md | 3 + aider/website/docs/config/options.md | 11 +- aider/website/docs/faq.md | 12 +- tests/basic/test_commands.py | 4 +- 8 files changed, 120 insertions(+), 103 deletions(-) diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 70f22786f..4ef5bedb9 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,95 +1,3 @@ -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642397} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642510} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642511} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642511} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642511} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 12857, "completion_tokens": 4951, "total_tokens": 17808, "cost": 0.06558125000000001, "total_cost": 0.06558125000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642560} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642561} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642590} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642591} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642591} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642591} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 12659, "completion_tokens": 3733, "total_tokens": 16392, "cost": 0.05315375, "total_cost": 0.05315375}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642632} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642632} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642659} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642660} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642660} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642660} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 12882, "completion_tokens": 345, "total_tokens": 13227, "cost": 0.019552500000000004, "total_cost": 0.019552500000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642724} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642724} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642738} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642739} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642739} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642739} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 12863, "completion_tokens": 716, "total_tokens": 13579, "cost": 0.023238750000000002, "total_cost": 0.023238750000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642765} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642765} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642795} -{"event": "repo", "properties": {"num_files": 606}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642796} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642796} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642796} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 12658, "completion_tokens": 5959, "total_tokens": 18617, "cost": 0.07541250000000001, "total_cost": 0.07541250000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642852} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746642852} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643011} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643012} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643012} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643012} -{"event": "message_send_exception", "properties": {"exception": "'ModelResponse' object has no attribute 'completion_tokens'"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643015} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643015} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643034} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643034} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643034} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643034} -{"event": "message_send_exception", "properties": {"exception": "'ModelResponse' object has no attribute 'completion_tokens'"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643039} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643039} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643084} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643085} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643085} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643085} -{"event": "message_send_exception", "properties": {"exception": "'ModelResponse' object has no attribute 'completion_tokens'"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643088} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643088} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643095} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643095} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643095} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643095} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 68, "completion_tokens": 81, "total_tokens": 149, "cost": 0.0008950000000000001, "total_cost": 0.0008950000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643099} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643099} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643119} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643120} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643120} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643120} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 1822, "total_tokens": 10526, "cost": 0.0291, "total_cost": 0.0291}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643140} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643140} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643199} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643199} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643199} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643199} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643203} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643204} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643204} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643204} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 68, "completion_tokens": 13, "total_tokens": 81, "cost": 0.00021500000000000002, "total_cost": 0.00021500000000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643207} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643207} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643216} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643217} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643217} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643217} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 307, "total_tokens": 9011, "cost": 0.01395, "total_cost": 0.01395}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643242} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643242} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643287} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643287} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643287} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643287} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 468, "total_tokens": 9172, "cost": 0.015560000000000001, "total_cost": 0.015560000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643309} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643309} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643362} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643362} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643362} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643362} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 2055, "total_tokens": 10759, "cost": 0.03143, "total_cost": 0.03143}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643385} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643385} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643425} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643426} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643426} {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643426} {"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 2614, "total_tokens": 11318, "cost": 0.037020000000000004, "total_cost": 0.037020000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643452} {"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643452} @@ -998,3 +906,95 @@ {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} {"event": "message_send", "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", "prompt_tokens": 30117, "completion_tokens": 361, "total_tokens": 30478, "cost": 0.04125625000000001, "total_cost": 0.04125625000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737284} {"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737284} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737699} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737700} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737700} +{"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": 1746737700} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737727} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737727} +{"event": "message_send", "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": "ask", "prompt_tokens": 6435, "completion_tokens": 884, "total_tokens": 7319, "cost": 0.016883750000000003, "total_cost": 0.016883750000000003}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737803} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737820} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737926} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737936} +{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737943} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738004} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738004} +{"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": "ask", "prompt_tokens": 33813, "completion_tokens": 554, "total_tokens": 34367, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738026} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738032} +{"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": 34494, "completion_tokens": 76, "total_tokens": 34570, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738036} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738068} +{"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": 34580, "completion_tokens": 76, "total_tokens": 34656, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738070} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738093} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738097} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738102} +{"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": 63505, "completion_tokens": 1191, "total_tokens": 64696, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738163} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738188} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738223} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738235} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738235} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738240} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738252} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738252} +{"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": "ask", "prompt_tokens": 6343, "completion_tokens": 2379, "total_tokens": 8722, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738367} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738407} +{"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": "ask", "prompt_tokens": 69472, "completion_tokens": 1827, "total_tokens": 71299, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738456} +{"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": 10045, "completion_tokens": 1102, "total_tokens": 11147, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738480} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738525} +{"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": 11528, "completion_tokens": 707, "total_tokens": 12235, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738566} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738934} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739112} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739112} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739112} +{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739166} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739234} +{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739236} +{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739238} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739241} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739246} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739258} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739258} +{"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": 68151, "completion_tokens": 4679, "total_tokens": 72830, "cost": 0.86867, "total_cost": 0.86867}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739381} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739421} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739458} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739470} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739471} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739471} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739471} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739508} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739508} +{"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": 70789, "completion_tokens": 2403, "total_tokens": 73192, "cost": 0.80401, "total_cost": 1.6726800000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739511} +{"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": "ask", "prompt_tokens": 9168, "completion_tokens": 989, "total_tokens": 10157, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739544} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739672} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739680} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739680} +{"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": 11940, "completion_tokens": 485, "total_tokens": 12425, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739687} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739735} +{"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": 12723, "completion_tokens": 66, "total_tokens": 12789, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739739} +{"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": 74182, "completion_tokens": 3265, "total_tokens": 77447, "cost": 0.8724200000000001, "total_cost": 2.5451}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739763} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739767} +{"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": 12906, "completion_tokens": 234, "total_tokens": 13140, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739778} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739786} +{"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": 76544, "completion_tokens": 1560, "total_tokens": 78104, "cost": 0.82784, "total_cost": 3.3729400000000003}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739829} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739844} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739847} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739877} +{"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": 19935, "completion_tokens": 409, "total_tokens": 20344, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739913} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739948} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739948} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740094} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740156} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740158} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740183} +{"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": 25752, "completion_tokens": 537, "total_tokens": 26289, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740332} diff --git a/aider/website/assets/sample.aider.conf.yml b/aider/website/assets/sample.aider.conf.yml index da6956cd5..7fe9459bf 100644 --- a/aider/website/assets/sample.aider.conf.yml +++ b/aider/website/assets/sample.aider.conf.yml @@ -428,6 +428,9 @@ ## Specify which editor to use for the /editor command #editor: xxx +## Print shell completion script for the specified SHELL and exit. Supported shells: bash, tcsh, zsh. Example: aider --shell-completions bash +#shell-completions: xxx + ############################ # Deprecated model settings: diff --git a/aider/website/assets/sample.env b/aider/website/assets/sample.env index b08bb1a38..6d2a032cd 100644 --- a/aider/website/assets/sample.env +++ b/aider/website/assets/sample.env @@ -396,6 +396,9 @@ ## Specify which editor to use for the /editor command #AIDER_EDITOR= +## Print shell completion script for the specified SHELL and exit. Supported shells: bash, tcsh, zsh. Example: aider --shell-completions bash +#AIDER_SHELL_COMPLETIONS= + ############################ # Deprecated model settings: diff --git a/aider/website/docs/config/aider_conf.md b/aider/website/docs/config/aider_conf.md index 3eb580bce..99bccf401 100644 --- a/aider/website/docs/config/aider_conf.md +++ b/aider/website/docs/config/aider_conf.md @@ -482,6 +482,9 @@ cog.outl("```") ## Specify which editor to use for the /editor command #editor: xxx +## Print shell completion script for the specified SHELL and exit. Supported shells: bash, tcsh, zsh. Example: aider --shell-completions bash +#shell-completions: xxx + ############################ # Deprecated model settings: diff --git a/aider/website/docs/config/dotenv.md b/aider/website/docs/config/dotenv.md index 5dff49c51..82ad974de 100644 --- a/aider/website/docs/config/dotenv.md +++ b/aider/website/docs/config/dotenv.md @@ -436,6 +436,9 @@ cog.outl("```") ## Specify which editor to use for the /editor command #AIDER_EDITOR= +## Print shell completion script for the specified SHELL and exit. Supported shells: bash, tcsh, zsh. Example: aider --shell-completions bash +#AIDER_SHELL_COMPLETIONS= + ############################ # Deprecated model settings: diff --git a/aider/website/docs/config/options.md b/aider/website/docs/config/options.md index f0bbe5177..368c4ec7e 100644 --- a/aider/website/docs/config/options.md +++ b/aider/website/docs/config/options.md @@ -82,9 +82,10 @@ usage: aider [-h] [--model] [--openai-api-key] [--anthropic-api-key] [--multiline | --no-multiline] [--notifications | --no-notifications] [--notifications-command] - [--detect-urls | --no-detect-urls] [--editor] [--opus] - [--sonnet] [--haiku] [--4] [--4o] [--mini] [--4-turbo] - [--35turbo] [--deepseek] [--o1-mini] [--o1-preview] + [--detect-urls | --no-detect-urls] [--editor] + [--shell-completions] [--opus] [--sonnet] [--haiku] + [--4] [--4o] [--mini] [--4-turbo] [--35turbo] + [--deepseek] [--o1-mini] [--o1-preview] ``` @@ -767,6 +768,10 @@ Aliases: Specify which editor to use for the /editor command Environment variable: `AIDER_EDITOR` +### `--shell-completions SHELL` +Print shell completion script for the specified SHELL and exit. Supported shells: bash, tcsh, zsh. Example: aider --shell-completions bash +Environment variable: `AIDER_SHELL_COMPLETIONS` + ## Deprecated model settings: ### `--opus` diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index e2d8ac531..fd56dd2f5 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,12 +264,12 @@ tr:hover { background-color: #f5f5f5; } - - - - - - + + + + + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-preview-05-06575,43340.7%
gemini/gemini-2.5-pro-exp-03-25413,81529.3%
gemini/gemini-2.5-pro-preview-03-25263,26118.6%
openrouter/REDACTED135,1099.6%
o315,1541.1%
together_ai/REDACTED7,7070.5%
gemini/gemini-2.5-pro-exp-03-25780,65139.6%
gemini/gemini-2.5-pro-preview-05-06582,75229.6%
o3316,72716.1%
gemini/gemini-2.5-pro-preview-03-25143,9407.3%
openrouter/REDACTED135,1096.9%
together_ai/REDACTED7,7070.4%
together_ai/Qwen/Qwen3-235B-A22B-fp8-tput1,9940.1%
diff --git a/tests/basic/test_commands.py b/tests/basic/test_commands.py index 8f668c6f5..cc6cd4222 100644 --- a/tests/basic/test_commands.py +++ b/tests/basic/test_commands.py @@ -2108,7 +2108,7 @@ class TestCommands(TestCase): def test_reset_after_coder_clone_preserves_original_read_only_files(self): with GitTemporaryDirectory() as repo_dir_path: - repo_dir = str(repo_dir_path) + repo_dir = str(".") io = InputOutput(pretty=False, fancy_input=False, yes=True) orig_ro_path = Path(repo_dir) / "orig_ro.txt" @@ -2157,7 +2157,7 @@ class TestCommands(TestCase): def test_drop_bare_after_coder_clone_preserves_original_read_only_files(self): with GitTemporaryDirectory() as repo_dir_path: - repo_dir = str(repo_dir_path) + repo_dir = str(".") io = InputOutput(pretty=False, fancy_input=False, yes=True) orig_ro_path = Path(repo_dir) / "orig_ro.txt" From 0af5563e7778d3c76bef014b06e7c78287edbbd9 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 14:44:07 -0700 Subject: [PATCH 060/195] style: Fix F841 unused variable in tests --- tests/basic/test_commands.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_commands.py b/tests/basic/test_commands.py index cc6cd4222..d187ee521 100644 --- a/tests/basic/test_commands.py +++ b/tests/basic/test_commands.py @@ -2107,7 +2107,7 @@ class TestCommands(TestCase): ) def test_reset_after_coder_clone_preserves_original_read_only_files(self): - with GitTemporaryDirectory() as repo_dir_path: + with GitTemporaryDirectory() as _: repo_dir = str(".") io = InputOutput(pretty=False, fancy_input=False, yes=True) @@ -2156,7 +2156,7 @@ class TestCommands(TestCase): self.assertEqual(len(new_coder.cur_messages), 0) def test_drop_bare_after_coder_clone_preserves_original_read_only_files(self): - with GitTemporaryDirectory() as repo_dir_path: + with GitTemporaryDirectory() as _: repo_dir = str(".") io = InputOutput(pretty=False, fancy_input=False, yes=True) From 2a614944428854ea2ed8804a005fa70036e66d59 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 14:55:53 -0700 Subject: [PATCH 061/195] copy --- HISTORY.md | 6 +- aider/website/HISTORY.md | 6 +- aider/website/assets/sample-analytics.jsonl | 228 ++++++++++---------- aider/website/docs/faq.md | 10 +- 4 files changed, 129 insertions(+), 121 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 79f9626d2..c8dbf24db 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -25,7 +25,7 @@ - Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. - Improved display of filenames in the prompt header using rich Text formatting. - Enabled `reasoning_effort` for Gemini 2.5 Flash models. -- Aider wrote 50% of the code in this release. + - Aider wrote 54% of the code in this release. ### Aider v0.82.3 @@ -39,6 +39,10 @@ - Set Gemini 2.5 Pro models to use the `overeager` prompt setting by default. - Add common file types (`.svg`, `.pdf`) to the default list of ignored files for AI comment scanning (`--watch`). - Skip scanning files larger than 1MB for AI comments (`--watch`). + - Added a `--shell-completions` argument to generate shell completion scripts (e.g., for bash, zsh). + - Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. + - Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). + - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. ### Aider v0.82.2 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 677b9ed8f..29a123951 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -49,7 +49,7 @@ cog.out(text) - Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. - Improved display of filenames in the prompt header using rich Text formatting. - Enabled `reasoning_effort` for Gemini 2.5 Flash models. -- Aider wrote 50% of the code in this release. + - Aider wrote 54% of the code in this release. ### Aider v0.82.3 @@ -63,6 +63,10 @@ cog.out(text) - Set Gemini 2.5 Pro models to use the `overeager` prompt setting by default. - Add common file types (`.svg`, `.pdf`) to the default list of ignored files for AI comment scanning (`--watch`). - Skip scanning files larger than 1MB for AI comments (`--watch`). + - Added a `--shell-completions` argument to generate shell completion scripts (e.g., for bash, zsh). + - Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. + - Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). + - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. ### Aider v0.82.2 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 4ef5bedb9..d61cf093f 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,117 +1,3 @@ -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643426} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 2614, "total_tokens": 11318, "cost": 0.037020000000000004, "total_cost": 0.037020000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643452} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643452} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643551} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643552} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643552} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643552} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 468, "total_tokens": 9172, "cost": 0.015560000000000001, "total_cost": 0.015560000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643575} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643575} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643589} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643589} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643589} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643589} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 1822, "total_tokens": 10526, "cost": 0.0291, "total_cost": 0.0291}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643611} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643611} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643634} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643634} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643634} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643634} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 1822, "total_tokens": 10526, "cost": 0.0291, "total_cost": 0.0291}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643655} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643655} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643675} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643675} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643675} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643675} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 468, "total_tokens": 9172, "cost": 0.015560000000000001, "total_cost": 0.015560000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643696} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643696} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643709} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643709} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643709} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643709} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 500, "total_tokens": 9204, "cost": 0.015880000000000002, "total_cost": 0.015880000000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643730} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643730} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643743} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643743} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643743} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643743} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 2055, "total_tokens": 10759, "cost": 0.03143, "total_cost": 0.03143}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643764} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643764} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643777} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643777} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643777} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643777} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 336, "total_tokens": 9040, "cost": 0.014240000000000001, "total_cost": 0.014240000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643796} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643796} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643874} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643874} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643874} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643874} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 2614, "total_tokens": 11318, "cost": 0.037020000000000004, "total_cost": 0.037020000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643901} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746643901} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644671} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644671} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644671} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644671} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 1822, "total_tokens": 10526, "cost": 0.0291, "total_cost": 0.0291}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644693} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644693} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644812} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644813} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644813} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644813} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 336, "total_tokens": 9040, "cost": 0.014240000000000001, "total_cost": 0.014240000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644835} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644835} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644859} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644859} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644859} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644859} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 1583, "total_tokens": 10287, "cost": 0.02671, "total_cost": 0.02671}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644877} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746644877} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746645851} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746645851} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746645851} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746645851} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746645861} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 6524, "completion_tokens": 387, "total_tokens": 6911, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746645888} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746646177} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746648919} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746648919} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746648919} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746648919} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746648920} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746648930} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 6568, "completion_tokens": 1043, "total_tokens": 7611, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746648961} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649323} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649324} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 6657, "completion_tokens": 916, "total_tokens": 7573, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649392} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649626} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649652} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649652} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649652} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649652} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "ask", "prompt_tokens": 8704, "completion_tokens": 336, "total_tokens": 9040, "cost": 0.014240000000000001, "total_cost": 0.014240000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649669} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746649669} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650326} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650327} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650327} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650330} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650397} -{"event": "model warning", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650399} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650401} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650401} -{"event": "cli session", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650401} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650403} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650416} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650421} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650422} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650422} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650422} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 8240, "completion_tokens": 10, "total_tokens": 8250, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650427} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650427} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650437} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650437} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650437} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746650440} {"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657288} {"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657291} {"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657297} @@ -998,3 +884,117 @@ {"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740158} {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740183} {"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": 25752, "completion_tokens": 537, "total_tokens": 26289, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740332} +{"event": "command_lint", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740602} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740637} +{"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": 23028, "completion_tokens": 209, "total_tokens": 23237, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740645} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740795} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740888} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} +{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740989} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740989} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741116} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741117} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741117} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741117} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741128} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741128} +{"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": "ask", "prompt_tokens": 8311, "completion_tokens": 73, "total_tokens": 8384, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741133} +{"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": 34536, "completion_tokens": 239, "total_tokens": 34775, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741136} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741136} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741137} +{"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": "ask", "prompt_tokens": 4178, "completion_tokens": 107, "total_tokens": 4285, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741140} +{"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": 35036, "completion_tokens": 455, "total_tokens": 35491, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741205} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741205} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741206} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741208} +{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741243} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index fd56dd2f5..fe10d0dc6 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,11 +264,11 @@ tr:hover { background-color: #f5f5f5; } - - - - - + + + + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25780,65139.6%
gemini/gemini-2.5-pro-preview-05-06582,75229.6%
o3316,72716.1%
gemini/gemini-2.5-pro-preview-03-25143,9407.3%
openrouter/REDACTED135,1096.9%
gemini/gemini-2.5-pro-exp-03-25856,47844.7%
gemini/gemini-2.5-pro-preview-05-06582,75230.4%
o3316,72716.5%
openrouter/REDACTED135,1097.1%
gemini/gemini-2.5-pro-preview-03-2514,0120.7%
together_ai/REDACTED7,7070.4%
together_ai/Qwen/Qwen3-235B-A22B-fp8-tput1,9940.1%
From b40baaceea3195d1a6f0445c2eb257d41e5149eb Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 15:11:07 -0700 Subject: [PATCH 062/195] do codespell the website --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 928c5fee2..40a52f566 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -48,5 +48,5 @@ build-backend = "setuptools.build_meta" write_to = "aider/_version.py" [tool.codespell] -skip = "*.svg,Gemfile.lock,tests/fixtures/*,aider/website/*" +skip = "*.svg,Gemfile.lock,tests/fixtures/*,aider/website/assets/*" write-changes = true From 38e7f04e60664e044ca8dfeb50ff6c66e64d8a7f Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 15:13:38 -0700 Subject: [PATCH 063/195] lint --- aider/coders/udiff_simple_prompts.py | 2 +- aider/linter.py | 2 +- aider/repo.py | 14 ++- tests/basic/test_repo.py | 108 +++++++++++++++++------- tests/scrape/test_playwright_disable.py | 34 ++++++-- 5 files changed, 115 insertions(+), 45 deletions(-) diff --git a/aider/coders/udiff_simple_prompts.py b/aider/coders/udiff_simple_prompts.py index ea98164cf..cd3160e58 100644 --- a/aider/coders/udiff_simple_prompts.py +++ b/aider/coders/udiff_simple_prompts.py @@ -22,4 +22,4 @@ Don't leave out any lines or the diff patch won't apply correctly. To make a new file, show a diff from `--- /dev/null` to `+++ path/to/new/file.ext`. {final_reminders} -""" # noqa +""" # noqa diff --git a/aider/linter.py b/aider/linter.py index 9c980366d..301e5d7aa 100644 --- a/aider/linter.py +++ b/aider/linter.py @@ -1,5 +1,4 @@ import os -import oslex import re import shlex import subprocess @@ -9,6 +8,7 @@ import warnings from dataclasses import dataclass from pathlib import Path +import oslex from grep_ast import TreeContext, filename_to_lang from grep_ast.tsl import get_parser # noqa: E402 diff --git a/aider/repo.py b/aider/repo.py index aa2d525f7..6db4c7635 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -72,7 +72,7 @@ class GitRepo: commit_prompt=None, subtree_only=False, git_commit_verify=True, - attribute_co_authored_by=False, # Added parameter + attribute_co_authored_by=False, # Added parameter ): self.io = io self.models = models @@ -84,7 +84,7 @@ class GitRepo: self.attribute_committer = attribute_committer self.attribute_commit_message_author = attribute_commit_message_author self.attribute_commit_message_committer = attribute_commit_message_committer - self.attribute_co_authored_by = attribute_co_authored_by # Assign from parameter + self.attribute_co_authored_by = attribute_co_authored_by # Assign from parameter self.commit_prompt = commit_prompt self.subtree_only = subtree_only self.git_commit_verify = git_commit_verify @@ -227,7 +227,6 @@ class GitRepo: effective_author = True if attribute_author is None else attribute_author effective_committer = True if attribute_committer is None else attribute_committer - # Determine commit message prefixing prefix_commit_message = aider_edits and ( attribute_commit_message_author or attribute_commit_message_committer @@ -247,9 +246,7 @@ class GitRepo: # Author modification applies only to aider edits. # It's used if effective_author is True AND (co-authored-by is False OR author was explicitly set). use_attribute_author = ( - aider_edits - and effective_author - and (not attribute_co_authored_by or author_explicit) + aider_edits and effective_author and (not attribute_co_authored_by or author_explicit) ) # Committer modification applies regardless of aider_edits (based on tests). @@ -258,7 +255,6 @@ class GitRepo: not (aider_edits and attribute_co_authored_by) or committer_explicit ) - if not commit_message: commit_message = "(no commit message provided)" @@ -291,7 +287,9 @@ class GitRepo: with contextlib.ExitStack() as stack: if use_attribute_committer: stack.enter_context( - set_git_env("GIT_COMMITTER_NAME", committer_name, original_committer_name_env) + set_git_env( + "GIT_COMMITTER_NAME", committer_name, original_committer_name_env + ) ) if use_attribute_author: stack.enter_context( diff --git a/tests/basic/test_repo.py b/tests/basic/test_repo.py index 400c307a8..a07124810 100644 --- a/tests/basic/test_repo.py +++ b/tests/basic/test_repo.py @@ -206,13 +206,15 @@ class TestRepo(unittest.TestCase): self.assertEqual(commit.committer.name, "Test User (aider)") # Now test with explicit False - git_repo_explicit_false = GitRepo(io, None, None, attribute_author=False, attribute_committer=False) + git_repo_explicit_false = GitRepo( + io, None, None, attribute_author=False, attribute_committer=False + ) fname.write_text("explicit false content") commit_result = git_repo_explicit_false.commit(fnames=[str(fname)], aider_edits=True) self.assertIsNotNone(commit_result) commit = raw_repo.head.commit - self.assertEqual(commit.author.name, "Test User") # Explicit False - self.assertEqual(commit.committer.name, "Test User") # Explicit False + self.assertEqual(commit.author.name, "Test User") # Explicit False + self.assertEqual(commit.committer.name, "Test User") # Explicit False # check that the original committer name is restored original_committer_name = os.environ.get("GIT_COMMITTER_NAME") @@ -223,11 +225,21 @@ class TestRepo(unittest.TestCase): # Test user commit with explicit no-committer attribution git_repo_user_no_committer = GitRepo(io, None, None, attribute_committer=False) fname.write_text("user no committer content") - commit_result = git_repo_user_no_committer.commit(fnames=[str(fname)], aider_edits=False) + commit_result = git_repo_user_no_committer.commit( + fnames=[str(fname)], aider_edits=False + ) self.assertIsNotNone(commit_result) commit = raw_repo.head.commit - self.assertEqual(commit.author.name, "Test User", msg="Author name should not be modified for user commits") - self.assertEqual(commit.committer.name, "Test User", msg="Committer name should not be modified when attribute_committer=False") + self.assertEqual( + commit.author.name, + "Test User", + msg="Author name should not be modified for user commits", + ) + self.assertEqual( + commit.committer.name, + "Test User", + msg="Committer name should not be modified when attribute_committer=False", + ) @unittest.skipIf(platform.system() == "Windows", "Git env var behavior differs on Windows") def test_commit_with_co_authored_by(self): @@ -246,21 +258,22 @@ class TestRepo(unittest.TestCase): # Mock coder args: Co-authored-by enabled, author/committer use default (None) mock_coder = MagicMock() mock_coder.args.attribute_co_authored_by = True - mock_coder.args.attribute_author = None # Default - mock_coder.args.attribute_committer = None # Default + mock_coder.args.attribute_author = None # Default + mock_coder.args.attribute_committer = None # Default mock_coder.args.attribute_commit_message_author = False mock_coder.args.attribute_commit_message_committer = False # The code uses coder.main_model.name for the co-authored-by line mock_coder.main_model = MagicMock() mock_coder.main_model.name = "gpt-test" - io = InputOutput() git_repo = GitRepo(io, None, None) # commit a change with aider_edits=True and co-authored-by flag fname.write_text("new content") - commit_result = git_repo.commit(fnames=[str(fname)], aider_edits=True, coder=mock_coder, message="Aider edit") + commit_result = git_repo.commit( + fnames=[str(fname)], aider_edits=True, coder=mock_coder, message="Aider edit" + ) self.assertIsNotNone(commit_result) # check the commit message and author/committer @@ -268,8 +281,16 @@ class TestRepo(unittest.TestCase): self.assertIn("Co-authored-by: aider (gpt-test) ", commit.message) self.assertEqual(commit.message.splitlines()[0], "Aider edit") # With default (None), co-authored-by takes precedence - self.assertEqual(commit.author.name, "Test User", msg="Author name should not be modified when co-authored-by takes precedence") - self.assertEqual(commit.committer.name, "Test User", msg="Committer name should not be modified when co-authored-by takes precedence") + self.assertEqual( + commit.author.name, + "Test User", + msg="Author name should not be modified when co-authored-by takes precedence", + ) + self.assertEqual( + commit.committer.name, + "Test User", + msg="Committer name should not be modified when co-authored-by takes precedence", + ) @unittest.skipIf(platform.system() == "Windows", "Git env var behavior differs on Windows") def test_commit_co_authored_by_with_explicit_name_modification(self): @@ -290,29 +311,40 @@ class TestRepo(unittest.TestCase): # Mock coder args: Co-authored-by enabled, author/committer modification explicitly enabled mock_coder = MagicMock() mock_coder.args.attribute_co_authored_by = True - mock_coder.args.attribute_author = True # Explicitly enable - mock_coder.args.attribute_committer = True # Explicitly enable + mock_coder.args.attribute_author = True # Explicitly enable + mock_coder.args.attribute_committer = True # Explicitly enable mock_coder.args.attribute_commit_message_author = False mock_coder.args.attribute_commit_message_committer = False mock_coder.main_model = MagicMock() mock_coder.main_model.name = "gpt-test-combo" - io = InputOutput() git_repo = GitRepo(io, None, None) # commit a change with aider_edits=True and combo flags fname.write_text("new content combo") - commit_result = git_repo.commit(fnames=[str(fname)], aider_edits=True, coder=mock_coder, message="Aider combo edit") + commit_result = git_repo.commit( + fnames=[str(fname)], aider_edits=True, coder=mock_coder, message="Aider combo edit" + ) self.assertIsNotNone(commit_result) # check the commit message and author/committer commit = raw_repo.head.commit - self.assertIn("Co-authored-by: aider (gpt-test-combo) ", commit.message) + self.assertIn( + "Co-authored-by: aider (gpt-test-combo) ", commit.message + ) self.assertEqual(commit.message.splitlines()[0], "Aider combo edit") # When co-authored-by is true BUT author/committer are explicit True, modification SHOULD happen - self.assertEqual(commit.author.name, "Test User (aider)", msg="Author name should be modified when explicitly True, even with co-author") - self.assertEqual(commit.committer.name, "Test User (aider)", msg="Committer name should be modified when explicitly True, even with co-author") + self.assertEqual( + commit.author.name, + "Test User (aider)", + msg="Author name should be modified when explicitly True, even with co-author", + ) + self.assertEqual( + commit.committer.name, + "Test User (aider)", + msg="Committer name should be modified when explicitly True, even with co-author", + ) @unittest.skipIf(platform.system() == "Windows", "Git env var behavior differs on Windows") def test_commit_ai_edits_no_coauthor_explicit_false(self): @@ -333,8 +365,8 @@ class TestRepo(unittest.TestCase): # Case 1: attribute_author = False, attribute_committer = None (default True) mock_coder_no_author = MagicMock() mock_coder_no_author.args.attribute_co_authored_by = False - mock_coder_no_author.args.attribute_author = False # Explicit False - mock_coder_no_author.args.attribute_committer = None # Default True + mock_coder_no_author.args.attribute_author = False # Explicit False + mock_coder_no_author.args.attribute_committer = None # Default True mock_coder_no_author.args.attribute_commit_message_author = False mock_coder_no_author.args.attribute_commit_message_committer = False mock_coder_no_author.main_model = MagicMock() @@ -342,18 +374,23 @@ class TestRepo(unittest.TestCase): git_repo_no_author = GitRepo(io, None, None) fname.write_text("no author content") - commit_result = git_repo_no_author.commit(fnames=[str(fname)], aider_edits=True, coder=mock_coder_no_author, message="Aider no author") + commit_result = git_repo_no_author.commit( + fnames=[str(fname)], + aider_edits=True, + coder=mock_coder_no_author, + message="Aider no author", + ) self.assertIsNotNone(commit_result) commit = raw_repo.head.commit self.assertNotIn("Co-authored-by:", commit.message) - self.assertEqual(commit.author.name, "Test User") # Explicit False - self.assertEqual(commit.committer.name, "Test User (aider)") # Default True + self.assertEqual(commit.author.name, "Test User") # Explicit False + self.assertEqual(commit.committer.name, "Test User (aider)") # Default True # Case 2: attribute_author = None (default True), attribute_committer = False mock_coder_no_committer = MagicMock() mock_coder_no_committer.args.attribute_co_authored_by = False - mock_coder_no_committer.args.attribute_author = None # Default True - mock_coder_no_committer.args.attribute_committer = False # Explicit False + mock_coder_no_committer.args.attribute_author = None # Default True + mock_coder_no_committer.args.attribute_committer = False # Explicit False mock_coder_no_committer.args.attribute_commit_message_author = False mock_coder_no_committer.args.attribute_commit_message_committer = False mock_coder_no_committer.main_model = MagicMock() @@ -361,12 +398,25 @@ class TestRepo(unittest.TestCase): git_repo_no_committer = GitRepo(io, None, None) fname.write_text("no committer content") - commit_result = git_repo_no_committer.commit(fnames=[str(fname)], aider_edits=True, coder=mock_coder_no_committer, message="Aider no committer") + commit_result = git_repo_no_committer.commit( + fnames=[str(fname)], + aider_edits=True, + coder=mock_coder_no_committer, + message="Aider no committer", + ) self.assertIsNotNone(commit_result) commit = raw_repo.head.commit self.assertNotIn("Co-authored-by:", commit.message) - self.assertEqual(commit.author.name, "Test User (aider)", msg="Author name should be modified (default True) when co-author=False") - self.assertEqual(commit.committer.name, "Test User", msg="Committer name should not be modified (explicit False) when co-author=False") + self.assertEqual( + commit.author.name, + "Test User (aider)", + msg="Author name should be modified (default True) when co-author=False", + ) + self.assertEqual( + commit.committer.name, + "Test User", + msg="Committer name should not be modified (explicit False) when co-author=False", + ) def test_get_tracked_files(self): # Create a temporary directory diff --git a/tests/scrape/test_playwright_disable.py b/tests/scrape/test_playwright_disable.py index df777752b..215422cc2 100644 --- a/tests/scrape/test_playwright_disable.py +++ b/tests/scrape/test_playwright_disable.py @@ -1,7 +1,9 @@ -import pytest from unittest.mock import MagicMock -from aider.scrape import install_playwright, Scraper +import pytest + +from aider.scrape import Scraper, install_playwright + class DummyIO: def __init__(self): @@ -25,13 +27,16 @@ def test_scraper_disable_playwright_flag(monkeypatch): scraper = Scraper(print_error=io.tool_error, playwright_available=False) # Patch scrape_with_httpx to check it is called called = {} + def fake_httpx(url): - called['called'] = True + called["called"] = True return "plain text", "text/plain" + scraper.scrape_with_httpx = fake_httpx content = scraper.scrape("http://example.com") assert content == "plain text" - assert called['called'] + assert called["called"] + def test_scraper_enable_playwright(monkeypatch): io = DummyIO() @@ -39,13 +44,16 @@ def test_scraper_enable_playwright(monkeypatch): scraper = Scraper(print_error=io.tool_error, playwright_available=True) # Patch scrape_with_playwright to check it is called called = {} + def fake_playwright(url): - called['called'] = True + called["called"] = True return "hi", "text/html" + scraper.scrape_with_playwright = fake_playwright content = scraper.scrape("http://example.com") assert content.startswith("hi") or "" in content - assert called['called'] + assert called["called"] + def test_commands_web_disable_playwright(monkeypatch): """ @@ -59,16 +67,22 @@ def test_commands_web_disable_playwright(monkeypatch): self.outputs = [] self.warnings = [] self.errors = [] + def tool_output(self, msg, *a, **k): self.outputs.append(msg) + def tool_warning(self, msg, *a, **k): self.warnings.append(msg) + def tool_error(self, msg, *a, **k): self.errors.append(msg) + def read_text(self, filename, silent=False): return "" + def confirm_ask(self, *a, **k): return True + def print(self, *a, **k): pass @@ -77,18 +91,25 @@ def test_commands_web_disable_playwright(monkeypatch): def __init__(self): self.cur_messages = [] self.main_model = type("M", (), {"edit_format": "code", "name": "dummy", "info": {}}) + def get_rel_fname(self, fname): return fname + def get_inchat_relative_files(self): return [] + def abs_root_path(self, fname): return fname + def get_all_abs_files(self): return [] + def get_announcements(self): return [] + def format_chat_chunks(self): return type("Chunks", (), {"repo": [], "readonly_files": [], "chat_files": []})() + def event(self, *a, **k): pass @@ -99,6 +120,7 @@ def test_commands_web_disable_playwright(monkeypatch): class DummyScraper: def __init__(self, **kwargs): self.called = False + def scrape(self, url): self.called = True return "dummy content" From 023e93979881544ce1797193b84faa36cd173c54 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:15:17 -0700 Subject: [PATCH 064/195] style: Address flake8 errors --- aider/linter.py | 1 - aider/repo.py | 37 +++++++++++++++---------- tests/basic/test_repo.py | 9 ++++-- tests/scrape/test_playwright_disable.py | 9 ++---- 4 files changed, 31 insertions(+), 25 deletions(-) diff --git a/aider/linter.py b/aider/linter.py index 301e5d7aa..d386696e5 100644 --- a/aider/linter.py +++ b/aider/linter.py @@ -1,6 +1,5 @@ import os import re -import shlex import subprocess import sys import traceback diff --git a/aider/repo.py b/aider/repo.py index 6db4c7635..0438f2243 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -134,15 +134,16 @@ class GitRepo: Args: fnames (list, optional): List of filenames to commit. Defaults to None (commit all dirty files). - context (str, optional): Context for generating the commit message. Defaults to None. + context (str, optional): Context for generating commit message. Defaults to None. message (str, optional): Explicit commit message. Defaults to None (generate message). aider_edits (bool, optional): Whether the changes were made by Aider. Defaults to False. This affects attribution logic. - coder (Coder, optional): The Coder instance, used to access config and model info. + coder (Coder, optional): The Coder instance, used for config and model info. Defaults to None. Returns: - tuple(str, str) or None: The commit hash and commit message if successful, else None. + tuple(str, str) or None: The commit hash and commit message if successful, + else None. Attribution Logic: ------------------ @@ -154,16 +155,16 @@ class GitRepo: - Committer: The person who last applied the commit to the repository. - aider_edits=True: Changes were generated by Aider (LLM). - aider_edits=False: Commit is user-driven (e.g., /commit manually staged changes). - - Explicit Setting: A flag (--attribute-...) is set to True or False via command line - or config file. + - Explicit Setting: A flag (--attribute-...) is set to True or False + via command line or config file. - Implicit Default: A flag is not explicitly set, defaulting to None in args, which is interpreted as True unless overridden by other logic. Flags: - --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 the commit message. + - --attribute-co-authored-by: Add + "Co-authored-by: aider () " trailer to commit message. Behavior Summary: @@ -171,8 +172,8 @@ class GitRepo: - If --attribute-co-authored-by=True: - Co-authored-by trailer IS ADDED. - Author/Committer names are NOT modified by default (co-authored-by takes precedence). - - EXCEPTION: If --attribute-author/--attribute-committer is EXPLICITLY True, - the respective name IS modified (explicit overrides precedence). + - EXCEPTION: If --attribute-author/--attribute-committer is EXPLICITLY True, the + respective name IS modified (explicit overrides precedence). - If --attribute-co-authored-by=False: - Co-authored-by trailer is NOT added. - Author/Committer names ARE modified by default (implicit True). @@ -186,11 +187,15 @@ class GitRepo: - EXCEPTION: If --attribute-committer is EXPLICITLY False, the name is NOT modified. Resulting Scenarios: - - Standard AI edit (defaults): Co-authored-by=False -> Author=You(aider), Committer=You(aider) - - AI edit with Co-authored-by (default): Co-authored-by=True -> Author=You, Committer=You, Trailer added - - AI edit with Co-authored-by + Explicit Author: Co-authored-by=True, --attribute-author -> Author=You(aider), Committer=You, Trailer added + - Standard AI edit (defaults): Co-authored-by=False -> Author=You(aider), + Committer=You(aider) + - AI edit with Co-authored-by (default): Co-authored-by=True -> Author=You, + Committer=You, Trailer added + - AI edit with Co-authored-by + Explicit Author: Co-authored-by=True, + --attribute-author -> Author=You(aider), Committer=You, Trailer added - User commit (defaults): aider_edits=False -> Author=You, Committer=You(aider) - - User commit with explicit no-committer: aider_edits=False, --no-attribute-committer -> Author=You, Committer=You + - User commit with explicit no-committer: aider_edits=False, + --no-attribute-committer -> Author=You, Committer=You """ if not fnames and not self.repo.is_dirty(): return @@ -244,13 +249,15 @@ class GitRepo: # Determine if author/committer names should be modified # Author modification applies only to aider edits. - # It's used if effective_author is True AND (co-authored-by is False OR author was explicitly set). + # It's used if effective_author is True AND + # (co-authored-by is False OR author was explicitly set). use_attribute_author = ( aider_edits and effective_author and (not attribute_co_authored_by or author_explicit) ) # Committer modification applies regardless of aider_edits (based on tests). - # It's used if effective_committer is True AND (it's not an aider edit with co-authored-by OR committer was explicitly set). + # It's used if effective_committer is True AND + # (it's not an aider edit with co-authored-by OR committer was explicitly set). use_attribute_committer = effective_committer and ( not (aider_edits and attribute_co_authored_by) or committer_explicit ) diff --git a/tests/basic/test_repo.py b/tests/basic/test_repo.py index a07124810..0f1e7ed0e 100644 --- a/tests/basic/test_repo.py +++ b/tests/basic/test_repo.py @@ -294,7 +294,8 @@ class TestRepo(unittest.TestCase): @unittest.skipIf(platform.system() == "Windows", "Git env var behavior differs on Windows") def test_commit_co_authored_by_with_explicit_name_modification(self): - # Test scenario where Co-authored-by is true AND author/committer modification are explicitly True + # Test scenario where Co-authored-by is true AND + # author/committer modification are explicitly True with GitTemporaryDirectory(): # Setup repo... # new repo @@ -308,7 +309,8 @@ class TestRepo(unittest.TestCase): raw_repo.git.add(str(fname)) raw_repo.git.commit("-m", "initial commit") - # Mock coder args: Co-authored-by enabled, author/committer modification explicitly enabled + # Mock coder args: Co-authored-by enabled, + # author/committer modification explicitly enabled mock_coder = MagicMock() mock_coder.args.attribute_co_authored_by = True mock_coder.args.attribute_author = True # Explicitly enable @@ -334,7 +336,8 @@ class TestRepo(unittest.TestCase): "Co-authored-by: aider (gpt-test-combo) ", commit.message ) self.assertEqual(commit.message.splitlines()[0], "Aider combo edit") - # When co-authored-by is true BUT author/committer are explicit True, modification SHOULD happen + # When co-authored-by is true BUT author/committer are explicit True, + # modification SHOULD happen self.assertEqual( commit.author.name, "Test User (aider)", diff --git a/tests/scrape/test_playwright_disable.py b/tests/scrape/test_playwright_disable.py index 215422cc2..7a851a4e7 100644 --- a/tests/scrape/test_playwright_disable.py +++ b/tests/scrape/test_playwright_disable.py @@ -1,8 +1,4 @@ -from unittest.mock import MagicMock - -import pytest - -from aider.scrape import Scraper, install_playwright +from aider.scrape import Scraper class DummyIO: @@ -23,7 +19,8 @@ class DummyIO: def test_scraper_disable_playwright_flag(monkeypatch): io = DummyIO() - # Simulate that playwright is not available (disable_playwright just means playwright_available=False) + # Simulate that playwright is not available + # (disable_playwright just means playwright_available=False) scraper = Scraper(print_error=io.tool_error, playwright_available=False) # Patch scrape_with_httpx to check it is called called = {} From b6a32d8682fbcd3f8c1c940f27b919c251503a60 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 15:28:45 -0700 Subject: [PATCH 065/195] copy --- HISTORY.md | 3 +- aider/website/HISTORY.md | 3 +- aider/website/assets/sample-analytics.jsonl | 338 ++++++++++---------- aider/website/docs/faq.md | 8 +- 4 files changed, 177 insertions(+), 175 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index c8dbf24db..7ae35fedb 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -6,6 +6,7 @@ - Added support for `gemini-2.5-pro-preview-05-06` models. - Added repo-map support for OCaml and OCaml interface files, by Andrey Popp. - Added a spinner animation while waiting for the LLM to start streaming its response. +- Updated the spinner animation to a Knight Rider style. - Introduced `--attribute-co-authored-by` option to add co-author trailer to commit messages, by Andrew Grigorev. - Updated Gemini model aliases (e.g., `gemini`, `gemini-2.5-pro`) to point to the `05-06` preview versions. - Marked Gemini 2.5 Pro preview models as `overeager` by default. @@ -25,7 +26,7 @@ - Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. - Improved display of filenames in the prompt header using rich Text formatting. - Enabled `reasoning_effort` for Gemini 2.5 Flash models. - - Aider wrote 54% of the code in this release. + - Aider wrote 53% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 29a123951..e1a3345ac 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -30,6 +30,7 @@ cog.out(text) - Added support for `gemini-2.5-pro-preview-05-06` models. - Added repo-map support for OCaml and OCaml interface files, by Andrey Popp. - Added a spinner animation while waiting for the LLM to start streaming its response. +- Updated the spinner animation to a Knight Rider style. - Introduced `--attribute-co-authored-by` option to add co-author trailer to commit messages, by Andrew Grigorev. - Updated Gemini model aliases (e.g., `gemini`, `gemini-2.5-pro`) to point to the `05-06` preview versions. - Marked Gemini 2.5 Pro preview models as `overeager` by default. @@ -49,7 +50,7 @@ cog.out(text) - Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. - Improved display of filenames in the prompt header using rich Text formatting. - Enabled `reasoning_effort` for Gemini 2.5 Flash models. - - Aider wrote 54% of the code in this release. + - Aider wrote 53% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index d61cf093f..9647720d6 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,172 +1,3 @@ -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657288} -{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657291} -{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657297} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657300} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657302} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657302} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657302} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 605, "completion_tokens": 362, "total_tokens": 967, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657321} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657321} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657326} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657328} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657328} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657328} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657334} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657340} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657342} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657342} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657342} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 605, "completion_tokens": 300, "total_tokens": 905, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657355} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657355} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657389} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657391} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657391} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657391} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657397} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657459} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657462} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657462} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657462} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657473} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657474} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657476} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657476} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657476} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 605, "completion_tokens": 40, "total_tokens": 645, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657481} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657481} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657535} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657537} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657537} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657537} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 605, "completion_tokens": 214, "total_tokens": 819, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657541} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746657541} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746658868} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746658868} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746658868} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746658868} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746658873} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746658947} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746658947} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659079} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 40797, "completion_tokens": 630, "total_tokens": 41427, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659096} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659220} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 41689, "completion_tokens": 808, "total_tokens": 42497, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659238} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659274} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659277} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659277} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659277} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659279} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659294} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659296} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659296} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659296} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659297} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659303} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659305} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659305} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659305} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659310} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659316} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746659316} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746660773} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746660774} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746660774} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746660777} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661684} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661684} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661684} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661684} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 6018, "completion_tokens": 231, "total_tokens": 6249, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661749} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661749} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661993} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661993} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661993} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746661998} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662225} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662225} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662225} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662226} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662230} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662273} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662273} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 14331, "completion_tokens": 2421, "total_tokens": 16752, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662373} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662390} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 17412, "completion_tokens": 2765, "total_tokens": 20177, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662420} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662480} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662488} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662513} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662513} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "ask", "prompt_tokens": 23117, "completion_tokens": 1083, "total_tokens": 24200, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662558} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662591} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662601} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662606} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662610} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662701} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662833} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662833} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662833} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662833} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662878} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662879} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662879} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662879} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 14673, "completion_tokens": 281, "total_tokens": 14954, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662896} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662896} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662898} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662900} -{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662909} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746662959} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 16375, "completion_tokens": 343, "total_tokens": 16718, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663063} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663153} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663154} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663154} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663154} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663170} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663207} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663207} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663212} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663213} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663213} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663216} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 11173, "completion_tokens": 947, "total_tokens": 12120, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663253} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663802} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663926} -{"event": "repo", "properties": {"num_files": 617}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663926} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663926} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746663929} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746664012} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746664482} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746664482} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746664482} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746664482} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 19959, "completion_tokens": 176, "total_tokens": 20135, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746664554} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746664554} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666729} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666730} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666730} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666733} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666821} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666822} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666822} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666825} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666956} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666956} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666956} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.0-flash", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.0-flash", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666956} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666960} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666962} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666962} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666962} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666966} -{"event": "model warning", "properties": {"main_model": "gemini/REDACTED", "weak_model": "gemini/REDACTED", "editor_model": "gemini/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666968} -{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666988} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666997} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666997} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666997} -{"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": 1746666997} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666999} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746666999} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667009} {"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667011} {"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667027} {"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667033} @@ -998,3 +829,172 @@ {"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741206} {"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741208} {"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741243} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741377} +{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741377} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741384} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741385} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741385} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741385} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741388} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741388} +{"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": "ask", "prompt_tokens": 4335, "completion_tokens": 1387, "total_tokens": 5722, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741410} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741467} +{"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": "ask", "prompt_tokens": 6505, "completion_tokens": 1110, "total_tokens": 7615, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741488} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741511} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741511} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741532} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741532} +{"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": "ask", "prompt_tokens": 7902, "completion_tokens": 920, "total_tokens": 8822, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741538} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741601} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741601} +{"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": "ask", "prompt_tokens": 8862, "completion_tokens": 194, "total_tokens": 9056, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741609} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741671} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741671} +{"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": "ask", "prompt_tokens": 9155, "completion_tokens": 462, "total_tokens": 9617, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741683} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741695} +{"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": 9895, "completion_tokens": 88, "total_tokens": 9983, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741700} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741775} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741804} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741804} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741804} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741805} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741809} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741816} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741829} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741829} +{"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": "ask", "prompt_tokens": 16879, "completion_tokens": 935, "total_tokens": 17814, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741873} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741906} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741908} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741912} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741912} +{"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": "ask", "prompt_tokens": 12536, "completion_tokens": 933, "total_tokens": 13469, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741942} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742038} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742115} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742120} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742120} +{"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": "ask", "prompt_tokens": 11006, "completion_tokens": 326, "total_tokens": 11332, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742135} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742147} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742455} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742470} +{"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": 13513, "completion_tokens": 112, "total_tokens": 13625, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742482} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742487} +{"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": 22061, "completion_tokens": 1859, "total_tokens": 23920, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742513} +{"event": "command_reset", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742530} +{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742532} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742538} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742603} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742689} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} +{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742874} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742915} +{"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": 8099, "completion_tokens": 195, "total_tokens": 8294, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742987} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743044} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743046} +{"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": 35736, "completion_tokens": 428, "total_tokens": 36164, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743115} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743115} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index fe10d0dc6..dd3db2165 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,10 +264,10 @@ tr:hover { background-color: #f5f5f5; } - - - - + + + + From d3931f67cabcd68732294c5085cf8d022c977012 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:32:50 -0700 Subject: [PATCH 066/195] feat: Enhance spinner with head and trailing effect --- aider/utils.py | 100 +++++++++++++++++++++++++++---------------------- 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index ccd5fc334..c1bf9ca5f 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -258,27 +258,40 @@ class Spinner: self.visible = False self.is_tty = sys.stdout.isatty() - self.scanner_width = 7 # Width of the scanning area (e.g., 7 for "[---■--]") + # -------------------------------------------------------------- + # Spinner configuration + # -------------------------------------------------------------- + # Logical width of the animation area inside the brackets + self.scanner_width = 7 self.scanner_pos = 0 - self.scanner_dir = 1 if self.scanner_width > 1 else 0 # Direction of scanner movement + self.scanner_dir = 1 if self.scanner_width > 1 else 0 # 1 → right, -1 → left - # Attempt to use Unicode characters for the scanner, fallback to ASCII - self.scanner_char = "#" # ASCII fallback - self.trail_char = "-" # ASCII fallback + # Character palette – will be upgraded to Unicode if possible + self.scanner_head_char = "#" # One char per head position + self.trail_active_char = "=" # Recently-visited positions + self.trail_empty_char = "-" # Background + + # Visual lengths (number of logical positions) + self.scanner_head_length = 2 # "≡≡" + self.trail_active_length = 2 # "══" + + # Upgrade to Unicode glyphs when the terminal supports them if self.is_tty: try: - # Test print Unicode chars and erase them to check encoding support - sys.stdout.write("■─") + sys.stdout.write("≡═─") sys.stdout.flush() - sys.stdout.write("\b\b \b\b") # Backspace, write spaces, backspace + sys.stdout.write("\b\b\b \b\b\b") sys.stdout.flush() - self.scanner_char = "≡" # Unicode - self.trail_char = "─" # Unicode + self.scanner_head_char = "≡" + self.trail_active_char = "═" + self.trail_empty_char = "─" except UnicodeEncodeError: - pass # Stick to ASCII fallbacks - except Exception: # Catch other potential IO errors on strange terminals pass - self.animation_len = self.scanner_width + 2 # For brackets like "[]" + except Exception: + pass + + # Cached length of the animation segment (inside the []) + self.animation_len = self.scanner_width + 2 def step(self): if not self.is_tty: @@ -296,45 +309,42 @@ class Spinner: if not self.visible: return - frame_chars = [self.trail_char] * self.scanner_width - # Ensure scanner_pos is within bounds for frame assignment - current_pos_in_frame = max(0, min(self.scanner_pos, self.scanner_width - 1)) + # Start with an empty frame + frame_chars = [self.trail_empty_char] * self.scanner_width - if self.scanner_width > 0: # Only place char if width is positive - frame_chars[current_pos_in_frame] = self.scanner_char + # Place the 2-character head + head_start = max(0, min(self.scanner_pos, self.scanner_width - self.scanner_head_length)) + head_end = head_start + self.scanner_head_length - 1 + for i in range(self.scanner_head_length): + pos = head_start + i + if 0 <= pos < self.scanner_width: + frame_chars[pos] = self.scanner_head_char - animation_content = "".join(frame_chars) # Content inside brackets, e.g., "---■--" - animation_segment = f"[{animation_content}]" # Full animation part, e.g., "[---■--]" + # Add the active trail directly behind the head + for i in range(1, self.trail_active_length + 1): + if self.scanner_dir > 0: # moving right → trail to the left + pos = head_start - i + else: # moving left → trail to the right + pos = head_end + i + if 0 <= pos < self.scanner_width and frame_chars[pos] == self.trail_empty_char: + frame_chars[pos] = self.trail_active_char + + animation_content = "".join(frame_chars) + animation_segment = f"[{animation_content}]" - # Print the entire line to display it full_line_output = f"\r{self.text} {animation_segment}" sys.stdout.write(full_line_output) + sys.stdout.flush() - # Now, calculate backspaces to position cursor on the scanner_char - # Only if scanner_char was actually placed (i.e., scanner_width > 0) - if self.scanner_width > 0: - # Number of characters in animation_content *after* the scanner_char - # (self.scanner_width - 1) is the last index of animation_content. - # So, (self.scanner_width - 1) - current_pos_in_frame gives count of chars after. - chars_in_content_after_scanner = (self.scanner_width - 1) - current_pos_in_frame - - # We also need to backspace over the closing bracket ']' - num_backspaces = chars_in_content_after_scanner + 1 - - num_backspaces = max(0, num_backspaces) + 1 # Ensure not negative - sys.stdout.write("\b" * num_backspaces) - - sys.stdout.flush() # Flush after all writes for this frame - - # Update scanner position for the next frame - if self.scanner_width > 1: + # Advance for next frame + if self.scanner_width > self.scanner_head_length: self.scanner_pos += self.scanner_dir - if self.scanner_pos >= self.scanner_width - 1: # Reached or passed the end - self.scanner_pos = self.scanner_width - 1 # Pin to end - self.scanner_dir = -1 # Reverse direction - elif self.scanner_pos <= 0: # Reached or passed the beginning - self.scanner_pos = 0 # Pin to start - self.scanner_dir = 1 # Reverse direction + if self.scanner_dir > 0 and self.scanner_pos >= self.scanner_width - self.scanner_head_length: + self.scanner_pos = self.scanner_width - self.scanner_head_length + self.scanner_dir = -1 + elif self.scanner_dir < 0 and self.scanner_pos <= 0: + self.scanner_pos = 0 + self.scanner_dir = 1 def end(self): if self.visible and self.is_tty: From 540b2519c29ca0d100ce1547c66fad52e273f1cc Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:32:56 -0700 Subject: [PATCH 067/195] style: Run linter --- aider/utils.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index c1bf9ca5f..844bceee1 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -267,13 +267,13 @@ class Spinner: self.scanner_dir = 1 if self.scanner_width > 1 else 0 # 1 → right, -1 → left # Character palette – will be upgraded to Unicode if possible - self.scanner_head_char = "#" # One char per head position - self.trail_active_char = "=" # Recently-visited positions - self.trail_empty_char = "-" # Background + self.scanner_head_char = "#" # One char per head position + self.trail_active_char = "=" # Recently-visited positions + self.trail_empty_char = "-" # Background # Visual lengths (number of logical positions) - self.scanner_head_length = 2 # "≡≡" - self.trail_active_length = 2 # "══" + self.scanner_head_length = 2 # "≡≡" + self.trail_active_length = 2 # "══" # Upgrade to Unicode glyphs when the terminal supports them if self.is_tty: @@ -322,9 +322,9 @@ class Spinner: # Add the active trail directly behind the head for i in range(1, self.trail_active_length + 1): - if self.scanner_dir > 0: # moving right → trail to the left + if self.scanner_dir > 0: # moving right → trail to the left pos = head_start - i - else: # moving left → trail to the right + else: # moving left → trail to the right pos = head_end + i if 0 <= pos < self.scanner_width and frame_chars[pos] == self.trail_empty_char: frame_chars[pos] = self.trail_active_char @@ -339,7 +339,10 @@ class Spinner: # Advance for next frame if self.scanner_width > self.scanner_head_length: self.scanner_pos += self.scanner_dir - if self.scanner_dir > 0 and self.scanner_pos >= self.scanner_width - self.scanner_head_length: + if ( + self.scanner_dir > 0 + and self.scanner_pos >= self.scanner_width - self.scanner_head_length + ): self.scanner_pos = self.scanner_width - self.scanner_head_length self.scanner_dir = -1 elif self.scanner_dir < 0 and self.scanner_pos <= 0: From 80f78ee85dfd3aef05a831e20c343257559c42af Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 15:33:17 -0700 Subject: [PATCH 068/195] feat: add waiting module --- aider/waiting.py | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 aider/waiting.py diff --git a/aider/waiting.py b/aider/waiting.py new file mode 100644 index 000000000..e69de29bb From 21a05ead4ef637df0cc883d4780b92bd4bccafde Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:33:19 -0700 Subject: [PATCH 069/195] refactor: Extract WaitingSpinner to its own module --- aider/mdstream.py | 26 ++++++++++------------- aider/waiting.py | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+), 15 deletions(-) diff --git a/aider/mdstream.py b/aider/mdstream.py index 8820d7261..0611a806d 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -13,7 +13,7 @@ from rich.syntax import Syntax from rich.text import Text from aider.dump import dump # noqa: F401 -from aider.utils import Spinner +from aider.waiting import WaitingSpinner _text_prefix = """ # Header @@ -117,12 +117,11 @@ class MarkdownStream: else: self.mdargs = dict() - # Defer Live creation until the first update so the Spinner can be shown. + # Defer Live creation until the first update so the spinner can be shown. self.live = None - self.spinner = Spinner("Waiting for LLM") - self._spinner_stop_event = threading.Event() - self._spinner_thread = threading.Thread(target=self._spin, daemon=True) - self._spinner_thread.start() + self.waiting_spinner = WaitingSpinner("Waiting for LLM") + self.waiting_spinner.start() + self._spinner_running = True self._live_started = False def _spin(self): @@ -159,12 +158,10 @@ class MarkdownStream: except Exception: pass # Ignore any errors during cleanup - # Ensure the spinner thread is properly shut down - if hasattr(self, "_spinner_stop_event"): - self._spinner_stop_event.set() - if hasattr(self, "_spinner_thread") and self._spinner_thread.is_alive(): + # Ensure the spinner is properly shut down + if getattr(self, "_spinner_running", False): try: - self._spinner_thread.join(timeout=0.1) + self.waiting_spinner.stop() except Exception: pass @@ -187,10 +184,9 @@ class MarkdownStream: """ # On the first call, stop the spinner and start the Live renderer if not getattr(self, "_live_started", False): - if hasattr(self, "_spinner_stop_event"): - self._spinner_stop_event.set() - if hasattr(self, "_spinner_thread"): - self._spinner_thread.join() + if getattr(self, "_spinner_running", False): + self.waiting_spinner.stop() + self._spinner_running = False self.live = Live(Text(""), refresh_per_second=1.0 / self.min_delay) self.live.start() self._live_started = True diff --git a/aider/waiting.py b/aider/waiting.py index e69de29bb..c0b121e74 100644 --- a/aider/waiting.py +++ b/aider/waiting.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python + +""" +Thread-based, killable spinner utility. + +Use it like: + + from aider.waiting import WaitingSpinner + + spinner = WaitingSpinner("Waiting for LLM") + spinner.start() + ... # long task + spinner.stop() +""" + +import threading +import time + +from aider.utils import Spinner + + +class WaitingSpinner: + """Background spinner that can be started/stopped safely.""" + + def __init__(self, text: str = "Waiting for LLM", delay: float = 0.15): + self.spinner = Spinner(text) + self.delay = delay + self._stop_event = threading.Event() + self._thread = threading.Thread(target=self._spin, daemon=True) + + def _spin(self): + while not self._stop_event.is_set(): + time.sleep(self.delay) + self.spinner.step() + self.spinner.end() + + def start(self): + """Start the spinner in a background thread.""" + if not self._thread.is_alive(): + self._thread.start() + + def stop(self): + """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) + + # Allow use as a context-manager + def __enter__(self): + self.start() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.stop() From 98dc8e5d57b6769925898e3fecbab37cd180ad46 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:33:34 -0700 Subject: [PATCH 070/195] fix: Remove unused threading import --- aider/mdstream.py | 1 - 1 file changed, 1 deletion(-) diff --git a/aider/mdstream.py b/aider/mdstream.py index 0611a806d..186ef7624 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -1,7 +1,6 @@ #!/usr/bin/env python import io -import threading import time from rich import box From cf1d58745e3f790e2b7edc3fdedd438d3c508842 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 15:38:19 -0700 Subject: [PATCH 071/195] Revert "style: Run linter" This reverts commit 540b2519c29ca0d100ce1547c66fad52e273f1cc. --- aider/utils.py | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 844bceee1..c1bf9ca5f 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -267,13 +267,13 @@ class Spinner: self.scanner_dir = 1 if self.scanner_width > 1 else 0 # 1 → right, -1 → left # Character palette – will be upgraded to Unicode if possible - self.scanner_head_char = "#" # One char per head position - self.trail_active_char = "=" # Recently-visited positions - self.trail_empty_char = "-" # Background + self.scanner_head_char = "#" # One char per head position + self.trail_active_char = "=" # Recently-visited positions + self.trail_empty_char = "-" # Background # Visual lengths (number of logical positions) - self.scanner_head_length = 2 # "≡≡" - self.trail_active_length = 2 # "══" + self.scanner_head_length = 2 # "≡≡" + self.trail_active_length = 2 # "══" # Upgrade to Unicode glyphs when the terminal supports them if self.is_tty: @@ -322,9 +322,9 @@ class Spinner: # Add the active trail directly behind the head for i in range(1, self.trail_active_length + 1): - if self.scanner_dir > 0: # moving right → trail to the left + if self.scanner_dir > 0: # moving right → trail to the left pos = head_start - i - else: # moving left → trail to the right + else: # moving left → trail to the right pos = head_end + i if 0 <= pos < self.scanner_width and frame_chars[pos] == self.trail_empty_char: frame_chars[pos] = self.trail_active_char @@ -339,10 +339,7 @@ class Spinner: # Advance for next frame if self.scanner_width > self.scanner_head_length: self.scanner_pos += self.scanner_dir - if ( - self.scanner_dir > 0 - and self.scanner_pos >= self.scanner_width - self.scanner_head_length - ): + if self.scanner_dir > 0 and self.scanner_pos >= self.scanner_width - self.scanner_head_length: self.scanner_pos = self.scanner_width - self.scanner_head_length self.scanner_dir = -1 elif self.scanner_dir < 0 and self.scanner_pos <= 0: From a1cb86dca380657fbbabf7de7ccb3eb6cae6ca50 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 15:38:34 -0700 Subject: [PATCH 072/195] Revert "feat: Enhance spinner with head and trailing effect" This reverts commit d3931f67cabcd68732294c5085cf8d022c977012. --- aider/utils.py | 100 ++++++++++++++++++++++--------------------------- 1 file changed, 45 insertions(+), 55 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index c1bf9ca5f..ccd5fc334 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -258,40 +258,27 @@ class Spinner: self.visible = False self.is_tty = sys.stdout.isatty() - # -------------------------------------------------------------- - # Spinner configuration - # -------------------------------------------------------------- - # Logical width of the animation area inside the brackets - self.scanner_width = 7 + self.scanner_width = 7 # Width of the scanning area (e.g., 7 for "[---■--]") self.scanner_pos = 0 - self.scanner_dir = 1 if self.scanner_width > 1 else 0 # 1 → right, -1 → left + self.scanner_dir = 1 if self.scanner_width > 1 else 0 # Direction of scanner movement - # Character palette – will be upgraded to Unicode if possible - self.scanner_head_char = "#" # One char per head position - self.trail_active_char = "=" # Recently-visited positions - self.trail_empty_char = "-" # Background - - # Visual lengths (number of logical positions) - self.scanner_head_length = 2 # "≡≡" - self.trail_active_length = 2 # "══" - - # Upgrade to Unicode glyphs when the terminal supports them + # Attempt to use Unicode characters for the scanner, fallback to ASCII + self.scanner_char = "#" # ASCII fallback + self.trail_char = "-" # ASCII fallback if self.is_tty: try: - sys.stdout.write("≡═─") + # Test print Unicode chars and erase them to check encoding support + sys.stdout.write("■─") sys.stdout.flush() - sys.stdout.write("\b\b\b \b\b\b") + sys.stdout.write("\b\b \b\b") # Backspace, write spaces, backspace sys.stdout.flush() - self.scanner_head_char = "≡" - self.trail_active_char = "═" - self.trail_empty_char = "─" + self.scanner_char = "≡" # Unicode + self.trail_char = "─" # Unicode except UnicodeEncodeError: + pass # Stick to ASCII fallbacks + except Exception: # Catch other potential IO errors on strange terminals pass - except Exception: - pass - - # Cached length of the animation segment (inside the []) - self.animation_len = self.scanner_width + 2 + self.animation_len = self.scanner_width + 2 # For brackets like "[]" def step(self): if not self.is_tty: @@ -309,42 +296,45 @@ class Spinner: if not self.visible: return - # Start with an empty frame - frame_chars = [self.trail_empty_char] * self.scanner_width + frame_chars = [self.trail_char] * self.scanner_width + # Ensure scanner_pos is within bounds for frame assignment + current_pos_in_frame = max(0, min(self.scanner_pos, self.scanner_width - 1)) - # Place the 2-character head - head_start = max(0, min(self.scanner_pos, self.scanner_width - self.scanner_head_length)) - head_end = head_start + self.scanner_head_length - 1 - for i in range(self.scanner_head_length): - pos = head_start + i - if 0 <= pos < self.scanner_width: - frame_chars[pos] = self.scanner_head_char + if self.scanner_width > 0: # Only place char if width is positive + frame_chars[current_pos_in_frame] = self.scanner_char - # Add the active trail directly behind the head - for i in range(1, self.trail_active_length + 1): - if self.scanner_dir > 0: # moving right → trail to the left - pos = head_start - i - else: # moving left → trail to the right - pos = head_end + i - if 0 <= pos < self.scanner_width and frame_chars[pos] == self.trail_empty_char: - frame_chars[pos] = self.trail_active_char - - animation_content = "".join(frame_chars) - animation_segment = f"[{animation_content}]" + animation_content = "".join(frame_chars) # Content inside brackets, e.g., "---■--" + animation_segment = f"[{animation_content}]" # Full animation part, e.g., "[---■--]" + # Print the entire line to display it full_line_output = f"\r{self.text} {animation_segment}" sys.stdout.write(full_line_output) - sys.stdout.flush() - # Advance for next frame - if self.scanner_width > self.scanner_head_length: + # Now, calculate backspaces to position cursor on the scanner_char + # Only if scanner_char was actually placed (i.e., scanner_width > 0) + if self.scanner_width > 0: + # Number of characters in animation_content *after* the scanner_char + # (self.scanner_width - 1) is the last index of animation_content. + # So, (self.scanner_width - 1) - current_pos_in_frame gives count of chars after. + chars_in_content_after_scanner = (self.scanner_width - 1) - current_pos_in_frame + + # We also need to backspace over the closing bracket ']' + num_backspaces = chars_in_content_after_scanner + 1 + + num_backspaces = max(0, num_backspaces) + 1 # Ensure not negative + sys.stdout.write("\b" * num_backspaces) + + sys.stdout.flush() # Flush after all writes for this frame + + # Update scanner position for the next frame + if self.scanner_width > 1: self.scanner_pos += self.scanner_dir - if self.scanner_dir > 0 and self.scanner_pos >= self.scanner_width - self.scanner_head_length: - self.scanner_pos = self.scanner_width - self.scanner_head_length - self.scanner_dir = -1 - elif self.scanner_dir < 0 and self.scanner_pos <= 0: - self.scanner_pos = 0 - self.scanner_dir = 1 + if self.scanner_pos >= self.scanner_width - 1: # Reached or passed the end + self.scanner_pos = self.scanner_width - 1 # Pin to end + self.scanner_dir = -1 # Reverse direction + elif self.scanner_pos <= 0: # Reached or passed the beginning + self.scanner_pos = 0 # Pin to start + self.scanner_dir = 1 # Reverse direction def end(self): if self.visible and self.is_tty: From f1121e3b7cd2e1cff1108ae0e9c46d7449bb2377 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:41:43 -0700 Subject: [PATCH 073/195] feat: add waiting spinner for non-streaming pretty mode --- aider/coders/base_coder.py | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index b29347352..d356330e3 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -44,7 +44,13 @@ from aider.reasoning_tags import ( from aider.repo import ANY_GIT_ERROR, GitRepo from aider.repomap import RepoMap from aider.run_cmd import run_cmd -from aider.utils import format_content, format_messages, format_tokens, is_image_file +from aider.utils import ( + format_content, + format_messages, + format_tokens, + is_image_file, +) +from aider.waiting import WaitingSpinner from ..dump import dump # noqa: F401 from .chat_chunks import ChatChunks @@ -571,6 +577,15 @@ class Coder: if not self.pretty: return False + def _stop_waiting_spinner(self): + """Stop and clear the waiting spinner if it is running.""" + spinner = getattr(self, "waiting_spinner", None) + if spinner: + try: + spinner.stop() + finally: + self.waiting_spinner = None + # only show pretty output if fences are the normal triple-backtick if self.fence[0][0] != "`": return False @@ -1410,6 +1425,10 @@ class Coder: self.multi_response_content = "" if self.show_pretty() and self.stream: self.mdstream = self.io.get_assistant_mdstream() + elif self.show_pretty(): # pretty output but NOT streaming + self.waiting_spinner = WaitingSpinner("Waiting for LLM") + self.waiting_spinner.start() + self.mdstream = None else: self.mdstream = None @@ -1482,6 +1501,9 @@ class Coder: self.live_incremental_response(True) self.mdstream = None + # Ensure any waiting spinner is stopped + self._stop_waiting_spinner() + self.partial_response_content = self.get_multi_response_content_in_progress(True) self.remove_reasoning_content() self.multi_response_content = "" @@ -1798,6 +1820,9 @@ class Coder: self.io.ai_output(json.dumps(args, indent=4)) def show_send_output(self, completion): + # Stop spinner once we have a response + self._stop_waiting_spinner() + if self.verbose: print(completion) From ede3061fe0da4bfda80b80119b64582c43e91afe Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:42:30 -0700 Subject: [PATCH 074/195] style: Format imports in base_coder.py --- aider/coders/base_coder.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index d356330e3..c592b7ebd 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -44,12 +44,7 @@ from aider.reasoning_tags import ( from aider.repo import ANY_GIT_ERROR, GitRepo from aider.repomap import RepoMap from aider.run_cmd import run_cmd -from aider.utils import ( - format_content, - format_messages, - format_tokens, - is_image_file, -) +from aider.utils import format_content, format_messages, format_tokens, is_image_file from aider.waiting import WaitingSpinner from ..dump import dump # noqa: F401 From 6351964bcdae45b811757f9c3e5a388daebb8c57 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:43:03 -0700 Subject: [PATCH 075/195] fix: Make _stop_waiting_spinner a method of Coder --- aider/coders/base_coder.py | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index c592b7ebd..f4a8cb2e4 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -572,14 +572,6 @@ class Coder: if not self.pretty: return False - def _stop_waiting_spinner(self): - """Stop and clear the waiting spinner if it is running.""" - spinner = getattr(self, "waiting_spinner", None) - if spinner: - try: - spinner.stop() - finally: - self.waiting_spinner = None # only show pretty output if fences are the normal triple-backtick if self.fence[0][0] != "`": @@ -587,6 +579,15 @@ class Coder: return True + def _stop_waiting_spinner(self): + """Stop and clear the waiting spinner if it is running.""" + spinner = getattr(self, "waiting_spinner", None) + if spinner: + try: + spinner.stop() + finally: + self.waiting_spinner = None + def get_abs_fnames_content(self): for fname in list(self.abs_fnames): content = self.io.read_text(fname) From e6a35be5b7ea68dcecdaa3ea750752698d6218db Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:43:52 -0700 Subject: [PATCH 076/195] style: Run linter --- aider/coders/base_coder.py | 1 - 1 file changed, 1 deletion(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index f4a8cb2e4..5a04da7ad 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -572,7 +572,6 @@ class Coder: if not self.pretty: return False - # only show pretty output if fences are the normal triple-backtick if self.fence[0][0] != "`": return False From 18f702b95ae05db1bd7be45b0daff4be0db6e9ae Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:48:40 -0700 Subject: [PATCH 077/195] refactor: Simplify spinner animation by pre-rendering frames --- aider/utils.py | 129 ++++++++++++++++++++++--------------------------- 1 file changed, 58 insertions(+), 71 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index ccd5fc334..2f49c6170 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -251,95 +251,82 @@ def run_install(cmd): class Spinner: - def __init__(self, text): + """ + 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. + """ + + def __init__(self, text: str, width: int = 7): self.text = text + self.width = max(1, width) self.start_time = time.time() - self.last_update = 0 + self.last_update = 0.0 self.visible = False self.is_tty = sys.stdout.isatty() - self.scanner_width = 7 # Width of the scanning area (e.g., 7 for "[---■--]") - self.scanner_pos = 0 - self.scanner_dir = 1 if self.scanner_width > 1 else 0 # Direction of scanner movement + # Decide which characters to use + scan_char, trail_char = "≡", "─" + if not self._supports_unicode(): + scan_char, trail_char = "#", "-" - # Attempt to use Unicode characters for the scanner, fallback to ASCII - self.scanner_char = "#" # ASCII fallback - self.trail_char = "-" # ASCII fallback - if self.is_tty: - try: - # Test print Unicode chars and erase them to check encoding support - sys.stdout.write("■─") - sys.stdout.flush() - sys.stdout.write("\b\b \b\b") # Backspace, write spaces, backspace - sys.stdout.flush() - self.scanner_char = "≡" # Unicode - self.trail_char = "─" # Unicode - except UnicodeEncodeError: - pass # Stick to ASCII fallbacks - except Exception: # Catch other potential IO errors on strange terminals - pass - self.animation_len = self.scanner_width + 2 # For brackets like "[]" + # Build the animation frames + forward = [ + f"[{trail_char * pos}{scan_char}{trail_char * (self.width - 1 - pos)}]" + for pos in range(self.width) + ] + self.frames = forward + forward[-2:0:-1] # bounce back + self.frame_idx = 0 + self.scan_char = scan_char + self.animation_len = len(self.frames[0]) - def step(self): + def _supports_unicode(self) -> bool: + if not self.is_tty: + return False + try: + sys.stdout.write("∎\b \b") + 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) + return frame + + def step(self) -> None: if not self.is_tty: return - current_time = time.time() - if not self.visible and current_time - self.start_time >= 0.5: + now = time.time() + if not self.visible and now - self.start_time >= 0.5: self.visible = True - self._step() - elif self.visible and current_time - self.last_update >= 0.1: - self._step() - self.last_update = current_time + self.last_update = 0.0 - def _step(self): - if not self.visible: + if not self.visible or now - self.last_update < 0.1: return - frame_chars = [self.trail_char] * self.scanner_width - # Ensure scanner_pos is within bounds for frame assignment - current_pos_in_frame = max(0, min(self.scanner_pos, self.scanner_width - 1)) + self.last_update = now + frame = self._next_frame() - if self.scanner_width > 0: # Only place char if width is positive - frame_chars[current_pos_in_frame] = self.scanner_char + sys.stdout.write(f"\r{self.text} {frame}") - animation_content = "".join(frame_chars) # Content inside brackets, e.g., "---■--" - animation_segment = f"[{animation_content}]" # Full animation part, e.g., "[---■--]" + # Backspace cursor to the scanner character + pos_in_content = frame.find(self.scan_char) - 1 # exclude '[' + chars_after_scanner = (self.width - 1) - pos_in_content + num_backspaces = max(0, chars_after_scanner + 2) # +']' and extra + sys.stdout.write("\b" * num_backspaces) + sys.stdout.flush() - # Print the entire line to display it - full_line_output = f"\r{self.text} {animation_segment}" - sys.stdout.write(full_line_output) - - # Now, calculate backspaces to position cursor on the scanner_char - # Only if scanner_char was actually placed (i.e., scanner_width > 0) - if self.scanner_width > 0: - # Number of characters in animation_content *after* the scanner_char - # (self.scanner_width - 1) is the last index of animation_content. - # So, (self.scanner_width - 1) - current_pos_in_frame gives count of chars after. - chars_in_content_after_scanner = (self.scanner_width - 1) - current_pos_in_frame - - # We also need to backspace over the closing bracket ']' - num_backspaces = chars_in_content_after_scanner + 1 - - num_backspaces = max(0, num_backspaces) + 1 # Ensure not negative - sys.stdout.write("\b" * num_backspaces) - - sys.stdout.flush() # Flush after all writes for this frame - - # Update scanner position for the next frame - if self.scanner_width > 1: - self.scanner_pos += self.scanner_dir - if self.scanner_pos >= self.scanner_width - 1: # Reached or passed the end - self.scanner_pos = self.scanner_width - 1 # Pin to end - self.scanner_dir = -1 # Reverse direction - elif self.scanner_pos <= 0: # Reached or passed the beginning - self.scanner_pos = 0 # Pin to start - self.scanner_dir = 1 # Reverse direction - - def end(self): + def end(self) -> None: if self.visible and self.is_tty: - clear_len = len(self.text) + 1 + self.animation_len # text + space + animation segment - print("\r" + " " * clear_len + "\r", end="", flush=True) # Clear line and reset cursor + clear_len = len(self.text) + 1 + self.animation_len + sys.stdout.write("\r" + " " * clear_len + "\r") + sys.stdout.flush() self.visible = False From 5bb891b2bbdce62746b52f909b50c299f347a062 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:51:37 -0700 Subject: [PATCH 078/195] refactor: Use pre-defined ASCII frames for spinner animation --- aider/utils.py | 35 +++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 2f49c6170..0ec5ad5cc 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -260,26 +260,37 @@ class Spinner: def __init__(self, text: str, width: int = 7): self.text = text - self.width = max(1, width) self.start_time = time.time() self.last_update = 0.0 self.visible = False self.is_tty = sys.stdout.isatty() - # Decide which characters to use - scan_char, trail_char = "≡", "─" - if not self._supports_unicode(): - scan_char, trail_char = "#", "-" + # Pre-render the animation frames using pure ASCII so they will + # always display, even on very limited terminals. + ascii_forward = """ +[#------] +[-#-----] +[--#----] +[---#---] +[----#--] +[-----#-] +[------#] +""".strip().splitlines() - # Build the animation frames - forward = [ - f"[{trail_char * pos}{scan_char}{trail_char * (self.width - 1 - pos)}]" - for pos in range(self.width) - ] - self.frames = forward + forward[-2:0:-1] # bounce back + # If unicode is supported, swap the ASCII chars for nicer glyphs. + if self._supports_unicode(): + scan_char, trail_char = "≡", "─" + forward = [f.replace("#", scan_char).replace("-", trail_char) for f in ascii_forward] + else: + scan_char, trail_char = "#", "-" + forward = ascii_forward + + # Bounce the scanner back and forth. + self.frames = forward + forward[-2:0:-1] self.frame_idx = 0 self.scan_char = scan_char - self.animation_len = len(self.frames[0]) + self.width = len(forward[0]) - 2 # number of chars between the brackets + self.animation_len = len(forward[0]) def _supports_unicode(self) -> bool: if not self.is_tty: From 3a5a46253df244b5c0d2ff05ddcb511c04077805 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 15:57:56 -0700 Subject: [PATCH 079/195] feat: redesign spinner animation with tail --- aider/utils.py | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 0ec5ad5cc..b8b1e7b15 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -267,36 +267,43 @@ class Spinner: # Pre-render the animation frames using pure ASCII so they will # always display, even on very limited terminals. - ascii_forward = """ -[#------] -[-#-----] -[--#----] -[---#---] -[----#--] -[-----#-] -[------#] + ascii_frames = """ +[#=-----] +[=#-----] +[-=#----] +[--=#---] +[---=#--] +[----=#-] +[-----=#] +[-----#=] +[----#=-] +[---#=--] +[---#=--] +[---#=--] +[--#=---] +[-#=----] """.strip().splitlines() # If unicode is supported, swap the ASCII chars for nicer glyphs. if self._supports_unicode(): - scan_char, trail_char = "≡", "─" - forward = [f.replace("#", scan_char).replace("-", trail_char) for f in ascii_forward] + scan_char, tail_char, trail_char = "≡", "=", "─" + frames = [f.replace("#", scan_char).replace("-", trail_char) for f in ascii_frames] else: - scan_char, trail_char = "#", "-" - forward = ascii_forward + scan_char, tail_char, trail_char = "#", "=", "-" + frames = ascii_frames # Bounce the scanner back and forth. - self.frames = forward + forward[-2:0:-1] + self.frames = frames self.frame_idx = 0 self.scan_char = scan_char - self.width = len(forward[0]) - 2 # number of chars between the brackets - self.animation_len = len(forward[0]) + self.width = len(frames[0]) - 2 # number of chars between the brackets + self.animation_len = len(frames[0]) def _supports_unicode(self) -> bool: if not self.is_tty: return False try: - sys.stdout.write("∎\b \b") + sys.stdout.write("≡\b─\b") sys.stdout.flush() return True except UnicodeEncodeError: From 01592afac3ae774923673a1b8bc2873e05f04c6d Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 15:58:04 -0700 Subject: [PATCH 080/195] fix: Remove unused variables in Spinner --- aider/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index b8b1e7b15..eb99d6e3b 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -286,10 +286,10 @@ class Spinner: # If unicode is supported, swap the ASCII chars for nicer glyphs. if self._supports_unicode(): - scan_char, tail_char, trail_char = "≡", "=", "─" + scan_char, _, trail_char = "≡", "=", "─" frames = [f.replace("#", scan_char).replace("-", trail_char) for f in ascii_frames] else: - scan_char, tail_char, trail_char = "#", "=", "-" + scan_char, _, _ = "#", "=", "-" frames = ascii_frames # Bounce the scanner back and forth. From 0864a7ca76a2f181b6efe24bfd870c7fd186d951 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 16:00:53 -0700 Subject: [PATCH 081/195] refactor: Prune spinner animation frames and char assignments --- aider/utils.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index eb99d6e3b..aff5cef86 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -278,18 +278,16 @@ class Spinner: [-----#=] [----#=-] [---#=--] -[---#=--] -[---#=--] [--#=---] [-#=----] """.strip().splitlines() # If unicode is supported, swap the ASCII chars for nicer glyphs. if self._supports_unicode(): - scan_char, _, trail_char = "≡", "=", "─" + scan_char, trail_char = "≡", "─" frames = [f.replace("#", scan_char).replace("-", trail_char) for f in ascii_frames] else: - scan_char, _, _ = "#", "=", "-" + scan_char, _ = "#", "-" frames = ascii_frames # Bounce the scanner back and forth. From befff1f22e4ead3ba68685f2507dbf9f64b9f951 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 16:06:44 -0700 Subject: [PATCH 082/195] refactor: Centralize spinner logic in BaseCoder --- aider/coders/base_coder.py | 11 +++++++---- aider/mdstream.py | 21 +-------------------- 2 files changed, 8 insertions(+), 24 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 5a04da7ad..f68e3bead 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1418,12 +1418,13 @@ class Coder: utils.show_messages(messages, functions=self.functions) self.multi_response_content = "" - if self.show_pretty() and self.stream: - self.mdstream = self.io.get_assistant_mdstream() - elif self.show_pretty(): # pretty output but NOT streaming + if self.show_pretty(): self.waiting_spinner = WaitingSpinner("Waiting for LLM") self.waiting_spinner.start() - self.mdstream = None + if self.stream: + self.mdstream = self.io.get_assistant_mdstream() + else: + self.mdstream = None else: self.mdstream = None @@ -1932,6 +1933,8 @@ class Coder: except AttributeError: pass + if received_content: + self._stop_waiting_spinner() self.partial_response_content += text if self.show_pretty(): diff --git a/aider/mdstream.py b/aider/mdstream.py index 186ef7624..4e76d7735 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -12,7 +12,6 @@ from rich.syntax import Syntax from rich.text import Text from aider.dump import dump # noqa: F401 -from aider.waiting import WaitingSpinner _text_prefix = """ # Header @@ -116,19 +115,10 @@ class MarkdownStream: else: self.mdargs = dict() - # Defer Live creation until the first update so the spinner can be shown. + # Defer Live creation until the first update. self.live = None - self.waiting_spinner = WaitingSpinner("Waiting for LLM") - self.waiting_spinner.start() - self._spinner_running = True self._live_started = False - def _spin(self): - """Background thread that keeps the spinner moving until stopped.""" - while not self._spinner_stop_event.is_set(): - time.sleep(0.15) - self.spinner.step() - self.spinner.end() def _render_markdown_to_lines(self, text): """Render markdown text to a list of lines. @@ -157,12 +147,6 @@ class MarkdownStream: except Exception: pass # Ignore any errors during cleanup - # Ensure the spinner is properly shut down - if getattr(self, "_spinner_running", False): - try: - self.waiting_spinner.stop() - except Exception: - pass def update(self, text, final=False): """Update the displayed markdown content. @@ -183,9 +167,6 @@ class MarkdownStream: """ # On the first call, stop the spinner and start the Live renderer if not getattr(self, "_live_started", False): - if getattr(self, "_spinner_running", False): - self.waiting_spinner.stop() - self._spinner_running = False self.live = Live(Text(""), refresh_per_second=1.0 / self.min_delay) self.live.start() self._live_started = True From a22772b388d3b0dc1345c9b8eea044d702758c13 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 16:06:50 -0700 Subject: [PATCH 083/195] style: remove trailing whitespace --- aider/mdstream.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/aider/mdstream.py b/aider/mdstream.py index 4e76d7735..774b247c2 100755 --- a/aider/mdstream.py +++ b/aider/mdstream.py @@ -119,7 +119,6 @@ class MarkdownStream: self.live = None self._live_started = False - def _render_markdown_to_lines(self, text): """Render markdown text to a list of lines. @@ -147,7 +146,6 @@ class MarkdownStream: except Exception: pass # Ignore any errors during cleanup - def update(self, text, final=False): """Update the displayed markdown content. From 37601eb4b73b88b55a34e674f70e71c557b9d453 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 16:27:51 -0700 Subject: [PATCH 084/195] copy --- HISTORY.md | 12 +- aider/website/HISTORY.md | 12 +- aider/website/assets/sample-analytics.jsonl | 406 ++++++++++---------- aider/website/docs/faq.md | 8 +- 4 files changed, 219 insertions(+), 219 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 7ae35fedb..4d53857ca 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -2,8 +2,8 @@ ### main branch -- Added support for `qwen3-235b` models. - Added support for `gemini-2.5-pro-preview-05-06` models. +- Added support for `qwen3-235b` models. - Added repo-map support for OCaml and OCaml interface files, by Andrey Popp. - Added a spinner animation while waiting for the LLM to start streaming its response. - Updated the spinner animation to a Knight Rider style. @@ -26,7 +26,11 @@ - Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. - Improved display of filenames in the prompt header using rich Text formatting. - Enabled `reasoning_effort` for Gemini 2.5 Flash models. - - Aider wrote 53% of the code in this release. +- Added a `--shell-completions` argument to generate shell completion scripts (e.g., for bash, zsh). +- Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. +- Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). +- The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. +- Aider wrote 53% of the code in this release. ### Aider v0.82.3 @@ -40,10 +44,6 @@ - Set Gemini 2.5 Pro models to use the `overeager` prompt setting by default. - Add common file types (`.svg`, `.pdf`) to the default list of ignored files for AI comment scanning (`--watch`). - Skip scanning files larger than 1MB for AI comments (`--watch`). - - Added a `--shell-completions` argument to generate shell completion scripts (e.g., for bash, zsh). - - Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. - - Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). - - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. ### Aider v0.82.2 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index e1a3345ac..e2b26dd4e 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -26,8 +26,8 @@ cog.out(text) ### main branch -- Added support for `qwen3-235b` models. - Added support for `gemini-2.5-pro-preview-05-06` models. +- Added support for `qwen3-235b` models. - Added repo-map support for OCaml and OCaml interface files, by Andrey Popp. - Added a spinner animation while waiting for the LLM to start streaming its response. - Updated the spinner animation to a Knight Rider style. @@ -50,7 +50,11 @@ cog.out(text) - Ensured web scraping in the GUI also respects Playwright availability and the `--disable-playwright` flag. - Improved display of filenames in the prompt header using rich Text formatting. - Enabled `reasoning_effort` for Gemini 2.5 Flash models. - - Aider wrote 53% of the code in this release. +- Added a `--shell-completions` argument to generate shell completion scripts (e.g., for bash, zsh). +- Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. +- Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). +- The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. +- Aider wrote 53% of the code in this release. ### Aider v0.82.3 @@ -64,10 +68,6 @@ cog.out(text) - Set Gemini 2.5 Pro models to use the `overeager` prompt setting by default. - Add common file types (`.svg`, `.pdf`) to the default list of ignored files for AI comment scanning (`--watch`). - Skip scanning files larger than 1MB for AI comments (`--watch`). - - Added a `--shell-completions` argument to generate shell completion scripts (e.g., for bash, zsh). - - Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. - - Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). - - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. ### Aider v0.82.2 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 9647720d6..183da114b 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,206 +1,3 @@ -{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667011} -{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667027} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667033} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667033} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667033} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667036} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667201} -{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667203} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667207} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667207} -{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667207} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667209} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667229} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667229} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667436} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667439} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667439} -{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667439} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667441} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 9655, "completion_tokens": 395, "total_tokens": 10050, "cost": 0.00168525, "total_cost": 0.00168525}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667458} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667467} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667467} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667540} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667540} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667540} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667540} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 23450, "completion_tokens": 234, "total_tokens": 23684, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667620} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746667620} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675029} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675031} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675031} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675031} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675037} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675041} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675042} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675042} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675042} -{"event": "message_send", "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": "diff-fenced", "prompt_tokens": 2505, "completion_tokens": 19, "total_tokens": 2524, "cost": 0.0033212500000000004, "total_cost": 0.0033212500000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675045} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675045} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675108} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675108} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675108} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675108} -{"event": "message_send", "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": "diff-fenced", "prompt_tokens": 2505, "completion_tokens": 19, "total_tokens": 2524, "cost": 0.0033212500000000004, "total_cost": 0.0033212500000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675112} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675112} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675128} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675128} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675128} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746675131} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676184} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676184} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676184} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676184} -{"event": "message_send", "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": "diff-fenced", "prompt_tokens": 2505, "completion_tokens": 10, "total_tokens": 2515, "cost": 0.00323125, "total_cost": 0.00323125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676188} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676188} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676219} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676219} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676219} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676219} -{"event": "message_send", "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": "diff-fenced", "prompt_tokens": 2505, "completion_tokens": 10, "total_tokens": 2515, "cost": 0.00323125, "total_cost": 0.00323125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676223} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676223} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676443} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676444} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676444} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676447} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676855} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676855} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676855} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676856} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676893} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676910} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 29573, "completion_tokens": 375, "total_tokens": 29948, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746676919} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746677172} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746677193} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746677231} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 30852, "completion_tokens": 632, "total_tokens": 31484, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746677275} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746677755} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746677755} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711728} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711729} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711729} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711732} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711971} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711974} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711974} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746711976} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712059} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712061} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712061} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712063} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712089} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712091} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712091} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712093} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712185} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712187} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712187} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712189} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712229} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712231} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712231} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712233} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712358} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712358} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712358} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712361} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712987} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712990} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712990} -{"event": "exit", "properties": {"reason": "Showed prompts"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746712992} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746714804} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746714807} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746714807} -{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746714807} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746714940} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746714940} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715733} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715734} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715734} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715734} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715766} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 14229, "completion_tokens": 151, "total_tokens": 14380, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715772} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715788} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 14847, "completion_tokens": 184, "total_tokens": 15031, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715794} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715812} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715812} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715863} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715863} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715863} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715863} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 26489, "completion_tokens": 334, "total_tokens": 26823, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715963} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746715963} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716073} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716073} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716073} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716073} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-exp-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-exp-03-25", "edit_format": "udiff-simple", "prompt_tokens": 26488, "completion_tokens": 403, "total_tokens": 26891, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716145} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746716145} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721958} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721960} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721960} -{"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": 1746721960} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746721985} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722024} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722053} -{"event": "message_send", "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", "prompt_tokens": 13638, "completion_tokens": 385, "total_tokens": 14023, "cost": 0.0208975, "total_cost": 0.0208975}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722068} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722095} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722098} -{"event": "message_send", "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", "prompt_tokens": 17782, "completion_tokens": 1505, "total_tokens": 19287, "cost": 0.037277500000000005, "total_cost": 0.058175000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722171} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722185} -{"event": "message_send", "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", "prompt_tokens": 20819, "completion_tokens": 108, "total_tokens": 20927, "cost": 0.027103750000000003, "total_cost": 0.08527875000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722191} -{"event": "command_diff", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722202} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722230} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722237} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722245} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722246} -{"event": "message_send", "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", "prompt_tokens": 25435, "completion_tokens": 399, "total_tokens": 25834, "cost": 0.03578375, "total_cost": 0.12106250000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722299} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722331} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722335} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722340} -{"event": "message_send", "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", "prompt_tokens": 29275, "completion_tokens": 659, "total_tokens": 29934, "cost": 0.04318375, "total_cost": 0.16424625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722360} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722369} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722370} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722382} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722382} -{"event": "message_send", "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": "ask", "prompt_tokens": 21916, "completion_tokens": 479, "total_tokens": 22395, "cost": 0.032185000000000005, "total_cost": 0.19643125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722501} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722527} -{"event": "message_send", "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", "prompt_tokens": 22728, "completion_tokens": 377, "total_tokens": 23105, "cost": 0.03218, "total_cost": 0.22861125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722535} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722547} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722560} -{"event": "message_send", "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", "prompt_tokens": 26430, "completion_tokens": 885, "total_tokens": 27315, "cost": 0.04188750000000001, "total_cost": 0.27049875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722612} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722623} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722875} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722878} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722878} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722878} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 609, "completion_tokens": 12, "total_tokens": 621, "cost": 9.855e-05, "total_cost": 9.855e-05}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722880} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722880} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722899} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722901} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722901} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722901} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 605, "completion_tokens": 236, "total_tokens": 841, "cost": 0.00023234999999999998, "total_cost": 0.00023234999999999998}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722904} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722904} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722934} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722937} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722937} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722937} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5661, "completion_tokens": 320, "total_tokens": 5981, "cost": 0.00104115, "total_cost": 0.00104115}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722943} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722949} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722951} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722951} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722951} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746722966} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723226} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723229} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723229} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723229} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6242, "completion_tokens": 1356, "total_tokens": 7598, "cost": 0.0017499, "total_cost": 0.0017499}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723250} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723250} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723310} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723312} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723312} {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723313} {"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6242, "completion_tokens": 1123, "total_tokens": 7365, "cost": 0.0016101, "total_cost": 0.0016101}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723368} {"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723368} @@ -998,3 +795,206 @@ {"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743046} {"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": 35736, "completion_tokens": 428, "total_tokens": 36164, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743115} {"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743115} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743135} +{"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": 8113, "completion_tokens": 2128, "total_tokens": 10241, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743267} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743309} +{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743316} +{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743338} +{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743354} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743365} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} +{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} +{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} +{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743493} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743503} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743506} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743510} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743518} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743527} +{"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": 10143, "completion_tokens": 12389, "total_tokens": 22532, "cost": 0.59699, "total_cost": 0.59699}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743568} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743572} +{"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": 26024, "completion_tokens": 1961, "total_tokens": 27985, "cost": 0.33868000000000004, "total_cost": 0.33868000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743595} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743604} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743607} +{"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": 27270, "completion_tokens": 246, "total_tokens": 27516, "cost": 0.10878, "total_cost": 0.44746}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743612} +{"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": 11257, "completion_tokens": 2663, "total_tokens": 13920, "cost": 0.21909, "total_cost": 0.81608}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743647} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743701} +{"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": 11535, "completion_tokens": 1714, "total_tokens": 13249, "cost": 0.18391000000000002, "total_cost": 0.99999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743733} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743780} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} +{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743940} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} +{"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": 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} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index dd3db2165..0bc54cfc5 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,10 +264,10 @@ tr:hover { background-color: #f5f5f5; }
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25856,47844.7%
gemini/gemini-2.5-pro-preview-05-06582,75230.4%
o3316,72716.5%
openrouter/REDACTED135,1097.1%
gemini/gemini-2.5-pro-exp-03-25816,68243.6%
gemini/gemini-2.5-pro-preview-05-06582,75231.1%
o3316,72716.9%
openrouter/REDACTED131,7737.0%
gemini/gemini-2.5-pro-preview-03-2514,0120.7%
together_ai/REDACTED7,7070.4%
together_ai/Qwen/Qwen3-235B-A22B-fp8-tput1,9940.1%
- - - - + + + + From d7e091f31570b0e2d9548f8cc7ff9040bce5c01e Mon Sep 17 00:00:00 2001 From: cantalupo555 Date: Thu, 8 May 2025 20:32:00 -0300 Subject: [PATCH 085/195] refactor: Update OpenRouter Gemini 2.5 Pro Exp model ID --- aider/resources/model-metadata.json | 2 +- aider/resources/model-settings.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/resources/model-metadata.json b/aider/resources/model-metadata.json index 51b458df9..72c394730 100644 --- a/aider/resources/model-metadata.json +++ b/aider/resources/model-metadata.json @@ -312,7 +312,7 @@ "supports_tool_choice": true, "source": "https://cloud.google.com/vertex-ai/generative-ai/pricing" }, - "openrouter/google/gemini-2.5-pro-exp-03-25:free": { + "openrouter/google/gemini-2.5-pro-exp-03-25": { "max_tokens": 8192, "max_input_tokens": 1048576, "max_output_tokens": 64000, diff --git a/aider/resources/model-settings.yml b/aider/resources/model-settings.yml index 338521179..5b00a0f0d 100644 --- a/aider/resources/model-settings.yml +++ b/aider/resources/model-settings.yml @@ -969,7 +969,7 @@ overeager: true weak_model_name: gemini/gemini-2.5-flash-preview-04-17 -- name: openrouter/google/gemini-2.5-pro-exp-03-25:free +- name: openrouter/google/gemini-2.5-pro-exp-03-25 edit_format: diff-fenced overeager: true use_repo_map: true From c706663841e1b9567dc680871674af533c152fa2 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 16:32:07 -0700 Subject: [PATCH 086/195] fix: Ensure spinner ends on stop --- aider/waiting.py | 1 + 1 file changed, 1 insertion(+) diff --git a/aider/waiting.py b/aider/waiting.py index c0b121e74..8068551bb 100644 --- a/aider/waiting.py +++ b/aider/waiting.py @@ -44,6 +44,7 @@ class WaitingSpinner: self._stop_event.set() if self._thread.is_alive(): self._thread.join(timeout=0.1) + self.spinner.end() # Allow use as a context-manager def __enter__(self): From b236e0c801b555c17ca8844107cb78737d37a234 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 17:08:07 -0700 Subject: [PATCH 087/195] style: Improve spinner display order and output --- aider/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index aff5cef86..61e71877e 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -301,7 +301,7 @@ class Spinner: if not self.is_tty: return False try: - sys.stdout.write("≡\b─\b") + sys.stdout.write("≡\b─\b \b") sys.stdout.flush() return True except UnicodeEncodeError: @@ -329,7 +329,7 @@ class Spinner: self.last_update = now frame = self._next_frame() - sys.stdout.write(f"\r{self.text} {frame}") + sys.stdout.write(f"\r{frame} {self.text}") # Backspace cursor to the scanner character pos_in_content = frame.find(self.scan_char) - 1 # exclude '[' From 9ef506dc25dd5e87872e0731e909f9bec6978b8f Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 17:09:43 -0700 Subject: [PATCH 088/195] feat: Continue spinner animation across instances --- aider/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 61e71877e..2eb12d200 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -258,6 +258,8 @@ class Spinner: 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() @@ -292,7 +294,7 @@ class Spinner: # Bounce the scanner back and forth. self.frames = frames - self.frame_idx = 0 + self.frame_idx = Spinner.last_frame_idx # Initialize from class variable self.scan_char = scan_char self.width = len(frames[0]) - 2 # number of chars between the brackets self.animation_len = len(frames[0]) @@ -312,6 +314,7 @@ class Spinner: 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) -> None: From 95cc362c074155f00cf3c84f4a392a9ff0b0b935 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 17:12:28 -0700 Subject: [PATCH 089/195] fix: Fix spinner backspace calculation --- aider/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 2eb12d200..42c6ac0f1 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -337,7 +337,7 @@ class Spinner: # Backspace cursor to the scanner character pos_in_content = frame.find(self.scan_char) - 1 # exclude '[' chars_after_scanner = (self.width - 1) - pos_in_content - num_backspaces = max(0, chars_after_scanner + 2) # +']' and extra + num_backspaces = max(0, chars_after_scanner + 2) + len(self.text) + 1 sys.stdout.write("\b" * num_backspaces) sys.stdout.flush() From aad6838e15808dedbc95c64768e3b0b398ea3300 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 17:17:01 -0700 Subject: [PATCH 090/195] chore: Improve spinner ASCII animation --- aider/utils.py | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 42c6ac0f1..128e578f2 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -270,23 +270,25 @@ class Spinner: # Pre-render the animation frames using pure ASCII so they will # always display, even on very limited terminals. ascii_frames = """ -[#=-----] -[=#-----] -[-=#----] -[--=#---] -[---=#--] -[----=#-] -[-----=#] -[-----#=] -[----#=-] -[---#=--] -[--#=---] -[-#=----] +[#=- ] +[=# ] +[-=# ] +[ -=# ] +[ -=# ] +[ -=# ] +[ -=#] +[ #=] +[ #=-] +[ #=- ] +[ #=- ] +[ #=- ] """.strip().splitlines() + xlate = ("-=#", "≈≋≣") + # If unicode is supported, swap the ASCII chars for nicer glyphs. if self._supports_unicode(): - scan_char, trail_char = "≡", "─" + scan_char, trail_char = "≣", "" frames = [f.replace("#", scan_char).replace("-", trail_char) for f in ascii_frames] else: scan_char, _ = "#", "-" From 647f556582d9a08ad8f81317f091336f984a6651 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 17:17:02 -0700 Subject: [PATCH 091/195] refactor: Use str.translate for spinner unicode mapping --- aider/utils.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 128e578f2..0ace78f6d 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -284,20 +284,20 @@ class Spinner: [ #=- ] """.strip().splitlines() - xlate = ("-=#", "≈≋≣") + xlate_from, xlate_to = ("-=#", "≈≋≣") # If unicode is supported, swap the ASCII chars for nicer glyphs. if self._supports_unicode(): - scan_char, trail_char = "≣", "" - frames = [f.replace("#", scan_char).replace("-", trail_char) for f in ascii_frames] + 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: - scan_char, _ = "#", "-" 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.scan_char = scan_char + 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]) From 784ac79da1c127332f13c45194340a4676d2cf69 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 17:17:07 -0700 Subject: [PATCH 092/195] style: Apply formatting --- aider/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 0ace78f6d..9786b6041 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -297,7 +297,7 @@ class Spinner: # Bounce the scanner back and forth. self.frames = frames - self.frame_idx = Spinner.last_frame_idx # Initialize from class variable + 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]) From 4e86a82a0882a0d347166ffbe2eb811ff39ef9bb Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 17:21:48 -0700 Subject: [PATCH 093/195] copy --- aider/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 9786b6041..c7ec14b01 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -284,7 +284,7 @@ class Spinner: [ #=- ] """.strip().splitlines() - xlate_from, xlate_to = ("-=#", "≈≋≣") + xlate_from, xlate_to = ("-=#", "─=≡") # If unicode is supported, swap the ASCII chars for nicer glyphs. if self._supports_unicode(): From 292aa9bded4fe320cfc797a9207f60388603bae5 Mon Sep 17 00:00:00 2001 From: KebobZ Date: Thu, 8 May 2025 17:36:22 -0700 Subject: [PATCH 094/195] Add Qwen3-235B-A22B-Q5_K_M to qwen3_leaderboard.yml --- aider/website/_data/qwen3_leaderboard.yml | 28 ++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/aider/website/_data/qwen3_leaderboard.yml b/aider/website/_data/qwen3_leaderboard.yml index e773bdee2..2e9eac1fc 100644 --- a/aider/website/_data/qwen3_leaderboard.yml +++ b/aider/website/_data/qwen3_leaderboard.yml @@ -186,4 +186,30 @@ date: 2025-04-30 versions: 0.81.4.dev seconds_per_case: 59.4 - total_cost: 0.0000 \ No newline at end of file + total_cost: 0.0000 + +- dirname: 2025-05-07-03-15-59--Qwen3-235B-A22B-Q5_K_M-whole-nothink + test_cases: 225 + model: Qwen3-235B-A22B whole with llama.cpp, Q5_K_M (unsloth), recommended /no_think settings + edit_format: whole + commit_hash: 8159cbf + pass_rate_1: 27.1 + pass_rate_2: 59.1 + pass_num_1: 61 + pass_num_2: 133 + percent_cases_well_formed: 100.0 + error_outputs: 1 + num_malformed_responses: 0 + num_with_malformed_responses: 0 + user_asks: 169 + lazy_comments: 0 + syntax_errors: 0 + indentation_errors: 0 + exhausted_context_windows: 0 + test_timeouts: 1 + total_tests: 225 + command: aider --model openai/Qwen3-235B-A22B-Q5_K_M + date: 2025-05-07 + versions: 0.82.4.dev + seconds_per_case: 635.2 + total_cost: 0.0000 From 2d34b738bce7928b9ac76008c390e35c92b6a0e6 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 17:47:41 -0700 Subject: [PATCH 095/195] chore: Update waiting spinner --- aider/coders/base_coder.py | 2 +- aider/utils.py | 29 +++++++++++++++++------------ 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index f68e3bead..ab59600cf 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -1419,7 +1419,7 @@ class Coder: self.multi_response_content = "" if self.show_pretty(): - self.waiting_spinner = WaitingSpinner("Waiting for LLM") + self.waiting_spinner = WaitingSpinner("Waiting for " + self.main_model.name) self.waiting_spinner.start() if self.stream: self.mdstream = self.io.get_assistant_mdstream() diff --git a/aider/utils.py b/aider/utils.py index c7ec14b01..bd332d996 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -270,21 +270,22 @@ class Spinner: # Pre-render the animation frames using pure ASCII so they will # always display, even on very limited terminals. ascii_frames = """ -[#=- ] +[#= ] [=# ] -[-=# ] -[ -=# ] -[ -=# ] -[ -=# ] -[ -=#] +[ =# ] +[ =# ] +[ =# ] +[ =# ] +[ =#] [ #=] -[ #=-] -[ #=- ] -[ #=- ] -[ #=- ] +[ #= ] +[ #= ] +[ #= ] +[ #= ] """.strip().splitlines() - xlate_from, xlate_to = ("-=#", "─=≡") + 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(): @@ -305,7 +306,11 @@ class Spinner: if not self.is_tty: return False try: - sys.stdout.write("≡\b─\b \b") + 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: From 4fb2d780119bbc9a75bebabbee84d07f865cd9c1 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 19:21:28 -0700 Subject: [PATCH 096/195] spinner --- aider/utils.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index bd332d996..613da3cd8 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -269,20 +269,18 @@ class Spinner: # Pre-render the animation frames using pure ASCII so they will # always display, even on very limited terminals. - ascii_frames = """ -[#= ] -[=# ] -[ =# ] -[ =# ] -[ =# ] -[ =# ] -[ =#] -[ #=] -[ #= ] -[ #= ] -[ #= ] -[ #= ] -""".strip().splitlines() + ascii_frames = """ #= | + =# | + =# | + =# | + =# | + =# | + =# | + #= | + #= | + #= | + #= | + #= |""".splitlines() self.unicode_palette = "≋≣" xlate_from, xlate_to = ("=#", self.unicode_palette) From 52ae22bcf848fba98dc562950d33979ea1360022 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 19:28:30 -0700 Subject: [PATCH 097/195] Refactor: Update spinner frames definition --- aider/utils.py | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 613da3cd8..670252d44 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -269,18 +269,20 @@ class Spinner: # Pre-render the animation frames using pure ASCII so they will # always display, even on very limited terminals. - ascii_frames = """ #= | - =# | - =# | - =# | - =# | - =# | - =# | - #= | - #= | - #= | - #= | - #= |""".splitlines() + ascii_frames = [ + ' #= | ', + ' =# | ', + ' =# | ', + ' =# | ', + ' =# | ', + ' =# | ', + ' =# | ', + ' #= | ', + ' #= | ', + ' #= | ', + ' #= | ', + ' #= | ', + ] self.unicode_palette = "≋≣" xlate_from, xlate_to = ("=#", self.unicode_palette) From 7a5877ea5031fbcaf87ea2845e7d7a570768e38f Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 19:28:35 -0700 Subject: [PATCH 098/195] style: Format spinner frames --- aider/utils.py | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 670252d44..64d9573f0 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -270,18 +270,18 @@ class Spinner: # Pre-render the animation frames using pure ASCII so they will # always display, even on very limited terminals. ascii_frames = [ - ' #= | ', - ' =# | ', - ' =# | ', - ' =# | ', - ' =# | ', - ' =# | ', - ' =# | ', - ' #= | ', - ' #= | ', - ' #= | ', - ' #= | ', - ' #= | ', + " #= | ", + " =# | ", + " =# | ", + " =# | ", + " =# | ", + " =# | ", + " =# | ", + " #= | ", + " #= | ", + " #= | ", + " #= | ", + " #= | ", ] self.unicode_palette = "≋≣" From 4d5852a30eb325a3a0474dcf3cba343bc0082b30 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Thu, 8 May 2025 19:49:19 -0700 Subject: [PATCH 099/195] chore: Refine ASCII spinner animation --- aider/utils.py | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 64d9573f0..1c0f722c4 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -270,18 +270,18 @@ class Spinner: # Pre-render the animation frames using pure ASCII so they will # always display, even on very limited terminals. ascii_frames = [ - " #= | ", - " =# | ", - " =# | ", - " =# | ", - " =# | ", - " =# | ", - " =# | ", - " #= | ", - " #= | ", - " #= | ", - " #= | ", - " #= | ", + "#= ", + "=# ", + " =# ", + " =# ", + " =# ", + " =# ", + " =#", + " #=", + " #= ", + " #= ", + " #= ", + " #= ", ] self.unicode_palette = "≋≣" @@ -446,10 +446,11 @@ def printable_shell_command(cmd_list): def main(): spinner = Spinner("Running spinner...") - for _ in range(300): + for _ in range(100): time.sleep(0.15) spinner.step() spinner.end() + print("Success!") if __name__ == "__main__": From edb3bf84cc4a8be836655190927abc552604fea9 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Thu, 8 May 2025 19:52:12 -0700 Subject: [PATCH 100/195] chore: Adjust spinner ascii frame width --- aider/utils.py | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 1c0f722c4..2409d6ebf 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -270,18 +270,24 @@ class Spinner: # 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 = "≋≣" From 81b86441fd93e56e702f0e5e471f98d1059453a6 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:01:48 -0700 Subject: [PATCH 101/195] feat: Hide cursor when spinner is active --- aider/utils.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/aider/utils.py b/aider/utils.py index 2409d6ebf..13f09b034 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -7,6 +7,7 @@ import time from pathlib import Path import oslex +from rich.console import Console from aider.dump import dump # noqa: F401 @@ -266,6 +267,7 @@ class Spinner: 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. @@ -338,6 +340,8 @@ class Spinner: 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 @@ -359,6 +363,7 @@ class Spinner: clear_len = len(self.text) + 1 + self.animation_len sys.stdout.write("\r" + " " * clear_len + "\r") sys.stdout.flush() + self.console.show_cursor(True) self.visible = False From 23714d7db617a90d05d4e21362326d498e4189ad Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:17:49 -0700 Subject: [PATCH 102/195] feat: Add user language instruction to commit prompt --- aider/prompts.py | 4 +++- aider/repo.py | 14 ++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/aider/prompts.py b/aider/prompts.py index 84ed75e9b..aecf29a9e 100644 --- a/aider/prompts.py +++ b/aider/prompts.py @@ -13,11 +13,13 @@ Generate a one-line commit message for those changes. The commit message should be structured as follows: : Use these for : fix, feat, build, chore, ci, docs, style, refactor, perf, test -Ensure the commit message: +Ensure the commit message:{language_instruction} - Starts with the appropriate prefix. - Is in the imperative mood (e.g., \"add feature\" not \"added feature\" or \"adding feature\"). - 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. """ diff --git a/aider/repo.py b/aider/repo.py index 0438f2243..809c8e375 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -207,7 +207,12 @@ class GitRepo: if message: commit_message = message else: - commit_message = self.get_commit_message(diffs, context) + user_language = None + if coder: + user_language = coder.get_user_language() + commit_message = self.get_commit_message(diffs, context, user_language) + + # Retrieve attribute settings, prioritizing coder.args if available if coder and hasattr(coder, "args"): @@ -319,7 +324,7 @@ class GitRepo: except (ValueError, OSError): return self.repo.git_dir - def get_commit_message(self, diffs, context): + def get_commit_message(self, diffs, context, user_language=None): diffs = "# Diffs:\n" + diffs content = "" @@ -328,6 +333,11 @@ 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), From 8652fcf86efce7acd1316bf5697f4a6296310cea Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:17:55 -0700 Subject: [PATCH 103/195] style: Remove empty lines --- aider/repo.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/aider/repo.py b/aider/repo.py index 809c8e375..0723c6c14 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -212,8 +212,6 @@ class GitRepo: user_language = coder.get_user_language() commit_message = self.get_commit_message(diffs, context, user_language) - - # Retrieve attribute settings, prioritizing coder.args if available if coder and hasattr(coder, "args"): attribute_author = coder.args.attribute_author From 4c959f45429660959195c38c3dd37be4fd2b5cd6 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:21:05 -0700 Subject: [PATCH 104/195] chore: Print messages when verbose in simple_send --- aider/models.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aider/models.py b/aider/models.py index 3c7affcbe..d69ae2d5a 100644 --- a/aider/models.py +++ b/aider/models.py @@ -913,6 +913,9 @@ class Model(ModelSettings): messages = ensure_alternating_roles(messages) retry_delay = 0.125 + if self.verbose: + dump(messages) + while True: try: kwargs = { From 04cbe87caac1991680af5a121d0825e1b9b11139 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 06:48:26 -0700 Subject: [PATCH 105/195] style: Update spinner unicode palette --- aider/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 13f09b034..00caf8ab3 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -292,7 +292,7 @@ class Spinner: " #= ", # space(1) C1 C2 space(7) ] - self.unicode_palette = "≋≣" + self.unicode_palette = "░█" xlate_from, xlate_to = ("=#", self.unicode_palette) # If unicode is supported, swap the ASCII chars for nicer glyphs. From 2bc93868764650d70c2b570ada5f6d51e222cc8e Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:50:42 -0700 Subject: [PATCH 106/195] feat: Add optional text param to Spinner.step --- aider/utils.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 00caf8ab3..c6fd96cfb 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -332,7 +332,10 @@ class Spinner: Spinner.last_frame_idx = self.frame_idx # Update class variable return frame - def step(self) -> None: + def step(self, text: str = None) -> None: + if text is not None: + self.text = text + if not self.is_tty: return From 11480f6110696ab26462bf8342d46e0cfe1888b4 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 06:53:57 -0700 Subject: [PATCH 107/195] chore: Add item name to repo map progress --- aider/repomap.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/aider/repomap.py b/aider/repomap.py index 598770d18..580292a3c 100644 --- a/aider/repomap.py +++ b/aider/repomap.py @@ -380,7 +380,7 @@ class RepoMap: if self.verbose: self.io.tool_output(f"Processing {fname}") if progress and not showing_bar: - progress() + progress("Updating repo map: " + fname) try: file_ok = Path(fname).is_file() @@ -459,7 +459,7 @@ class RepoMap: for ident in idents: if progress: - progress() + progress("Updating repo map: " + ident) definers = defines[ident] @@ -512,7 +512,7 @@ class RepoMap: ranked_definitions = defaultdict(float) for src in G.nodes: if progress: - progress() + progress("Updating repo map: " + src) src_rank = ranked[src] total_weight = sum(data["weight"] for _src, _dst, data in G.out_edges(src, data=True)) From b9885bb76dfd57886fad6abf4f4cd992b49c2db1 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:53:58 -0700 Subject: [PATCH 108/195] refactor: refactor 'Updating repo map' text to constant --- aider/repomap.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/aider/repomap.py b/aider/repomap.py index 580292a3c..31daa1c56 100644 --- a/aider/repomap.py +++ b/aider/repomap.py @@ -35,6 +35,8 @@ CACHE_VERSION = 3 if USING_TSL_PACK: CACHE_VERSION = 4 +UPDATING_REPO_MAP_MESSAGE = "Updating repo map" + class RepoMap: TAGS_CACHE_DIR = f".aider.tags.cache.v{CACHE_VERSION}" @@ -380,7 +382,7 @@ class RepoMap: if self.verbose: self.io.tool_output(f"Processing {fname}") if progress and not showing_bar: - progress("Updating repo map: " + fname) + progress(f"{UPDATING_REPO_MAP_MESSAGE}: {fname}") try: file_ok = Path(fname).is_file() @@ -459,7 +461,7 @@ class RepoMap: for ident in idents: if progress: - progress("Updating repo map: " + ident) + progress(f"{UPDATING_REPO_MAP_MESSAGE}: {ident}") definers = defines[ident] @@ -512,7 +514,7 @@ class RepoMap: ranked_definitions = defaultdict(float) for src in G.nodes: if progress: - progress("Updating repo map: " + src) + progress(f"{UPDATING_REPO_MAP_MESSAGE}: {src}") src_rank = ranked[src] total_weight = sum(data["weight"] for _src, _dst, data in G.out_edges(src, data=True)) @@ -621,7 +623,7 @@ class RepoMap: if not mentioned_idents: mentioned_idents = set() - spin = Spinner("Updating repo map") + spin = Spinner(UPDATING_REPO_MAP_MESSAGE) ranked_tags = self.get_ranked_tags( chat_fnames, From 781ed90653f6344e4365fceba8e04cc84dcae765 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:54:10 -0700 Subject: [PATCH 109/195] fix: Clear to end of line when spinner updates --- aider/utils.py | 30 +++++++++++++++++++++++------- 1 file changed, 23 insertions(+), 7 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index c6fd96cfb..4ce440bf4 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -309,6 +309,7 @@ class Spinner: 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: @@ -350,20 +351,35 @@ class Spinner: return self.last_update = now - frame = self._next_frame() + frame_str = self._next_frame() - sys.stdout.write(f"\r{frame} {self.text}") + current_text_payload = f" {self.text}" + line_to_display = f"{frame_str}{current_text_payload}" + 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}") + + # Store the length of the actual content part for the next step's clearing calculation + 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 = total_chars_written_on_line - scan_char_abs_pos - # Backspace cursor to the scanner character - pos_in_content = frame.find(self.scan_char) - 1 # exclude '[' - chars_after_scanner = (self.width - 1) - pos_in_content - num_backspaces = max(0, chars_after_scanner + 2) + len(self.text) + 1 sys.stdout.write("\b" * num_backspaces) sys.stdout.flush() def end(self) -> None: if self.visible and self.is_tty: - clear_len = len(self.text) + 1 + self.animation_len + 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) From df967e4b41703a27a07e834ecc8d81307c8e350a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:57:18 -0700 Subject: [PATCH 110/195] feat: Clip spinner output to console width --- aider/utils.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 4ce440bf4..1efbf8aa5 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -353,8 +353,19 @@ class Spinner: 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 @@ -362,8 +373,6 @@ class Spinner: # Write the spinner frame, text, and any necessary clearing spaces sys.stdout.write(f"\r{line_to_display}{padding_to_clear}") - - # Store the length of the actual content part for the next step's clearing calculation self.last_display_len = len_line_to_display # Calculate number of backspaces to position cursor at the scanner character @@ -372,8 +381,10 @@ class Spinner: # 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). + # 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() From 766a41d5de616ca2011b549f00b74ce8a0776fc7 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:57:23 -0700 Subject: [PATCH 111/195] style: Apply formatting --- aider/utils.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index 1efbf8aa5..640a81f58 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -356,7 +356,7 @@ class Spinner: # 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 + if max_spinner_width < 0: # Handle extremely narrow terminals max_spinner_width = 0 current_text_payload = f" {self.text}" From 1a7960810c95bd2a627ff28e6c162a224b857e4c Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 06:57:32 -0700 Subject: [PATCH 112/195] style: Fix E501 line length in spinner comments --- aider/utils.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 640a81f58..8721d438e 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -381,9 +381,11 @@ class Spinner: # 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 + # 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. + # 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() From 77deb35022646894d4430b35b6accc992978b059 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 08:10:36 -0700 Subject: [PATCH 113/195] chore: Add model option to update history script --- scripts/update-history.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/scripts/update-history.py b/scripts/update-history.py index e8fa455b2..f5fde9106 100755 --- a/scripts/update-history.py +++ b/scripts/update-history.py @@ -136,6 +136,8 @@ def main(): message, "--no-git", "--no-auto-lint", + "--model", + "o3", ] subprocess.run(cmd) From 3f49acf39011944ee5c66478e54ea80012a04c54 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 08:10:39 -0700 Subject: [PATCH 114/195] feat: Allow specifying aider model in update-history.py --- scripts/update-history.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/scripts/update-history.py b/scripts/update-history.py index f5fde9106..122d26737 100755 --- a/scripts/update-history.py +++ b/scripts/update-history.py @@ -1,5 +1,6 @@ #!/usr/bin/env python3 +import argparse import os import re import subprocess @@ -69,6 +70,11 @@ def run_plain_git_log(): def main(): + parser = argparse.ArgumentParser(description="Update HISTORY.md using aider.") + parser.add_argument( + "model", nargs="?", default="o3", help="The model to use with aider (default: o3)" + ) + args = parser.parse_args() # Get the git log and diff output log_content = run_git_log() plain_log_content = run_plain_git_log() @@ -137,7 +143,7 @@ def main(): "--no-git", "--no-auto-lint", "--model", - "o3", + args.model, ] subprocess.run(cmd) From 4e608dbd77b21451803d694989c28cdd8508616a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 08:12:11 -0700 Subject: [PATCH 115/195] refactor: Use sys.argv instead of argparse for model arg --- scripts/update-history.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/scripts/update-history.py b/scripts/update-history.py index 122d26737..f551ce14c 100755 --- a/scripts/update-history.py +++ b/scripts/update-history.py @@ -1,9 +1,9 @@ #!/usr/bin/env python3 -import argparse import os import re import subprocess +import sys import tempfile from history_prompts import history_prompt @@ -70,11 +70,10 @@ def run_plain_git_log(): def main(): - parser = argparse.ArgumentParser(description="Update HISTORY.md using aider.") - parser.add_argument( - "model", nargs="?", default="o3", help="The model to use with aider (default: o3)" - ) - args = parser.parse_args() + model_name = "o3" + if len(sys.argv) > 1: + model_name = sys.argv[1] + # Get the git log and diff output log_content = run_git_log() plain_log_content = run_plain_git_log() @@ -143,7 +142,7 @@ def main(): "--no-git", "--no-auto-lint", "--model", - args.model, + model_name, ] subprocess.run(cmd) From a3562d1d62f9fbaf2ed6ff49f5cf37530308b13e Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 08:14:00 -0700 Subject: [PATCH 116/195] feat: Forward script args to aider command --- scripts/update-history.py | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/scripts/update-history.py b/scripts/update-history.py index f551ce14c..55e3ccaa0 100755 --- a/scripts/update-history.py +++ b/scripts/update-history.py @@ -70,9 +70,7 @@ def run_plain_git_log(): def main(): - model_name = "o3" - if len(sys.argv) > 1: - model_name = sys.argv[1] + aider_args = sys.argv[1:] # Get the git log and diff output log_content = run_git_log() @@ -141,9 +139,7 @@ def main(): message, "--no-git", "--no-auto-lint", - "--model", - model_name, - ] + ] + aider_args subprocess.run(cmd) # Read back the updated history From 9f1ef3f49f6b14542c2a7fa954877a48c0a1813e Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 08:14:02 -0700 Subject: [PATCH 117/195] chore: Display line counts before calling aider --- scripts/update-history.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/scripts/update-history.py b/scripts/update-history.py index 55e3ccaa0..80262bfc4 100755 --- a/scripts/update-history.py +++ b/scripts/update-history.py @@ -123,6 +123,12 @@ def main(): blame_result = subprocess.run(["python3", "scripts/blame.py"], capture_output=True, text=True) aider_line = blame_result.stdout.strip().split("\n")[-1] # Get last line with percentage + # Display line counts + print(f"Lines in {hist_path}: {len(relevant_history.splitlines())}") + print(f"Lines in {log_path}: {len(log_content.splitlines())}") + print(f"Lines in {plain_log_path}: {len(plain_log_content.splitlines())}") + print(f"Lines in {diff_path}: {len(diff_content.splitlines())}") + # Construct and run the aider command message = history_prompt.format(aider_line=aider_line) From 5be642fbec9a27e6f03d6d34d375704513aaf442 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 08:18:31 -0700 Subject: [PATCH 118/195] show repomap token progress --- aider/repomap.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/aider/repomap.py b/aider/repomap.py index 31daa1c56..6328a701f 100644 --- a/aider/repomap.py +++ b/aider/repomap.py @@ -657,7 +657,11 @@ class RepoMap: while lower_bound <= upper_bound: # dump(lower_bound, middle, upper_bound) - spin.step() + if middle > 1500: + show_tokens = f"{middle / 1000.0:.1f}K" + else: + show_tokens = str(middle) + spin.step(f"{UPDATING_REPO_MAP_MESSAGE}: {show_tokens} tokens") tree = self.to_tree(ranked_tags[:middle], chat_rel_fnames) num_tokens = self.token_count(tree) From 9978f6c51eabfab716400cb1b214fd94fc638761 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 08:19:20 -0700 Subject: [PATCH 119/195] copy --- HISTORY.md | 1 + 1 file changed, 1 insertion(+) diff --git a/HISTORY.md b/HISTORY.md index 4d53857ca..a29bc097a 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -10,6 +10,7 @@ - Introduced `--attribute-co-authored-by` option to add co-author trailer to commit messages, by Andrew Grigorev. - Updated Gemini model aliases (e.g., `gemini`, `gemini-2.5-pro`) to point to the `05-06` preview versions. - Marked Gemini 2.5 Pro preview models as `overeager` by default. +- Commit message prompt specifies the user's language. - Updated the default weak model for Gemini 2.5 Pro models to `gemini/gemini-2.5-flash-preview-04-17`. - Corrected `gemini-2.5-pro-exp-03-25` model settings to reflect its lack of support for `thinking_budget`. - Ensured model-specific system prompt prefixes are placed on a new line before the main system prompt. From d79bc2c05bc2425cdca7a701509d7aef5748f8bb Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 08:21:50 -0700 Subject: [PATCH 120/195] refactor: Move blame calculation after line counts --- scripts/update-history.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/scripts/update-history.py b/scripts/update-history.py index 80262bfc4..b0f873d25 100755 --- a/scripts/update-history.py +++ b/scripts/update-history.py @@ -119,16 +119,16 @@ def main(): tmp_hist.write(relevant_history) hist_path = tmp_hist.name - # Run blame to get aider percentage - blame_result = subprocess.run(["python3", "scripts/blame.py"], capture_output=True, text=True) - aider_line = blame_result.stdout.strip().split("\n")[-1] # Get last line with percentage - # Display line counts print(f"Lines in {hist_path}: {len(relevant_history.splitlines())}") print(f"Lines in {log_path}: {len(log_content.splitlines())}") print(f"Lines in {plain_log_path}: {len(plain_log_content.splitlines())}") print(f"Lines in {diff_path}: {len(diff_content.splitlines())}") + # Run blame to get aider percentage + blame_result = subprocess.run(["python3", "scripts/blame.py"], capture_output=True, text=True) + aider_line = blame_result.stdout.strip().split("\n")[-1] # Get last line with percentage + # Construct and run the aider command message = history_prompt.format(aider_line=aider_line) From 66201414207d83e4d3cdf36e0b20d8fe99597004 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 08:21:52 -0700 Subject: [PATCH 121/195] chore: Remove plain git log from update-history script --- scripts/update-history.py | 25 ------------------------- 1 file changed, 25 deletions(-) diff --git a/scripts/update-history.py b/scripts/update-history.py index b0f873d25..d584228b9 100755 --- a/scripts/update-history.py +++ b/scripts/update-history.py @@ -53,28 +53,11 @@ def run_git_diff(): return result.stdout -def run_plain_git_log(): - latest_ver = get_latest_version_from_history() - cmd = [ - "git", - "log", - f"v{latest_ver}..HEAD", - "--", - "aider/", - ":!aider/website/", - ":!scripts/", - ":!HISTORY.md", - ] - result = subprocess.run(cmd, capture_output=True, text=True) - return result.stdout - - def main(): aider_args = sys.argv[1:] # Get the git log and diff output log_content = run_git_log() - plain_log_content = run_plain_git_log() diff_content = run_git_diff() # Extract relevant portion of HISTORY.md @@ -111,10 +94,6 @@ def main(): tmp_diff.write(diff_content) diff_path = tmp_diff.name - with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".plain_log") as tmp_plain_log: - tmp_plain_log.write(plain_log_content) - plain_log_path = tmp_plain_log.name - with tempfile.NamedTemporaryFile(mode="w", delete=False, suffix=".md") as tmp_hist: tmp_hist.write(relevant_history) hist_path = tmp_hist.name @@ -122,7 +101,6 @@ def main(): # Display line counts print(f"Lines in {hist_path}: {len(relevant_history.splitlines())}") print(f"Lines in {log_path}: {len(log_content.splitlines())}") - print(f"Lines in {plain_log_path}: {len(plain_log_content.splitlines())}") print(f"Lines in {diff_path}: {len(diff_content.splitlines())}") # Run blame to get aider percentage @@ -138,8 +116,6 @@ def main(): "--read", log_path, "--read", - plain_log_path, - "--read", diff_path, "--msg", message, @@ -173,7 +149,6 @@ def main(): # Cleanup os.unlink(log_path) - os.unlink(plain_log_path) os.unlink(diff_path) os.unlink(hist_path) From 64b4d13880e6ff898ee53cee469732f2f57ac2be Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 08:29:33 -0700 Subject: [PATCH 122/195] improve history prompt --- HISTORY.md | 4 +- aider/website/HISTORY.md | 5 +- aider/website/assets/sample-analytics.jsonl | 1148 ++++++++--------- .../website/docs/config/adv-model-settings.md | 2 +- aider/website/docs/faq.md | 10 +- scripts/history_prompts.py | 12 +- 6 files changed, 592 insertions(+), 589 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index a29bc097a..d54a409f9 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -31,7 +31,9 @@ - Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. - Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. -- Aider wrote 53% of the code in this release. +- Displayed token count progress and the name of the file or identifier being processed during repo map updates. +- Extended the waiting spinner to also show for non-streaming responses and further enhanced its animation with console width clipping, cursor hiding, and a more continuous appearance. +- Aider wrote 55% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index e2b26dd4e..43a77b1a3 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -34,6 +34,7 @@ cog.out(text) - Introduced `--attribute-co-authored-by` option to add co-author trailer to commit messages, by Andrew Grigorev. - Updated Gemini model aliases (e.g., `gemini`, `gemini-2.5-pro`) to point to the `05-06` preview versions. - Marked Gemini 2.5 Pro preview models as `overeager` by default. +- Commit message prompt specifies the user's language. - Updated the default weak model for Gemini 2.5 Pro models to `gemini/gemini-2.5-flash-preview-04-17`. - Corrected `gemini-2.5-pro-exp-03-25` model settings to reflect its lack of support for `thinking_budget`. - Ensured model-specific system prompt prefixes are placed on a new line before the main system prompt. @@ -54,7 +55,9 @@ cog.out(text) - Explicit `--attribute-author` or `--attribute-committer` flags now override the default behavior when `--attribute-co-authored-by` is used, allowing finer control over commit attribution, by Andrew Grigorev. - Fixed an issue where read-only status of files might not be preserved correctly by some commands (e.g. `/drop` after adding a read-only file). - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. -- Aider wrote 53% of the code in this release. +- Displayed token count progress and the name of the file or identifier being processed during repo map updates. +- Extended the waiting spinner to also show for non-streaming responses and further enhanced its animation with console width clipping, cursor hiding, and a more continuous appearance. +- Aider wrote 55% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 183da114b..b2c3425e3 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,577 +1,3 @@ -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723313} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6242, "completion_tokens": 1123, "total_tokens": 7365, "cost": 0.0016101, "total_cost": 0.0016101}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723368} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723368} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723389} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723392} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723392} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723392} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6242, "completion_tokens": 1255, "total_tokens": 7497, "cost": 0.0016893, "total_cost": 0.0016893}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723470} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723529} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723532} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723532} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723532} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723540} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723571} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723574} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723574} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723574} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723578} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723597} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723600} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723600} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723600} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723606} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723632} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723634} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723634} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723634} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 642, "total_tokens": 6879, "cost": 0.0013207499999999999, "total_cost": 0.0013207499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723646} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723646} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723703} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723705} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723705} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723705} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 1418, "total_tokens": 7655, "cost": 0.00178635, "total_cost": 0.00178635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723742} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723947} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723950} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723950} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723950} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 880, "total_tokens": 7117, "cost": 0.0014635499999999999, "total_cost": 0.0014635499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723974} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746723974} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724025} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724027} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724027} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724027} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 1282, "total_tokens": 7519, "cost": 0.0017047499999999999, "total_cost": 0.0017047499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724047} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724047} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724236} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724238} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724238} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724238} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 629, "total_tokens": 6866, "cost": 0.0013129499999999998, "total_cost": 0.0013129499999999998}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724249} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724249} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724301} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724303} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724303} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724303} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 718, "total_tokens": 6955, "cost": 0.00136635, "total_cost": 0.00136635}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724317} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724317} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724534} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724536} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724536} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724536} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724588} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724592} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724594} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724594} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724594} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 765, "total_tokens": 7002, "cost": 0.00139455, "total_cost": 0.00139455}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724615} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724615} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724781} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724784} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724784} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724784} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 1394, "total_tokens": 7631, "cost": 0.00177195, "total_cost": 0.00177195}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724838} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724838} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724896} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724899} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724899} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724899} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 6237, "completion_tokens": 922, "total_tokens": 7159, "cost": 0.00148875, "total_cost": 0.00148875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724936} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746724936} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725372} -{"event": "model warning", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725375} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725377} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725377} -{"event": "cli session", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725378} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725379} -{"event": "message_send", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "diff", "prompt_tokens": 3492, "completion_tokens": 271, "total_tokens": 3763, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725391} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725491} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725491} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725501} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725507} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725509} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725509} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725509} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725533} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725534} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725536} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725536} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725536} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725541} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725551} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725553} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725553} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725553} -{"event": "message_send", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "whole", "prompt_tokens": 1935, "completion_tokens": 51, "total_tokens": 1986, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725558} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725558} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725561} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725563} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725563} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725563} -{"event": "message_send", "properties": {"main_model": "together_ai/REDACTED", "weak_model": "together_ai/REDACTED", "editor_model": "together_ai/REDACTED", "edit_format": "whole", "prompt_tokens": 1943, "completion_tokens": 15, "total_tokens": 1958, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725573} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725573} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725636} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725642} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725644} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725644} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725644} -{"event": "message_send", "properties": {"main_model": "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput", "weak_model": "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput", "editor_model": "together_ai/Qwen/Qwen3-235B-A22B-fp8-tput", "edit_format": "whole", "prompt_tokens": 1951, "completion_tokens": 43, "total_tokens": 1994, "cost": 0.000416, "total_cost": 0.000416}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725648} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725648} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725775} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725777} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725777} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725777} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5707, "completion_tokens": 195, "total_tokens": 5902, "cost": 0.0009730499999999999, "total_cost": 0.0009730499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725786} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725786} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725789} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725791} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725791} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725791} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5707, "completion_tokens": 581, "total_tokens": 6288, "cost": 0.0012046499999999998, "total_cost": 0.0012046499999999998}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725820} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725820} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725846} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725848} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725848} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725848} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725860} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725862} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725864} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725864} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725864} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 5707, "completion_tokens": 1253, "total_tokens": 6960, "cost": 0.0016078499999999999, "total_cost": 0.0016078499999999999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725927} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746725927} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} -{"event": "cli session", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726378} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726382} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced", "prompt_tokens": 6865, "completion_tokens": 82, "total_tokens": 6947, "cost": 0.00940125, "total_cost": 0.00940125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726385} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726426} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726426} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726443} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726482} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726484} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726490} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726501} -{"event": "message_send_exception", "properties": {"exception": "Only one live display may be active at once"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726502} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726502} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726515} -{"event": "message_send", "properties": {"main_model": "gemini/gemini-2.5-pro-preview-03-25", "weak_model": "gemini/gemini-2.0-flash", "editor_model": "gemini/gemini-2.5-pro-preview-03-25", "edit_format": "diff-fenced", "prompt_tokens": 6866, "completion_tokens": 199, "total_tokens": 7065, "cost": 0.0105725, "total_cost": 0.0105725}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726540} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726540} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726547} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726548} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726548} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726548} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726553} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726913} -{"event": "repo", "properties": {"num_files": 621}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726914} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726914} -{"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": 1746726914} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726926} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726931} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726951} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726959} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726990} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746726990} -{"event": "message_send", "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": "ask", "prompt_tokens": 14008, "completion_tokens": 3802, "total_tokens": 17810, "cost": 0.05553000000000001, "total_cost": 0.05553000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727053} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727062} -{"event": "message_send", "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", "prompt_tokens": 19187, "completion_tokens": 3743, "total_tokens": 22930, "cost": 0.06141375, "total_cost": 0.11694375000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727102} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727129} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727152} -{"event": "message_send", "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", "prompt_tokens": 38503, "completion_tokens": 672, "total_tokens": 39175, "cost": 0.05484875, "total_cost": 0.17179250000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727163} -{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727208} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727226} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727229} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727256} -{"event": "message_send", "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", "prompt_tokens": 31466, "completion_tokens": 273, "total_tokens": 31739, "cost": 0.04206250000000001, "total_cost": 0.21385500000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727262} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727440} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727511} -{"event": "message_send", "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", "prompt_tokens": 31733, "completion_tokens": 312, "total_tokens": 32045, "cost": 0.04278625, "total_cost": 0.25664125000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746727535} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746728999} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746728999} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729004} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729006} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729006} -{"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": 1746729006} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729012} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729014} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729054} -{"event": "message_send", "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", "prompt_tokens": 13502, "completion_tokens": 156, "total_tokens": 13658, "cost": 0.0184375, "total_cost": 0.0184375}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729065} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746729303} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730192} -{"event": "message_send", "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", "prompt_tokens": 28623, "completion_tokens": 246, "total_tokens": 28869, "cost": 0.03823875, "total_cost": 0.03823875}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730236} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730236} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730237} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730241} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730406} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730407} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730407} -{"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": 1746730407} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730411} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730413} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730417} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730429} -{"event": "message_send", "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", "prompt_tokens": 18827, "completion_tokens": 786, "total_tokens": 19613, "cost": 0.031393750000000005, "total_cost": 0.031393750000000005}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730443} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730453} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730453} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730459} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730459} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730459} -{"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": 1746730459} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730461} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730545} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} -{"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": 1746730546} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730546} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730555} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730665} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730665} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730791} -{"event": "message_send", "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", "prompt_tokens": 31357, "completion_tokens": 990, "total_tokens": 32347, "cost": 0.04909625, "total_cost": 0.04909625}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730823} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730838} -{"event": "message_send", "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", "prompt_tokens": 5588, "completion_tokens": 184, "total_tokens": 5772, "cost": 0.008825000000000001, "total_cost": 0.008825000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730865} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730865} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730892} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730899} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730913} -{"event": "message_send", "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", "prompt_tokens": 32702, "completion_tokens": 583, "total_tokens": 33285, "cost": 0.046707500000000006, "total_cost": 0.09580375000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746730995} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731006} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731013} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731017} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731050} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731064} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731067} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731081} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731081} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731081} -{"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": 1746731081} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731084} -{"event": "exit", "properties": {"reason": "Completed main CLI coder.run"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731109} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731136} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731136} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731136} -{"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": 1746731136} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731138} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731141} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731144} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731153} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731154} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731154} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731154} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731156} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731176} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731177} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731177} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731177} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731179} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731198} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731206} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731212} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731275} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731277} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731289} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731289} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731289} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731294} -{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731300} -{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731303} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731311} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731314} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731325} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731360} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731360} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731487} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731495} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731495} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731495} -{"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": 1746731495} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731498} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731501} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731502} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731502} -{"event": "message_send", "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": "ask", "prompt_tokens": 8223, "completion_tokens": 2842, "total_tokens": 11065, "cost": 0.038698750000000004, "total_cost": 0.038698750000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731628} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731706} -{"event": "message_send", "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", "prompt_tokens": 10957, "completion_tokens": 1920, "total_tokens": 12877, "cost": 0.03289625, "total_cost": 0.071595}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731749} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731814} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731821} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731839} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731850} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731850} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731850} -{"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": 1746731850} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731875} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731875} -{"event": "message_send", "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": "ask", "prompt_tokens": 8249, "completion_tokens": 2823, "total_tokens": 11072, "cost": 0.03854125, "total_cost": 0.03854125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731951} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746731955} -{"event": "message_send", "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", "prompt_tokens": 11032, "completion_tokens": 1587, "total_tokens": 12619, "cost": 0.029660000000000006, "total_cost": 0.06820125}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732083} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732097} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732101} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732115} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732120} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732122} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732190} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732249} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732249} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732293} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732352} -{"event": "message_send", "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", "prompt_tokens": 13572, "completion_tokens": 1866, "total_tokens": 15438, "cost": 0.035625000000000004, "total_cost": 0.10382625000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732387} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732406} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732489} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732491} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732493} -{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732498} -{"event": "message_send", "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", "prompt_tokens": 5588, "completion_tokens": 340, "total_tokens": 5928, "cost": 0.010385000000000002, "total_cost": 0.010385000000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732503} -{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732510} -{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732512} -{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732514} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732518} -{"event": "message_send", "properties": {"main_model": "o3", "weak_model": "gemini/gemini-2.5-flash-preview-04-17", "editor_model": "gemini/gemini-2.5-pro-preview-05-06", "edit_format": "diff", "prompt_tokens": 9935, "completion_tokens": 5219, "total_tokens": 15154, "cost": 0.30811000000000005, "total_cost": 0.41193625000000006}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732604} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732723} -{"event": "message_send", "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", "prompt_tokens": 5588, "completion_tokens": 227, "total_tokens": 5815, "cost": 0.009255000000000001, "total_cost": 0.009255000000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732807} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732807} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732815} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732840} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732850} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732852} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732852} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732852} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732857} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732859} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732861} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732861} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732861} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732864} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732906} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732907} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732907} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746732910} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736688} -{"event": "model warning", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736691} -{"event": "exit", "properties": {"reason": "Keyboard interrupt during model warnings"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736755} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736759} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736762} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736762} -{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736762} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736765} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736769} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736771} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736771} -{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "diff"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736771} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736779} -{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/REDACTED", "edit_format": "diff", "prompt_tokens": 7487, "completion_tokens": 400, "total_tokens": 7887, "cost": 0.00136305, "total_cost": 0.00136305}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736790} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736795} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736798} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746736864} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737186} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737234} -{"event": "message_send", "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", "prompt_tokens": 30117, "completion_tokens": 361, "total_tokens": 30478, "cost": 0.04125625000000001, "total_cost": 0.04125625000000001}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737284} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737284} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737699} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737700} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737700} -{"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": 1746737700} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737727} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737727} -{"event": "message_send", "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": "ask", "prompt_tokens": 6435, "completion_tokens": 884, "total_tokens": 7319, "cost": 0.016883750000000003, "total_cost": 0.016883750000000003}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737803} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737820} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737921} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737926} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737936} -{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746737943} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738004} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738004} -{"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": "ask", "prompt_tokens": 33813, "completion_tokens": 554, "total_tokens": 34367, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738026} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738032} -{"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": 34494, "completion_tokens": 76, "total_tokens": 34570, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738036} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738068} -{"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": 34580, "completion_tokens": 76, "total_tokens": 34656, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738070} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738093} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738097} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738102} -{"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": 63505, "completion_tokens": 1191, "total_tokens": 64696, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738163} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738188} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738223} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738235} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738235} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738240} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738244} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738252} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738252} -{"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": "ask", "prompt_tokens": 6343, "completion_tokens": 2379, "total_tokens": 8722, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738367} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738407} -{"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": "ask", "prompt_tokens": 69472, "completion_tokens": 1827, "total_tokens": 71299, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738456} -{"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": 10045, "completion_tokens": 1102, "total_tokens": 11147, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738480} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738525} -{"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": 11528, "completion_tokens": 707, "total_tokens": 12235, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738566} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746738934} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739112} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739112} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739112} -{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739166} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739234} -{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739236} -{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739238} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739241} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739246} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739258} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739258} -{"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": 68151, "completion_tokens": 4679, "total_tokens": 72830, "cost": 0.86867, "total_cost": 0.86867}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739381} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739421} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739458} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739470} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739471} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739471} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739471} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739508} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739508} -{"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": 70789, "completion_tokens": 2403, "total_tokens": 73192, "cost": 0.80401, "total_cost": 1.6726800000000002}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739511} -{"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": "ask", "prompt_tokens": 9168, "completion_tokens": 989, "total_tokens": 10157, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739544} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739672} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739680} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739680} -{"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": 11940, "completion_tokens": 485, "total_tokens": 12425, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739687} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739735} -{"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": 12723, "completion_tokens": 66, "total_tokens": 12789, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739739} -{"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": 74182, "completion_tokens": 3265, "total_tokens": 77447, "cost": 0.8724200000000001, "total_cost": 2.5451}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739763} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739767} -{"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": 12906, "completion_tokens": 234, "total_tokens": 13140, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739778} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739786} -{"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": 76544, "completion_tokens": 1560, "total_tokens": 78104, "cost": 0.82784, "total_cost": 3.3729400000000003}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739829} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739844} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739847} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739877} -{"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": 19935, "completion_tokens": 409, "total_tokens": 20344, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739913} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739948} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746739948} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740094} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740151} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740156} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740158} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740183} -{"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": 25752, "completion_tokens": 537, "total_tokens": 26289, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740332} -{"event": "command_lint", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740602} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740637} -{"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": 23028, "completion_tokens": 209, "total_tokens": 23237, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740645} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740795} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740800} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740801} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740802} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740803} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740804} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} {"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} {"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} {"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} @@ -998,3 +424,577 @@ {"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} diff --git a/aider/website/docs/config/adv-model-settings.md b/aider/website/docs/config/adv-model-settings.md index e58228438..311dec9ce 100644 --- a/aider/website/docs/config/adv-model-settings.md +++ b/aider/website/docs/config/adv-model-settings.md @@ -1224,7 +1224,7 @@ cog.out("```\n") max_tokens: 8192 caches_by_default: true -- name: openrouter/google/gemini-2.5-pro-exp-03-25:free +- 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 use_repo_map: true diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 0bc54cfc5..9d846ab24 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,13 +264,9 @@ tr:hover { background-color: #f5f5f5; }
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25816,68243.6%
gemini/gemini-2.5-pro-preview-05-06582,75231.1%
o3316,72716.9%
openrouter/REDACTED131,7737.0%
gemini/gemini-2.5-pro-exp-03-25731,45638.9%
o3629,29133.5%
gemini/gemini-2.5-pro-preview-05-06389,85420.7%
openrouter/REDACTED106,6825.7%
gemini/gemini-2.5-pro-preview-03-2514,0120.7%
together_ai/REDACTED7,7070.4%
together_ai/Qwen/Qwen3-235B-A22B-fp8-tput1,9940.1%
- - - - - - - + + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25731,45638.9%
o3629,29133.5%
gemini/gemini-2.5-pro-preview-05-06389,85420.7%
openrouter/REDACTED106,6825.7%
gemini/gemini-2.5-pro-preview-03-2514,0120.7%
together_ai/REDACTED7,7070.4%
together_ai/Qwen/Qwen3-235B-A22B-fp8-tput1,9940.1%
gemini/gemini-2.5-pro-exp-03-25988,28868.0%
o3455,62031.4%
openrouter/REDACTED8,7450.6%
{: .note :} diff --git a/scripts/history_prompts.py b/scripts/history_prompts.py index 5902b9f57..a494d0755 100644 --- a/scripts/history_prompts.py +++ b/scripts/history_prompts.py @@ -1,15 +1,17 @@ history_prompt = """ -Update the history doc with changes shown in the diffs. -Describe actual user-facing changes, not every single commit that was made implementing them. +Update the history markdown doc with changes shown in the diffs. +Succinctly describe actual user-facing changes, not every single commit or detail that was made implementing them. -Only add new items not already listed. +Only add new items not already listed in the history markdown. Do NOT edit or update existing history entries. Do NOT add duplicate entries for changes that have existing history entries. +Do NOT add additional entries for small tweaks to features which are already listed in the existing history. -Pay attention to see if changes are later modified or superseded. +Pay attention to see if changes are later modified or superseded in the commit logs. The history doc should only reflect the *final* version of changes which have evolved within a version's commit history. If the history doc already describes the final behavior, don't document the changes that led us there. +Bullet each item at the start of the line with `-`. End each bullet with a period. If the change was made by someone other than Paul Gauthier note it at the end of the bullet point as ", by XXX." @@ -19,6 +21,6 @@ Changes in the .x-dev version should be listed under a "### main branch" heading Start a new "### main branch" section at the top of the file if needed. -Also, add this as the last bullet under the "### main branch" section: +Also, add this as the last bullet under the "### main branch" section, replacing an existing version if present: {aider_line} """ # noqa From af9ae849bdcd0972206917630bbddd8d4a47a830 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 08:51:44 -0700 Subject: [PATCH 123/195] docs: Add HN testimonial to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 14db049f8..24359dd76 100644 --- a/README.md +++ b/README.md @@ -173,5 +173,6 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u - *"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) From c6ad5c8cd2ada5f5ef4f100cb255c1efc7b6c666 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 08:56:27 -0700 Subject: [PATCH 124/195] build: Drop support for Python 3.9 --- pyproject.toml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 40a52f566..e92d278d4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -12,11 +12,10 @@ classifiers = [ "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.9", "Programming Language :: Python", "Topic :: Software Development", ] -requires-python = ">=3.9,<3.13" +requires-python = ">=3.10,<3.13" dynamic = ["dependencies", "optional-dependencies", "version"] [project.urls] From f8c154edced8de05158ba17585486e11deea117a Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 08:57:08 -0700 Subject: [PATCH 125/195] drop pinned networx and scipy and therefore py3.9 support #3973 --- requirements/requirements.in | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/requirements/requirements.in b/requirements/requirements.in index d1c49e35b..a29cdb033 100644 --- a/requirements/requirements.in +++ b/requirements/requirements.in @@ -35,14 +35,12 @@ google-generativeai # in matplotlib and a bunch of other deps # https://github.com/networkx/networkx/blob/d7132daa8588f653eacac7a5bae1ee85a183fa43/pyproject.toml#L57 # We really only need networkx itself and scipy for the repomap. -# Pin below v3.3 to retain python 3.9 compatibility. -networkx<3.3 +networkx # This is the one networkx dependency that we need. # Including it here explicitly because we # didn't specify networkx[default] above. -# Pin below 1.14 to retain python 3.9 compatibility. -scipy<1.14 +scipy # GitHub Release action failing on "KeyError: 'home-page'" # https://github.com/pypa/twine/blob/6fbf880ee60915cf1666348c4bdd78a10415f2ac/twine/__init__.py#L40 From f7a073961c68b4b7e3d3e2f55574eb6438901b37 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 08:59:16 -0700 Subject: [PATCH 126/195] ci: Drop Python 3.9 from CI matrix --- .github/workflows/check_pypi_version.yml | 2 +- .github/workflows/ubuntu-tests.yml | 2 +- .github/workflows/windows-tests.yml | 2 +- .github/workflows/windows_check_pypi_version.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/check_pypi_version.yml b/.github/workflows/check_pypi_version.yml index ba99404d3..b383e87be 100644 --- a/.github/workflows/check_pypi_version.yml +++ b/.github/workflows/check_pypi_version.yml @@ -15,7 +15,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] steps: - name: Set up Python ${{ matrix.python-version }} diff --git a/.github/workflows/ubuntu-tests.yml b/.github/workflows/ubuntu-tests.yml index 632c03757..753470af0 100644 --- a/.github/workflows/ubuntu-tests.yml +++ b/.github/workflows/ubuntu-tests.yml @@ -25,7 +25,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] steps: - name: Check out repository diff --git a/.github/workflows/windows-tests.yml b/.github/workflows/windows-tests.yml index 21799563e..f79f84b66 100644 --- a/.github/workflows/windows-tests.yml +++ b/.github/workflows/windows-tests.yml @@ -25,7 +25,7 @@ jobs: runs-on: windows-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] steps: - name: Check out repository diff --git a/.github/workflows/windows_check_pypi_version.yml b/.github/workflows/windows_check_pypi_version.yml index 960241326..6bd48fdf6 100644 --- a/.github/workflows/windows_check_pypi_version.yml +++ b/.github/workflows/windows_check_pypi_version.yml @@ -15,7 +15,7 @@ jobs: runs-on: windows-latest strategy: matrix: - python-version: ["3.9", "3.10", "3.11", "3.12"] + python-version: ["3.10", "3.11", "3.12"] defaults: run: shell: pwsh # Use PowerShell for all run steps From 88fba5f20b70f80656a099d64190f3164a8942d3 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 09:01:27 -0700 Subject: [PATCH 127/195] bump deps while dropping py3.9 support --- requirements.txt | 4 ++-- requirements/common-constraints.txt | 6 +++--- requirements/requirements-help.txt | 6 +++--- requirements/requirements-playwright.txt | 2 +- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/requirements.txt b/requirements.txt index 5fcad0a8b..d26543ad1 100644 --- a/requirements.txt +++ b/requirements.txt @@ -246,7 +246,7 @@ multidict==6.4.3 # -c requirements/common-constraints.txt # aiohttp # yarl -networkx==3.2.1 +networkx==3.4.2 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in @@ -410,7 +410,7 @@ rsa==4.9.1 # via # -c requirements/common-constraints.txt # google-auth -scipy==1.13.1 +scipy==1.15.3 # via # -c requirements/common-constraints.txt # -r requirements/requirements.in diff --git a/requirements/common-constraints.txt b/requirements/common-constraints.txt index 3406f7f40..122473cc7 100644 --- a/requirements/common-constraints.txt +++ b/requirements/common-constraints.txt @@ -156,7 +156,7 @@ googleapis-common-protos==1.70.0 # via # google-api-core # grpcio-status -greenlet==3.2.1 +greenlet==3.2.2 # via # playwright # sqlalchemy @@ -273,7 +273,7 @@ narwhals==1.38.2 # via altair nest-asyncio==1.6.0 # via llama-index-core -networkx==3.2.1 +networkx==3.4.2 # via # -r requirements/requirements.in # llama-index-core @@ -473,7 +473,7 @@ safetensors==0.5.3 # via transformers scikit-learn==1.6.1 # via sentence-transformers -scipy==1.13.1 +scipy==1.15.3 # via # -r requirements/requirements.in # scikit-learn diff --git a/requirements/requirements-help.txt b/requirements/requirements-help.txt index b930a01ff..2559b273f 100644 --- a/requirements/requirements-help.txt +++ b/requirements/requirements-help.txt @@ -81,7 +81,7 @@ fsspec==2025.3.2 # huggingface-hub # llama-index-core # torch -greenlet==3.2.1 +greenlet==3.2.2 # via # -c requirements/common-constraints.txt # sqlalchemy @@ -163,7 +163,7 @@ nest-asyncio==1.6.0 # via # -c requirements/common-constraints.txt # llama-index-core -networkx==3.2.1 +networkx==3.4.2 # via # -c requirements/common-constraints.txt # llama-index-core @@ -236,7 +236,7 @@ scikit-learn==1.6.1 # via # -c requirements/common-constraints.txt # sentence-transformers -scipy==1.13.1 +scipy==1.15.3 # via # -c requirements/common-constraints.txt # scikit-learn diff --git a/requirements/requirements-playwright.txt b/requirements/requirements-playwright.txt index e16058c8b..bdbf6e954 100644 --- a/requirements/requirements-playwright.txt +++ b/requirements/requirements-playwright.txt @@ -1,6 +1,6 @@ # This file was autogenerated by uv via the following command: # uv pip compile --no-strip-extras --constraint=requirements/common-constraints.txt --output-file=requirements/requirements-playwright.txt requirements/requirements-playwright.in -greenlet==3.2.1 +greenlet==3.2.2 # via # -c requirements/common-constraints.txt # playwright From dbfba029af29dfd5f353bf581525598e92920a0e Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 09:02:42 -0700 Subject: [PATCH 128/195] copy --- HISTORY.md | 1 + aider/website/HISTORY.md | 1 + aider/website/assets/sample-analytics.jsonl | 126 ++++++++++---------- aider/website/docs/faq.md | 4 +- aider/website/index.html | 5 + 5 files changed, 72 insertions(+), 65 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index d54a409f9..6a560a5f0 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -33,6 +33,7 @@ - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. - Displayed token count progress and the name of the file or identifier being processed during repo map updates. - Extended the waiting spinner to also show for non-streaming responses and further enhanced its animation with console width clipping, cursor hiding, and a more continuous appearance. +- Dropped support for Python 3.9. - Aider wrote 55% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 43a77b1a3..90e914e3a 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -57,6 +57,7 @@ cog.out(text) - The `aider-args` utility (or `python -m aider.args`) now defaults to printing a sample YAML configuration if no arguments are provided. - Displayed token count progress and the name of the file or identifier being processed during repo map updates. - Extended the waiting spinner to also show for non-streaming responses and further enhanced its animation with console width clipping, cursor hiding, and a more continuous appearance. +- Dropped support for Python 3.9. - Aider wrote 55% of the code in this release. ### Aider v0.82.3 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index b2c3425e3..f89c66245 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,66 +1,3 @@ -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740805} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740806} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740807} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740888} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} -{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740889} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740890} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740989} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746740989} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741045} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741116} -{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741117} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741117} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741117} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741128} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741128} -{"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": "ask", "prompt_tokens": 8311, "completion_tokens": 73, "total_tokens": 8384, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741133} -{"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": 34536, "completion_tokens": 239, "total_tokens": 34775, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741136} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741136} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741137} -{"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": "ask", "prompt_tokens": 4178, "completion_tokens": 107, "total_tokens": 4285, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741140} -{"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": 35036, "completion_tokens": 455, "total_tokens": 35491, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741205} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741205} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741206} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741208} -{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741243} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741377} -{"event": "ai-comments file-add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741377} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741384} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741385} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741385} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741385} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741388} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741388} -{"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": "ask", "prompt_tokens": 4335, "completion_tokens": 1387, "total_tokens": 5722, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741410} {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741467} {"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": "ask", "prompt_tokens": 6505, "completion_tokens": 1110, "total_tokens": 7615, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741488} {"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741511} @@ -998,3 +935,66 @@ {"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} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 9d846ab24..86ba9ac74 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,8 +264,8 @@ tr:hover { background-color: #f5f5f5; } - - + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25988,28868.0%
o3455,62031.4%
gemini/gemini-2.5-pro-exp-03-25944,54765.9%
o3478,95533.4%
openrouter/REDACTED8,7450.6%
diff --git a/aider/website/index.html b/aider/website/index.html index f21b176d1..862d793c3 100644 --- a/aider/website/index.html +++ b/aider/website/index.html @@ -433,6 +433,11 @@ const testimonials = [ author: "koleok", link: "https://discord.com/channels/1131200896827654144/1273248471394291754/1356727448372252783" }, + { + text: "Aider ... is the tool to benchmark against.", + author: "BeetleB", + link: "https://news.ycombinator.com/item?id=43930201" + }, { text: "aider is really cool", author: "kache (@yacineMTB)", From fcc85a7ae699161356ba2e9b7bbf9fdfcfac9511 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 09:17:59 -0700 Subject: [PATCH 129/195] fix: Update test mocks for get_commit_message signature --- tests/basic/test_coder.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/basic/test_coder.py b/tests/basic/test_coder.py index c58ade1b2..22739ac35 100644 --- a/tests/basic/test_coder.py +++ b/tests/basic/test_coder.py @@ -649,7 +649,7 @@ TWO coder.partial_response_function_call = dict() return [] - def mock_get_commit_message(diffs, context): + def mock_get_commit_message(diffs, context, user_language=None): self.assertNotIn("one", diffs) self.assertNotIn("ONE", diffs) return "commit message" @@ -704,7 +704,7 @@ three saved_diffs = [] - def mock_get_commit_message(diffs, context): + def mock_get_commit_message(diffs, context, user_language=None): saved_diffs.append(diffs) return "commit message" @@ -782,7 +782,7 @@ two saved_diffs = [] - def mock_get_commit_message(diffs, context): + def mock_get_commit_message(diffs, context, user_language=None): saved_diffs.append(diffs) return "commit message" From 91d7fbd65906fd2ba6b01c7f435f40e3f5dd891b Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 09:51:44 -0700 Subject: [PATCH 130/195] fix: Catch KeyboardInterrupt in main and end spinner --- aider/utils.py | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 8721d438e..80cb0f38e 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -489,11 +489,15 @@ def printable_shell_command(cmd_list): def main(): spinner = Spinner("Running spinner...") - for _ in range(100): - time.sleep(0.15) - spinner.step() - spinner.end() - print("Success!") + 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__": From c806f18698660232d49be0d58f3a5454800af02d Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 10:04:08 -0700 Subject: [PATCH 131/195] fix: Show cursor on KeyboardInterrupt exit --- aider/coders/base_coder.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index ab59600cf..95b450a8a 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -23,6 +23,7 @@ try: except ImportError: # Babel not installed – we will fall back to a small mapping Locale = None from json.decoder import JSONDecodeError +from rich.console import Console from pathlib import Path from typing import List @@ -981,6 +982,8 @@ class Coder: thresh = 2 # seconds if self.last_keyboard_interrupt and now - self.last_keyboard_interrupt < thresh: self.io.tool_warning("\n\n^C KeyboardInterrupt") + # Ensure cursor is visible on exit + Console().show_cursor(True) self.event("exit", reason="Control-C") sys.exit() From 0632c7a90f492a6a55b162949fc7b16447d18245 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 10:04:14 -0700 Subject: [PATCH 132/195] chore: reorder imports --- aider/coders/base_coder.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 95b450a8a..f0873a922 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -23,10 +23,11 @@ try: except ImportError: # Babel not installed – we will fall back to a small mapping Locale = None from json.decoder import JSONDecodeError -from rich.console import Console from pathlib import Path from typing import List +from rich.console import Console + from aider import __version__, models, prompts, urls, utils from aider.analytics import Analytics from aider.commands import Commands From 1b2eeaff56d016f633bc2187ae34c56ad52af2c8 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 10:05:56 -0700 Subject: [PATCH 133/195] fix: Ensure cursor is shown on first Ctrl+C --- aider/coders/base_coder.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index f0873a922..fc40d818e 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -978,13 +978,14 @@ class Coder: return inp def keyboard_interrupt(self): + # Ensure cursor is visible on exit + Console().show_cursor(True) + now = time.time() thresh = 2 # seconds if self.last_keyboard_interrupt and now - self.last_keyboard_interrupt < thresh: self.io.tool_warning("\n\n^C KeyboardInterrupt") - # Ensure cursor is visible on exit - Console().show_cursor(True) self.event("exit", reason="Control-C") sys.exit() From 9d74e8c730edf1c32a7f47cff1d60abfe8554418 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 10:05:59 -0700 Subject: [PATCH 134/195] refactor: Handle KeyboardInterrupt in get_repo_map --- aider/coders/base_coder.py | 58 ++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index fc40d818e..4cec92d6f 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -704,42 +704,46 @@ class Coder: if not self.repo_map: return - cur_msg_text = self.get_cur_message_text() - mentioned_fnames = self.get_file_mentions(cur_msg_text) - mentioned_idents = self.get_ident_mentions(cur_msg_text) + try: + cur_msg_text = self.get_cur_message_text() + mentioned_fnames = self.get_file_mentions(cur_msg_text) + mentioned_idents = self.get_ident_mentions(cur_msg_text) - mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents)) + mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents)) - all_abs_files = set(self.get_all_abs_files()) - repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files - chat_files = set(self.abs_fnames) | repo_abs_read_only_fnames - other_files = all_abs_files - chat_files + all_abs_files = set(self.get_all_abs_files()) + repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files + chat_files = set(self.abs_fnames) | repo_abs_read_only_fnames + other_files = all_abs_files - chat_files - repo_content = self.repo_map.get_repo_map( - chat_files, - other_files, - mentioned_fnames=mentioned_fnames, - mentioned_idents=mentioned_idents, - force_refresh=force_refresh, - ) - - # fall back to global repo map if files in chat are disjoint from rest of repo - if not repo_content: repo_content = self.repo_map.get_repo_map( - set(), - all_abs_files, + chat_files, + other_files, mentioned_fnames=mentioned_fnames, mentioned_idents=mentioned_idents, + force_refresh=force_refresh, ) - # fall back to completely unhinted repo - if not repo_content: - repo_content = self.repo_map.get_repo_map( - set(), - all_abs_files, - ) + # fall back to global repo map if files in chat are disjoint from rest of repo + if not repo_content: + repo_content = self.repo_map.get_repo_map( + set(), + all_abs_files, + mentioned_fnames=mentioned_fnames, + mentioned_idents=mentioned_idents, + ) - return repo_content + # fall back to completely unhinted repo + if not repo_content: + repo_content = self.repo_map.get_repo_map( + set(), + all_abs_files, + ) + + return repo_content + except KeyboardInterrupt: + self.keyboard_interrupt() + return None def get_repo_messages(self): repo_messages = [] From 7f3032056646469d0f27a67ab48b29f12ca9de97 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 10:07:21 -0700 Subject: [PATCH 135/195] chore: Disable pretty printing in benchmark I/O --- benchmark/benchmark.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/benchmark.py b/benchmark/benchmark.py index 3cfbe104d..bf09bafef 100755 --- a/benchmark/benchmark.py +++ b/benchmark/benchmark.py @@ -784,7 +784,7 @@ def run_test_real( instructions += prompts.instructions_addendum.format(file_list=file_list) io = InputOutput( - pretty=True, + pretty=False, yes=True, chat_history_file=history_fname, ) From ed262b8b06c6feeefda26dff57c9507b51052f90 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 10:27:22 -0700 Subject: [PATCH 136/195] Revert "refactor: Handle KeyboardInterrupt in get_repo_map" This reverts commit 9d74e8c730edf1c32a7f47cff1d60abfe8554418. --- aider/coders/base_coder.py | 58 ++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 4cec92d6f..fc40d818e 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -704,46 +704,42 @@ class Coder: if not self.repo_map: return - try: - cur_msg_text = self.get_cur_message_text() - mentioned_fnames = self.get_file_mentions(cur_msg_text) - mentioned_idents = self.get_ident_mentions(cur_msg_text) + cur_msg_text = self.get_cur_message_text() + mentioned_fnames = self.get_file_mentions(cur_msg_text) + mentioned_idents = self.get_ident_mentions(cur_msg_text) - mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents)) + mentioned_fnames.update(self.get_ident_filename_matches(mentioned_idents)) - all_abs_files = set(self.get_all_abs_files()) - repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files - chat_files = set(self.abs_fnames) | repo_abs_read_only_fnames - other_files = all_abs_files - chat_files + all_abs_files = set(self.get_all_abs_files()) + repo_abs_read_only_fnames = set(self.abs_read_only_fnames) & all_abs_files + chat_files = set(self.abs_fnames) | repo_abs_read_only_fnames + other_files = all_abs_files - chat_files + repo_content = self.repo_map.get_repo_map( + chat_files, + other_files, + mentioned_fnames=mentioned_fnames, + mentioned_idents=mentioned_idents, + force_refresh=force_refresh, + ) + + # fall back to global repo map if files in chat are disjoint from rest of repo + if not repo_content: repo_content = self.repo_map.get_repo_map( - chat_files, - other_files, + set(), + all_abs_files, mentioned_fnames=mentioned_fnames, mentioned_idents=mentioned_idents, - force_refresh=force_refresh, ) - # fall back to global repo map if files in chat are disjoint from rest of repo - if not repo_content: - repo_content = self.repo_map.get_repo_map( - set(), - all_abs_files, - mentioned_fnames=mentioned_fnames, - mentioned_idents=mentioned_idents, - ) + # fall back to completely unhinted repo + if not repo_content: + repo_content = self.repo_map.get_repo_map( + set(), + all_abs_files, + ) - # fall back to completely unhinted repo - if not repo_content: - repo_content = self.repo_map.get_repo_map( - set(), - all_abs_files, - ) - - return repo_content - except KeyboardInterrupt: - self.keyboard_interrupt() - return None + return repo_content def get_repo_messages(self): repo_messages = [] From 28d87767cdae998598ed348112297e60e6fe1520 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 13:37:54 -0700 Subject: [PATCH 137/195] update discord invite link --- README.md | 2 +- aider/website/_config.yml | 4 ++-- aider/website/_includes/help.md | 2 +- aider/website/_includes/nav_footer_custom.html | 2 +- aider/website/index.html | 6 +++--- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index 24359dd76..d4677b58c 100644 --- a/README.md +++ b/README.md @@ -135,7 +135,7 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u ### Community & Resources - [LLM Leaderboards](https://aider.chat/docs/leaderboards/) - [GitHub Repository](https://github.com/Aider-AI/aider) -- [Discord Community](https://discord.gg/Tv2uQnR88V) +- [Discord Community](https://discord.gg/Y7X7bhMQFV) - [Blog](https://aider.chat/blog/) ## Kind Words From Users diff --git a/aider/website/_config.yml b/aider/website/_config.yml index 20eebdd5e..c6e12f11e 100644 --- a/aider/website/_config.yml +++ b/aider/website/_config.yml @@ -32,7 +32,7 @@ aux_links: "GitHub": - "https://github.com/Aider-AI/aider" "Discord": - - "https://discord.gg/Tv2uQnR88V" + - "https://discord.gg/Y7X7bhMQFV" "Blog": - "/blog/" @@ -40,7 +40,7 @@ nav_external_links: - title: "GitHub" url: "https://github.com/Aider-AI/aider" - title: "Discord" - url: "https://discord.gg/Tv2uQnR88V" + url: "https://discord.gg/Y7X7bhMQFV" repository: Aider-AI/aider diff --git a/aider/website/_includes/help.md b/aider/website/_includes/help.md index 661af1043..f28a48273 100644 --- a/aider/website/_includes/help.md +++ b/aider/website/_includes/help.md @@ -2,7 +2,7 @@ If you need more help, please check our [GitHub issues](https://github.com/Aider-AI/aider/issues) and file a new issue if your problem isn't discussed. Or drop into our -[Discord](https://discord.gg/Tv2uQnR88V) +[Discord](https://discord.gg/Y7X7bhMQFV) to chat with us. When reporting problems, it is very helpful if you can provide: diff --git a/aider/website/_includes/nav_footer_custom.html b/aider/website/_includes/nav_footer_custom.html index 7c15832fa..bc2b06268 100644 --- a/aider/website/_includes/nav_footer_custom.html +++ b/aider/website/_includes/nav_footer_custom.html @@ -3,5 +3,5 @@ Aider is on GitHub and - Discord. + Discord. diff --git a/aider/website/index.html b/aider/website/index.html index 862d793c3..c632fbc6c 100644 --- a/aider/website/index.html +++ b/aider/website/index.html @@ -27,7 +27,7 @@ layout: none Features Getting Started Documentation - Discord + Discord GitHub
@@ -641,7 +641,7 @@ const testimonials = [
@@ -654,7 +654,7 @@ const testimonials = [ From 425fb6d7a8be99316244726349ea2015b648ecc6 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 13:38:17 -0700 Subject: [PATCH 138/195] copy --- aider/website/assets/sample-analytics.jsonl | 516 ++++++++++---------- aider/website/docs/faq.md | 6 +- 2 files changed, 261 insertions(+), 261 deletions(-) diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index f89c66245..db51c4c31 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,261 +1,3 @@ -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741467} -{"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": "ask", "prompt_tokens": 6505, "completion_tokens": 1110, "total_tokens": 7615, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741488} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741511} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741511} -{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741532} -{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741532} -{"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": "ask", "prompt_tokens": 7902, "completion_tokens": 920, "total_tokens": 8822, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741538} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741601} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741601} -{"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": "ask", "prompt_tokens": 8862, "completion_tokens": 194, "total_tokens": 9056, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741609} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741671} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741671} -{"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": "ask", "prompt_tokens": 9155, "completion_tokens": 462, "total_tokens": 9617, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741683} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741695} -{"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": 9895, "completion_tokens": 88, "total_tokens": 9983, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741700} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741775} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741804} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741804} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741804} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741805} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741809} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741816} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741829} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741829} -{"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": "ask", "prompt_tokens": 16879, "completion_tokens": 935, "total_tokens": 17814, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741873} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741906} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741908} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741912} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741912} -{"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": "ask", "prompt_tokens": 12536, "completion_tokens": 933, "total_tokens": 13469, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746741942} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742038} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742108} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742115} -{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742120} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742120} -{"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": "ask", "prompt_tokens": 11006, "completion_tokens": 326, "total_tokens": 11332, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742135} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742147} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742446} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742455} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742470} -{"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": 13513, "completion_tokens": 112, "total_tokens": 13625, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742482} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742487} -{"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": 22061, "completion_tokens": 1859, "total_tokens": 23920, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742513} -{"event": "command_reset", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742530} -{"event": "command_run", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742532} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742538} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742603} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742604} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742605} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742606} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742607} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742608} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742609} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742610} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742689} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} -{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742690} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742691} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742819} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742872} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742874} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742915} -{"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": 8099, "completion_tokens": 195, "total_tokens": 8294, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746742987} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743000} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743044} -{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743046} -{"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": 35736, "completion_tokens": 428, "total_tokens": 36164, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743115} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743115} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743135} -{"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": 8113, "completion_tokens": 2128, "total_tokens": 10241, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743267} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743309} -{"event": "command_undo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743316} -{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743338} -{"event": "command_reasoning-effort", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743354} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743365} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} -{"event": "repo", "properties": {"num_files": 623}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} -{"event": "cli session", "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"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743458} -{"event": "command_model", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743493} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743503} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743506} -{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743510} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743518} -{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743527} -{"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": 10143, "completion_tokens": 12389, "total_tokens": 22532, "cost": 0.59699, "total_cost": 0.59699}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743568} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743572} -{"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": 26024, "completion_tokens": 1961, "total_tokens": 27985, "cost": 0.33868000000000004, "total_cost": 0.33868000000000004}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743595} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743604} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743607} -{"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": 27270, "completion_tokens": 246, "total_tokens": 27516, "cost": 0.10878, "total_cost": 0.44746}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743612} -{"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": 11257, "completion_tokens": 2663, "total_tokens": 13920, "cost": 0.21909, "total_cost": 0.81608}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743647} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743701} -{"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": 11535, "completion_tokens": 1714, "total_tokens": 13249, "cost": 0.18391000000000002, "total_cost": 0.99999}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743733} -{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743780} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} -{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743931} -{"event": "exit", "properties": {"reason": "Completed --message"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743940} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743964} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743965} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743966} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743967} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746743968} -{"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} @@ -998,3 +740,261 @@ {"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} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 86ba9ac74..60d58efc7 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,9 +264,9 @@ tr:hover { background-color: #f5f5f5; } - - - + + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25944,54765.9%
o3478,95533.4%
openrouter/REDACTED8,7450.6%
gemini/gemini-2.5-pro-exp-03-25890,05769.9%
o3373,75329.4%
openrouter/REDACTED8,7450.7%
{: .note :} From 09880ee8f4e0f59992e3fc31610e0efe5940ffb2 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 15:15:41 -0700 Subject: [PATCH 139/195] qwen3 official --- aider/website/_data/qwen3_leaderboard.yml | 29 +++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/aider/website/_data/qwen3_leaderboard.yml b/aider/website/_data/qwen3_leaderboard.yml index 2e9eac1fc..5b8e3233d 100644 --- a/aider/website/_data/qwen3_leaderboard.yml +++ b/aider/website/_data/qwen3_leaderboard.yml @@ -213,3 +213,32 @@ 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 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 \ No newline at end of file From 23cb604e6e5c5b1afa9a7f1d582f4d9e6d90929b Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 15:41:04 -0700 Subject: [PATCH 140/195] version bump to 0.83.0 --- aider/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/__init__.py b/aider/__init__.py index 5b4532b97..12acdc951 100644 --- a/aider/__init__.py +++ b/aider/__init__.py @@ -1,6 +1,6 @@ from packaging import version -__version__ = "0.82.4.dev" +__version__ = "0.83.0" safe_version = __version__ try: From f928ffc3fc58fa184f517c6d9b09f584d5b7c54b Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 15:41:07 -0700 Subject: [PATCH 141/195] set version to 0.83.1.dev --- aider/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/__init__.py b/aider/__init__.py index 12acdc951..1e9327789 100644 --- a/aider/__init__.py +++ b/aider/__init__.py @@ -1,6 +1,6 @@ from packaging import version -__version__ = "0.83.0" +__version__ = "0.83.1.dev" safe_version = __version__ try: From 637a31e083cf665abff46cb7d6f9006afa6312c0 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 15:51:13 -0700 Subject: [PATCH 142/195] blame --- HISTORY.md | 2 +- README.md | 2 +- aider/website/HISTORY.md | 2 +- aider/website/_data/blame.yml | 159 +++++++++++++++++ aider/website/assets/sample-analytics.jsonl | 184 ++++++++++---------- aider/website/docs/faq.md | 6 +- aider/website/index.html | 2 +- 7 files changed, 258 insertions(+), 99 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 6a560a5f0..2ca9407ca 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,6 +1,6 @@ # Release history -### main branch +### Aider v0.83.0 - Added support for `gemini-2.5-pro-preview-05-06` models. - Added support for `qwen3-235b` models. diff --git a/README.md b/README.md index d4677b58c..d3068ea70 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ src="https://img.shields.io/badge/📈%20Tokens%2Fweek-15B-3498db?style=flat-squ OpenRouter Ranking Singularity +src="https://img.shields.io/badge/🔄%20Singularity-54%25-e74c3c?style=flat-square&labelColor=555555"/>

diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 90e914e3a..7606eff13 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -24,7 +24,7 @@ cog.out(text) ]]]--> -### main branch +### Aider v0.83.0 - Added support for `gemini-2.5-pro-preview-05-06` models. - Added support for `qwen3-235b` models. diff --git a/aider/website/_data/blame.yml b/aider/website/_data/blame.yml index a5d280d60..f84c6c444 100644 --- a/aider/website/_data/blame.yml +++ b/aider/website/_data/blame.yml @@ -4500,3 +4500,162 @@ Paul Gauthier (aider): 1567 start_tag: v0.81.0 total_lines: 1706 +- aider_percentage: 54.32 + aider_total: 1409 + 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: 21 + Andrew Grigorev (aider): 5 + 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: 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: 115 + Andrew Grigorev (aider): 21 + 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: 75 + Andrew Grigorev (aider): 65 + 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: 111 + Paul Gauthier: 25 + Paul Gauthier (aider): 3 + grand_total: + Andrew Grigorev: 332 + Andrew Grigorev (aider): 93 + 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 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index db51c4c31..7ddd3d688 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,95 +1,3 @@ -{"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} @@ -998,3 +906,95 @@ {"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": 1746830323} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830323} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830323} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830323} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830323} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830323} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830324} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830325} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830326} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830327} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830328} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830329} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830415} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830416} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830445} +{"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830445} +{"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830445} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 60d58efc7..dc3923f20 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,9 +264,9 @@ tr:hover { background-color: #f5f5f5; } - - - + + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25890,05769.9%
o3373,75329.4%
openrouter/REDACTED8,7450.7%
gemini/gemini-2.5-pro-exp-03-25867,80983.2%
o3166,39116.0%
openrouter/REDACTED8,7450.8%
{: .note :} diff --git a/aider/website/index.html b/aider/website/index.html index c632fbc6c..ea953b030 100644 --- a/aider/website/index.html +++ b/aider/website/index.html @@ -85,7 +85,7 @@ cog.out(text) 🔄 Singularity - 92% + 54% From cad31b638b6da5af75b5d5890d672e8425d95af8 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 15:57:04 -0700 Subject: [PATCH 143/195] copy --- aider/website/_posts/2025-05-08-qwen3.md | 25 ++++++++++++++++++++++++ 1 file changed, 25 insertions(+) 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 From 3dcb23c1936601e1b8616a47b7cb3e590ac58cc3 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 18:03:17 -0700 Subject: [PATCH 144/195] qwen3 whole official api --- aider/website/_data/polyglot_leaderboard.yml | 37 ++++++++++---------- aider/website/_data/qwen3_leaderboard.yml | 30 +++++++++++++++- 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/aider/website/_data/polyglot_leaderboard.yml b/aider/website/_data/polyglot_leaderboard.yml index 92cac000a..561a25517 100644 --- a/aider/website/_data/polyglot_leaderboard.yml +++ b/aider/website/_data/polyglot_leaderboard.yml @@ -1279,30 +1279,31 @@ 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 - percent_cases_well_formed: 91.6 - error_outputs: 58 - num_malformed_responses: 29 - num_with_malformed_responses: 19 - user_asks: 102 + 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: 0 - completion_tokens: 0 + prompt_tokens: 2816192 + completion_tokens: 342062 test_timeouts: 1 total_tests: 225 - command: aider --model openrouter/qwen/qwen3-235b-a22b - date: 2025-05-08 + command: aider --model openai/qwen3-235b-a22b + date: 2025-05-09 versions: 0.82.4.dev - seconds_per_case: 428.1 - total_cost: 1.8037 \ No newline at end of file + seconds_per_case: 45.4 + total_cost: 0.0000 + \ No newline at end of file diff --git a/aider/website/_data/qwen3_leaderboard.yml b/aider/website/_data/qwen3_leaderboard.yml index 5b8e3233d..68233c26f 100644 --- a/aider/website/_data/qwen3_leaderboard.yml +++ b/aider/website/_data/qwen3_leaderboard.yml @@ -217,7 +217,7 @@ - dirname: 2025-05-09-17-02-02--qwen3-235b-a22b.unthink_16k_diff test_cases: 225 - model: Qwen3 235B A22B no think, via official Alibaba API + model: Qwen3 235B A22B diff, no think, via official Alibaba API edit_format: diff commit_hash: 91d7fbd-dirty pass_rate_1: 28.9 @@ -241,4 +241,32 @@ 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 From 3daf7d4df33bf590d4be04ae541216b67b6e3087 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Fri, 9 May 2025 18:04:04 -0700 Subject: [PATCH 145/195] copy --- aider/website/assets/sample-analytics.jsonl | 36 ++++++++++----------- aider/website/docs/faq.md | 4 +-- aider/website/docs/leaderboards/index.md | 2 +- 3 files changed, 21 insertions(+), 21 deletions(-) diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 7ddd3d688..a8c7941a3 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,21 +1,3 @@ -{"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} @@ -998,3 +980,21 @@ {"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830445} {"event": "gui session", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830445} {"event": "exit", "properties": {"reason": "GUI session ended"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746830445} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831441} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831441} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831441} +{"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": 1746831442} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831491} +{"event": "command_reset", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831603} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831605} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831623} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831655} +{"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": 7988, "completion_tokens": 533, "total_tokens": 8521, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831752} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831771} +{"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": 8860, "completion_tokens": 177, "total_tokens": 9037, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831775} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831828} +{"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": 9164, "completion_tokens": 422, "total_tokens": 9586, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831865} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831893} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831893} +{"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": 10158, "completion_tokens": 449, "total_tokens": 10607, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831934} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746838826} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index dc3923f20..351b010cd 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,8 +264,8 @@ tr:hover { background-color: #f5f5f5; } - - + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25867,80983.2%
o3166,39116.0%
gemini/gemini-2.5-pro-exp-03-25855,03483.0%
o3166,39116.2%
openrouter/REDACTED8,7450.8%
diff --git a/aider/website/docs/leaderboards/index.md b/aider/website/docs/leaderboards/index.md index 865f73b3a..1485ce532 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. +May 09, 2025.

From 49b3f85cc5a9e1dd5ae61d8d076f8c8a9abf745d Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 18:07:00 -0700 Subject: [PATCH 146/195] feat: Add spinner when generating commit message --- aider/repo.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/aider/repo.py b/aider/repo.py index 0723c6c14..e60a2f20e 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -20,6 +20,7 @@ import pathspec from aider import prompts, utils +from .waiting import WaitingSpinner from .dump import dump # noqa: F401 ANY_GIT_ERROR += [ @@ -342,14 +343,15 @@ class GitRepo: ] 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 + with WaitingSpinner("Generating commit message"): + 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 if not commit_message: self.io.tool_error("Failed to generate commit message!") From 43cd0164e0263f64414e186f52651852cef4590b Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 18:07:05 -0700 Subject: [PATCH 147/195] style: Apply linter formatting --- aider/repo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/repo.py b/aider/repo.py index e60a2f20e..bbea704e7 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -20,8 +20,8 @@ import pathspec from aider import prompts, utils -from .waiting import WaitingSpinner from .dump import dump # noqa: F401 +from .waiting import WaitingSpinner ANY_GIT_ERROR += [ OSError, From a9cb1a9d611f17b37932c11a33fdb6d5493c9af4 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 18:07:58 -0700 Subject: [PATCH 148/195] chore: Move commit message spinner into model loop and show model name --- aider/repo.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/aider/repo.py b/aider/repo.py index bbea704e7..375d2309e 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -343,15 +343,16 @@ class GitRepo: ] commit_message = None - with WaitingSpinner("Generating commit message"): - for model in self.models: + for model in self.models: + spinner_text = f"Waiting for {model.name} to generate commit message" + with WaitingSpinner(spinner_text): 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 + break # Found a model that could generate the message if not commit_message: self.io.tool_error("Failed to generate commit message!") From c11d21a23031162e0bf177d1afbfa048d32efa6f Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Fri, 9 May 2025 18:08:04 -0700 Subject: [PATCH 149/195] style: apply linter fixes --- aider/repo.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/repo.py b/aider/repo.py index 375d2309e..e0f7ed185 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -352,7 +352,7 @@ class GitRepo: continue commit_message = model.simple_send_with_retries(messages) if commit_message: - break # Found a model that could generate the message + break # Found a model that could generate the message if not commit_message: self.io.tool_error("Failed to generate commit message!") From 0b112e948f6ea1690f9e93f10e6ba8c4cfbd1a92 Mon Sep 17 00:00:00 2001 From: saviour Date: Sat, 10 May 2025 21:38:08 +0900 Subject: [PATCH 150/195] feat: Enable file completion for all file-related arguments --- aider/args.py | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) diff --git a/aider/args.py b/aider/args.py index 1543bb07e..bb81cae01 100644 --- a/aider/args.py +++ b/aider/args.py @@ -43,7 +43,7 @@ def get_parser(default_config_files, git_root): 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 +110,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", @@ -262,13 +262,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 +280,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") @@ -552,7 +552,7 @@ 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", @@ -619,7 +619,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 +637,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 +698,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", @@ -734,7 +734,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 +755,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 +763,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, From 8c755bf0326aa1b4025db03c9e2864042478868e Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 10 May 2025 07:10:12 -0700 Subject: [PATCH 151/195] refactor: move Spinner class to waiting module --- aider/utils.py | 167 +---------------------------------------------- aider/waiting.py | 166 +++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 166 insertions(+), 167 deletions(-) diff --git a/aider/utils.py b/aider/utils.py index 80cb0f38e..dabafe041 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -7,9 +7,9 @@ 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"} @@ -251,154 +251,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 +337,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..d79754364 100644 --- a/aider/waiting.py +++ b/aider/waiting.py @@ -14,11 +14,159 @@ Use it like: """ import threading +import sys 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: """Background spinner that can be started/stopped safely.""" @@ -53,3 +201,19 @@ 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() From 7d3c8176640c4647b4afb5f8395e323fef762fa6 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 10 May 2025 07:10:19 -0700 Subject: [PATCH 152/195] style: apply code formatting --- aider/waiting.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/aider/waiting.py b/aider/waiting.py index d79754364..4d2164f4f 100644 --- a/aider/waiting.py +++ b/aider/waiting.py @@ -13,8 +13,8 @@ Use it like: spinner.stop() """ -import threading import sys +import threading import time from rich.console import Console @@ -167,6 +167,7 @@ class Spinner: self.console.show_cursor(True) self.visible = False + class WaitingSpinner: """Background spinner that can be started/stopped safely.""" @@ -202,6 +203,7 @@ class WaitingSpinner: def __exit__(self, exc_type, exc_val, exc_tb): self.stop() + def main(): spinner = Spinner("Running spinner...") try: From ee4e9c971196eada72e363458662ab8c1a496c17 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 10 May 2025 07:10:28 -0700 Subject: [PATCH 153/195] refactor: Remove unused time import --- aider/utils.py | 1 - 1 file changed, 1 deletion(-) diff --git a/aider/utils.py b/aider/utils.py index dabafe041..fd534c315 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -3,7 +3,6 @@ import platform import subprocess import sys import tempfile -import time from pathlib import Path import oslex From 97379aa02fc95ab9d752e11c4ab1c6baee74989b Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 10 May 2025 07:11:08 -0700 Subject: [PATCH 154/195] fix: Update Spinner import path --- aider/repomap.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/repomap.py b/aider/repomap.py index 6328a701f..5c40c469b 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) From 34409311a3d62e9f795b5c566c894191e7e696a3 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Sat, 10 May 2025 07:21:21 -0700 Subject: [PATCH 155/195] chore: Adjust spinner text and spinner timing --- aider/repo.py | 2 +- aider/waiting.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/aider/repo.py b/aider/repo.py index e0f7ed185..01652b15f 100644 --- a/aider/repo.py +++ b/aider/repo.py @@ -344,7 +344,7 @@ class GitRepo: commit_message = None for model in self.models: - spinner_text = f"Waiting for {model.name} to generate commit message" + spinner_text = f"Generating commit message with {model.name}" with WaitingSpinner(spinner_text): num_tokens = model.token_count(messages) max_tokens = model.info.get("max_input_tokens") or 0 diff --git a/aider/waiting.py b/aider/waiting.py index 4d2164f4f..9c2f72bc7 100644 --- a/aider/waiting.py +++ b/aider/waiting.py @@ -179,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): @@ -192,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 From 2a410fab81d7f0ff6b05850ee663da832886bb96 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 10 May 2025 07:24:33 -0700 Subject: [PATCH 156/195] docs: Add platform/community to kind words in README --- README.md | 70 +++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index d3068ea70..e36f5d09d 100644 --- a/README.md +++ b/README.md @@ -140,39 +140,39 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u ## 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... 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) on X +- *"The best free open source AI coding assistant."* — [IndyDevDan](https://youtu.be/YALpX8oOn78) on YouTube +- *"The best AI coding assistant so far."* — [Matthew Berman](https://www.youtube.com/watch?v=df8afeb1FY8) on YouTube +- *"Aider ... has easily quadrupled my coding productivity."* — [SOLAR_FIELDS](https://news.ycombinator.com/item?id=36212100) on Hacker News +- *"It's a cool workflow... Aider's ergonomics are perfect for me."* — [qup](https://news.ycombinator.com/item?id=38185326) on Hacker News +- *"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) on GitHub +- *"What an amazing tool. It's incredible."* — [valyagolev](https://github.com/Aider-AI/aider/issues/6#issue-1722897858) on GitHub +- *"Aider is such an astounding thing!"* — [cgrothaus](https://github.com/Aider-AI/aider/issues/82#issuecomment-1631876700) on GitHub +- *"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) on X +- *"THANK YOU for Aider! It really feels like a glimpse into the future of coding."* — [derwiki](https://news.ycombinator.com/item?id=38205643) on Hacker News +- *"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) on Discord +- *"This project is stellar."* — [funkytaco](https://github.com/Aider-AI/aider/issues/112#issuecomment-1637429008) on GitHub +- *"Amazing project, definitely the best AI coding assistant I've used."* — [joshuavial](https://github.com/Aider-AI/aider/issues/84) on GitHub +- *"I absolutely love using Aider ... It makes software development feel so much lighter as an experience."* — [principalideal0](https://discord.com/channels/1131200896827654144/1133421607499595858/1229689636012691468) on Discord +- *"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) on Reddit +- *"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) on Discord +- *"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) on Discord +- *"Aider is amazing, coupled with Sonnet 3.5 it's quite mind blowing."* — [Josh Dingus](https://discord.com/channels/1131200896827654144/1133060684540813372/1262374225298198548) on Discord +- *"Hands down, this is the best AI coding assistant tool so far."* — [IndyDevDan](https://www.youtube.com/watch?v=MPYFPvxfGZs) on YouTube +- *"[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) on Discord +- *"Best agent for actual dev work in existing codebases."* — [Nick Dobos](https://twitter.com/NickADobos/status/1690408967963652097?s=20) on X +- *"One of my favorite pieces of software. Blazing trails on new paradigms!"* — [Chris Wall](https://x.com/chris65536/status/1905053299251798432) on X +- *"Aider has been revolutionary for me and my work."* — [Starry Hope](https://x.com/starryhopeblog/status/1904985812137132056) on X +- *"Try aider! One of the best ways to vibe code."* — [Chris Wall](https://x.com/Chris65536/status/1905053418961391929) on X +- *"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/) on Reddit +- *"Aider is also my best friend."* — [jzn21](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27dcnb/) on Reddit +- *"Try Aider, it's worth it."* — [jorgejhms](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27cp99/) on Reddit +- *"I like aider :)"* — [Chenwei Cui](https://x.com/ccui42/status/1904965344999145698) on X +- *"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) on X +- *"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) on Discord +- *"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) on X +- *"thanks to aider, i have started and finished three personal projects within the last two days"* — [joseph stalzyn](https://x.com/anitaheeder/status/1908338609645904160) on X +- *"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) on Discord +- *"Aider ... is the tool to benchmark against."* — [BeetleB](https://news.ycombinator.com/item?id=43930201) on Hacker News +- *"aider is really cool"* — [kache (@yacineMTB)](https://x.com/yacineMTB/status/1911224442430124387) on X From 883aa9e03db7ea03df1c50a6c085c1856293a77f Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Sat, 10 May 2025 07:45:43 -0700 Subject: [PATCH 157/195] docs: Include platform in testimonial link text --- README.md | 70 +++++++++++++++++++++++++++---------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) diff --git a/README.md b/README.md index e36f5d09d..c82646780 100644 --- a/README.md +++ b/README.md @@ -140,39 +140,39 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u ## 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) on X -- *"The best free open source AI coding assistant."* — [IndyDevDan](https://youtu.be/YALpX8oOn78) on YouTube -- *"The best AI coding assistant so far."* — [Matthew Berman](https://www.youtube.com/watch?v=df8afeb1FY8) on YouTube -- *"Aider ... has easily quadrupled my coding productivity."* — [SOLAR_FIELDS](https://news.ycombinator.com/item?id=36212100) on Hacker News -- *"It's a cool workflow... Aider's ergonomics are perfect for me."* — [qup](https://news.ycombinator.com/item?id=38185326) on Hacker News -- *"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) on GitHub -- *"What an amazing tool. It's incredible."* — [valyagolev](https://github.com/Aider-AI/aider/issues/6#issue-1722897858) on GitHub -- *"Aider is such an astounding thing!"* — [cgrothaus](https://github.com/Aider-AI/aider/issues/82#issuecomment-1631876700) on GitHub -- *"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) on X -- *"THANK YOU for Aider! It really feels like a glimpse into the future of coding."* — [derwiki](https://news.ycombinator.com/item?id=38205643) on Hacker News -- *"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) on Discord -- *"This project is stellar."* — [funkytaco](https://github.com/Aider-AI/aider/issues/112#issuecomment-1637429008) on GitHub -- *"Amazing project, definitely the best AI coding assistant I've used."* — [joshuavial](https://github.com/Aider-AI/aider/issues/84) on GitHub -- *"I absolutely love using Aider ... It makes software development feel so much lighter as an experience."* — [principalideal0](https://discord.com/channels/1131200896827654144/1133421607499595858/1229689636012691468) on Discord -- *"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) on Reddit -- *"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) on Discord -- *"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) on Discord -- *"Aider is amazing, coupled with Sonnet 3.5 it's quite mind blowing."* — [Josh Dingus](https://discord.com/channels/1131200896827654144/1133060684540813372/1262374225298198548) on Discord -- *"Hands down, this is the best AI coding assistant tool so far."* — [IndyDevDan](https://www.youtube.com/watch?v=MPYFPvxfGZs) on YouTube -- *"[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) on Discord -- *"Best agent for actual dev work in existing codebases."* — [Nick Dobos](https://twitter.com/NickADobos/status/1690408967963652097?s=20) on X -- *"One of my favorite pieces of software. Blazing trails on new paradigms!"* — [Chris Wall](https://x.com/chris65536/status/1905053299251798432) on X -- *"Aider has been revolutionary for me and my work."* — [Starry Hope](https://x.com/starryhopeblog/status/1904985812137132056) on X -- *"Try aider! One of the best ways to vibe code."* — [Chris Wall](https://x.com/Chris65536/status/1905053418961391929) on X -- *"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/) on Reddit -- *"Aider is also my best friend."* — [jzn21](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27dcnb/) on Reddit -- *"Try Aider, it's worth it."* — [jorgejhms](https://www.reddit.com/r/ChatGPTCoding/comments/1heuvuo/aider_vs_cline_vs_windsurf_vs_cursor/m27cp99/) on Reddit -- *"I like aider :)"* — [Chenwei Cui](https://x.com/ccui42/status/1904965344999145698) on X -- *"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) on X -- *"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) on Discord -- *"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) on X -- *"thanks to aider, i have started and finished three personal projects within the last two days"* — [joseph stalzyn](https://x.com/anitaheeder/status/1908338609645904160) on X -- *"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) on Discord -- *"Aider ... is the tool to benchmark against."* — [BeetleB](https://news.ycombinator.com/item?id=43930201) on Hacker News -- *"aider is really cool"* — [kache (@yacineMTB)](https://x.com/yacineMTB/status/1911224442430124387) on X +- *"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 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 multiple shoulder surgeries ... and have used aider extensively. It 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) +- *"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 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 a single Python application 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) +- *"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 to your codebase all 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 (@yacineMTB) on X](https://x.com/yacineMTB/status/1911224442430124387) From f815f0377e7b608b350580753e12c65c09d8d269 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Sat, 10 May 2025 07:52:39 -0700 Subject: [PATCH 158/195] copy --- README.md | 12 +- aider/website/assets/sample-analytics.jsonl | 316 ++++++++++---------- aider/website/docs/faq.md | 4 +- aider/website/index.html | 80 ++--- 4 files changed, 206 insertions(+), 206 deletions(-) diff --git a/README.md b/README.md index c82646780..b380b56f8 100644 --- a/README.md +++ b/README.md @@ -140,7 +140,7 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u ## 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 on X](https://x.com/esrtweet/status/1910809356381413593) +- *"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) @@ -154,12 +154,12 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u - *"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 multiple shoulder surgeries ... and have used aider extensively. It has allowed me to continue productivity."* — [codeninja on Reddit](https://www.reddit.com/r/OpenAI/s/nmNwkHy1zG) +- *"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) -- *"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 on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1178736602797846548) +- *"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 a single Python application can change your life."* — [maledorak on Discord](https://discord.com/channels/1131200896827654144/1131200896827654149/1258453375620747264) +- *"[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) @@ -168,11 +168,11 @@ See the [installation instructions](https://aider.chat/docs/install.html) and [u - *"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 to your codebase all while keeping the developer in control."* — [Reilly Sweetland on X](https://x.com/rsweetland/status/1904963807237259586) +- *"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 (@yacineMTB) on X](https://x.com/yacineMTB/status/1911224442430124387) +- *"aider is really cool"* — [kache on X](https://x.com/yacineMTB/status/1911224442430124387) diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index a8c7941a3..817d29e29 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,161 +1,3 @@ -{"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} @@ -998,3 +840,161 @@ {"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831893} {"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": 10158, "completion_tokens": 449, "total_tokens": 10607, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746831934} {"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746838826} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839126} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839127} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839127} +{"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": 1746839127} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839130} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839139} +{"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": 13706, "completion_tokens": 1014, "total_tokens": 14720, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839189} +{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839206} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839209} +{"event": "command_clear", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839210} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839211} +{"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": 8921, "completion_tokens": 278, "total_tokens": 9199, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839217} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839271} +{"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": 9279, "completion_tokens": 217, "total_tokens": 9496, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746839276} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746885923} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746885923} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886094} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886094} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886094} +{"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": 1746886094} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886097} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886098} +{"event": "command_read-only", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886116} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886119} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886119} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886145} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886146} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886146} +{"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": 1746886146} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886151} +{"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": 7995, "completion_tokens": 3927, "total_tokens": 11922, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886209} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886223} +{"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": 12135, "completion_tokens": 67, "total_tokens": 12202, "cost": 0.0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886226} +{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886237} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886249} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886251} +{"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": 38347, "completion_tokens": 118, "total_tokens": 38465, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886266} +{"event": "command_drop", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886274} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886281} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886311} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886311} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886311} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886311} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886311} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886311} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886312} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886313} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886314} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886315} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886316} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "no-repo", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886317} +{"event": "exit", "properties": {"reason": "Control-C"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886320} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886401} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886402} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886402} +{"event": "exit", "properties": {"reason": "Exit flag set"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886402} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886402} +{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886402} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886403} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886403} +{"event": "exit", "properties": {"reason": "Unknown edit format"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886403} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886428} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886428} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886428} +{"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": 1746886428} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886429} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886440} +{"event": "command_edit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886455} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886508} +{"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": 23524, "completion_tokens": 1213, "total_tokens": 24737, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886681} +{"event": "command_exit", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886870} +{"event": "exit", "properties": {"reason": "/exit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886870} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886874} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886875} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886875} +{"event": "exit", "properties": {"reason": "Completed lint/test/commit"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886881} +{"event": "launched", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886942} +{"event": "repo", "properties": {"num_files": 624}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886942} +{"event": "auto_commits", "properties": {"enabled": true}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886942} +{"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": 1746886942} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746886992} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746887005} +{"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": 7718, "completion_tokens": 3544, "total_tokens": 11262, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746887071} +{"event": "command_add", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746888114} +{"event": "command_ask", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746888123} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746888123} +{"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": 17890, "completion_tokens": 743, "total_tokens": 18633, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746888152} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746888161} +{"event": "message_send_starting", "properties": {}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746888237} +{"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": 25004, "completion_tokens": 3849, "total_tokens": 28853, "cost": 0, "total_cost": 0.0}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1746888341} diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 351b010cd..43f52233e 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -264,8 +264,8 @@ tr:hover { background-color: #f5f5f5; } - - + +
Model NameTotal TokensPercent
gemini/gemini-2.5-pro-exp-03-25855,03483.0%
o3166,39116.2%
gemini/gemini-2.5-pro-exp-03-25902,13787.4%
o3121,02311.7%
openrouter/REDACTED8,7450.8%
diff --git a/aider/website/index.html b/aider/website/index.html index ea953b030..e681a168c 100644 --- a/aider/website/index.html +++ b/aider/website/index.html @@ -269,178 +269,178 @@ cog.out(text)