From aaeaa2415328cd6dbd000da44588fd81f68e138b Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 17:16:41 -0800 Subject: [PATCH 01/58] feat: add PDF support and improve image handling in chat messages --- aider/coders/base_coder.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 1e0e8048b..ca70e1dac 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -704,11 +704,12 @@ class Coder: dict(role="assistant", content="Ok."), ] + dump(chat_files_messages) return chat_files_messages def get_images_message(self): - if not self.main_model.info.get("supports_vision"): - return None + #if not self.main_model.info.get("supports_vision"): + # return None image_messages = [] for fname, content in self.get_abs_fnames_content(): @@ -716,14 +717,18 @@ class Coder: with open(fname, "rb") as image_file: encoded_string = base64.b64encode(image_file.read()).decode("utf-8") mime_type, _ = mimetypes.guess_type(fname) - if mime_type and mime_type.startswith("image/"): + dump(mime_type) + if not mime_type: + continue + if mime_type.startswith("image/") or mime_type == "application/pdf": image_url = f"data:{mime_type};base64,{encoded_string}" rel_fname = self.get_rel_fname(fname) image_messages += [ {"type": "text", "text": f"Image file: {rel_fname}"}, - {"type": "image_url", "image_url": {"url": image_url, "detail": "high"}}, + {"type": "image_url", "image_url": image_url}, ] + dump(image_messages) if not image_messages: return None From a9c4647461c82894f2cbb3d601f62e3de553f352 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 17:16:43 -0800 Subject: [PATCH 02/58] feat: add support for both images and PDFs based on model capabilities --- aider/coders/base_coder.py | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index ca70e1dac..9e87262ba 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -708,8 +708,11 @@ class Coder: return chat_files_messages def get_images_message(self): - #if not self.main_model.info.get("supports_vision"): - # return None + supports_images = self.main_model.info.get("supports_vision") + supports_pdfs = self.main_model.info.get("supports_pdf_input") + + if not (supports_images or supports_pdfs): + return None image_messages = [] for fname, content in self.get_abs_fnames_content(): @@ -717,14 +720,21 @@ class Coder: with open(fname, "rb") as image_file: encoded_string = base64.b64encode(image_file.read()).decode("utf-8") mime_type, _ = mimetypes.guess_type(fname) - dump(mime_type) if not mime_type: continue - if mime_type.startswith("image/") or mime_type == "application/pdf": + + if mime_type.startswith("image/") and supports_images: image_url = f"data:{mime_type};base64,{encoded_string}" rel_fname = self.get_rel_fname(fname) image_messages += [ {"type": "text", "text": f"Image file: {rel_fname}"}, + {"type": "image_url", "image_url": {"url": image_url, "detail": "high"}}, + ] + elif mime_type == "application/pdf" and supports_pdfs: + image_url = f"data:{mime_type};base64,{encoded_string}" + rel_fname = self.get_rel_fname(fname) + image_messages += [ + {"type": "text", "text": f"PDF file: {rel_fname}"}, {"type": "image_url", "image_url": image_url}, ] From 73c1dc697f7a9e7c3ac87d47b036c314a6b9af21 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 17:16:50 -0800 Subject: [PATCH 03/58] style: remove trailing whitespace in base_coder.py --- aider/coders/base_coder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 9e87262ba..54c03593c 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -710,7 +710,7 @@ class Coder: def get_images_message(self): supports_images = self.main_model.info.get("supports_vision") supports_pdfs = self.main_model.info.get("supports_pdf_input") - + if not (supports_images or supports_pdfs): return None @@ -722,7 +722,7 @@ class Coder: mime_type, _ = mimetypes.guess_type(fname) if not mime_type: continue - + if mime_type.startswith("image/") and supports_images: image_url = f"data:{mime_type};base64,{encoded_string}" rel_fname = self.get_rel_fname(fname) From b8f36c82773c54c0775af3b247c06a774fb946b6 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 17:19:28 -0800 Subject: [PATCH 04/58] feat: add PDF file support and refactor image handling --- aider/coders/base_coder.py | 13 +++++-------- aider/models.py | 2 +- aider/utils.py | 2 +- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 54c03593c..3903b296b 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -704,7 +704,6 @@ class Coder: dict(role="assistant", content="Ok."), ] - dump(chat_files_messages) return chat_files_messages def get_images_message(self): @@ -717,28 +716,26 @@ class Coder: image_messages = [] for fname, content in self.get_abs_fnames_content(): if is_image_file(fname): - with open(fname, "rb") as image_file: - encoded_string = base64.b64encode(image_file.read()).decode("utf-8") mime_type, _ = mimetypes.guess_type(fname) if not mime_type: continue + with open(fname, "rb") as image_file: + encoded_string = base64.b64encode(image_file.read()).decode("utf-8") + image_url = f"data:{mime_type};base64,{encoded_string}" + rel_fname = self.get_rel_fname(fname) + if mime_type.startswith("image/") and supports_images: - image_url = f"data:{mime_type};base64,{encoded_string}" - rel_fname = self.get_rel_fname(fname) image_messages += [ {"type": "text", "text": f"Image file: {rel_fname}"}, {"type": "image_url", "image_url": {"url": image_url, "detail": "high"}}, ] elif mime_type == "application/pdf" and supports_pdfs: - image_url = f"data:{mime_type};base64,{encoded_string}" - rel_fname = self.get_rel_fname(fname) image_messages += [ {"type": "text", "text": f"PDF file: {rel_fname}"}, {"type": "image_url", "image_url": image_url}, ] - dump(image_messages) if not image_messages: return None diff --git a/aider/models.py b/aider/models.py index 071c1fd6e..12e809c0f 100644 --- a/aider/models.py +++ b/aider/models.py @@ -17,7 +17,7 @@ from aider.dump import dump # noqa: F401 from aider.llm import litellm DEFAULT_MODEL_NAME = "gpt-4o" -ANTHROPIC_BETA_HEADER = "prompt-caching-2024-07-31" +ANTHROPIC_BETA_HEADER = "prompt-caching-2024-07-31,pdfs-2024-09-25" OPENAI_MODELS = """ gpt-4 diff --git a/aider/utils.py b/aider/utils.py index 4cf45b6dd..e91e5deb0 100644 --- a/aider/utils.py +++ b/aider/utils.py @@ -13,7 +13,7 @@ import git from aider.dump import dump # noqa: F401 -IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp"} +IMAGE_EXTENSIONS = {".png", ".jpg", ".jpeg", ".gif", ".bmp", ".tiff", ".webp", ".pdf"} class IgnorantTemporaryDirectory: From 5cfcf255e9b3915e1051851cc037085aba1c93ec Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 17:27:05 -0800 Subject: [PATCH 05/58] fix: override PDF support detection for Claude 3.5 Sonnet --- 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 3903b296b..e7331e746 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -710,6 +710,9 @@ class Coder: supports_images = self.main_model.info.get("supports_vision") supports_pdfs = self.main_model.info.get("supports_pdf_input") + # https://github.com/BerriAI/litellm/pull/6928 + supports_pdfs = "claude-3-5-sonnet-20241022" in self.main_model.name + if not (supports_images or supports_pdfs): return None From 705eb06e8dfbb4db46147365fbda14b6d24a1447 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 17:28:15 -0800 Subject: [PATCH 06/58] copy --- aider/website/assets/sample-analytics.jsonl | 208 +++++++++--------- .../website/docs/config/adv-model-settings.md | 22 +- 2 files changed, 115 insertions(+), 115 deletions(-) diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 2f95f14fe..52fcbcac0 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,107 +1,3 @@ -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732056511} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732063080} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732063080} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065780} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065780} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065823} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065825} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9917, "completion_tokens": 1111, "total_tokens": 11028, "cost": 0.046416, "total_cost": 0.046416, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065895} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 11234, "completion_tokens": 555, "total_tokens": 11789, "cost": 0.042027, "total_cost": 0.088443, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065964} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065995} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732065999} -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066003} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10218, "completion_tokens": 283, "total_tokens": 10501, "cost": 0.034899, "total_cost": 0.123342, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066021} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10580, "completion_tokens": 194, "total_tokens": 10774, "cost": 0.03465, "total_cost": 0.157992, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066227} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066345} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066348} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066366} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 16244, "completion_tokens": 403, "total_tokens": 16647, "cost": 0.054777000000000006, "total_cost": 0.21276899999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066392} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066420} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066422} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066593} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 16824, "completion_tokens": 199, "total_tokens": 17023, "cost": 0.053457000000000005, "total_cost": 0.26622599999999996, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066631} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066639} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066642} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066658} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066659} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066661} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066693} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066704} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066706} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066707} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066786} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066788} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066819} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066832} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066834} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066844} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066850} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066864} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066900} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732066912} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067008} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067008} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067021} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067118} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067121} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9144, "completion_tokens": 310, "total_tokens": 9454, "cost": 0.032082, "total_cost": 0.032082, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067138} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067200} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732067200} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732113631} -{"event": "cli session", "properties": {"main_model": "openrouter/mistralai/mistral-large", "weak_model": "openrouter/mistralai/mistral-large", "editor_model": "openrouter/mistralai/mistral-large", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732113633} -{"event": "message_send", "properties": {"main_model": "openrouter/mistralai/mistral-large", "weak_model": "openrouter/mistralai/mistral-large", "editor_model": "openrouter/mistralai/mistral-large", "edit_format": "whole", "prompt_tokens": 407, "completion_tokens": 33, "total_tokens": 440, "cost": 0.0040479999999999995, "total_cost": 0.0040479999999999995, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732113636} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732115374} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732115650} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732115651} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118126} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118129} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118132} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 12601, "completion_tokens": 334, "total_tokens": 12935, "cost": 0.042813000000000004, "total_cost": 0.042813000000000004, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118186} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 13031, "completion_tokens": 349, "total_tokens": 13380, "cost": 0.044328000000000006, "total_cost": 0.08714100000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118274} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118294} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118349} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118349} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118579} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118581} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118588} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 32104, "completion_tokens": 304, "total_tokens": 32408, "cost": 0.100872, "total_cost": 0.100872, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118617} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118643} -{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118656} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 14796, "completion_tokens": 157, "total_tokens": 14953, "cost": 0.04674300000000001, "total_cost": 0.147615, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118706} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118724} -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118792} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118799} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118841} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118843} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118849} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 32116, "completion_tokens": 410, "total_tokens": 32526, "cost": 0.102498, "total_cost": 0.102498, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118887} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118905} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118909} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118933} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118935} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118951} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 32134, "completion_tokens": 539, "total_tokens": 32673, "cost": 0.104487, "total_cost": 0.104487, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732118973} -{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119025} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 14935, "completion_tokens": 0, "total_tokens": 14935, "cost": 0.044805000000000005, "total_cost": 0.149292, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119135} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119138} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119140} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119368} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119370} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119374} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8871, "completion_tokens": 276, "total_tokens": 9147, "cost": 0.030753000000000003, "total_cost": 0.030753000000000003, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732119413} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732130811} -{"event": "model warning", "properties": {"main_model": "None", "weak_model": "None", "editor_model": "None", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732130813} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732130833} -{"event": "message_send", "properties": {"main_model": "openai/REDACTED", "weak_model": "openai/REDACTED", "editor_model": "openai/REDACTED", "edit_format": "diff", "prompt_tokens": 1569, "completion_tokens": 9, "total_tokens": 1578, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732130836} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732145592} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732145592} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732147482} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732147483} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732148511} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153487} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153487} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153933} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153933} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4554, "completion_tokens": 249, "total_tokens": 4803, "cost": 0.017397, "total_cost": 0.017397, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153969} {"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153997} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 5573, "completion_tokens": 931, "total_tokens": 6504, "cost": 0.030684000000000003, "total_cost": 0.048081, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154054} @@ -998,3 +894,107 @@ {"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732653314} {"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.1"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732653421} {"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.1"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732653422} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661402} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661408} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661422} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 2034, "completion_tokens": 119, "total_tokens": 2153, "cost": 0.007887, "total_cost": 0.007887, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661433} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 9224, "completion_tokens": 385, "total_tokens": 9609, "cost": 0.033447000000000005, "total_cost": 0.041334, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661461} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661501} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661501} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661506} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 2027, "completion_tokens": 206, "total_tokens": 2233, "cost": 0.009171, "total_cost": 0.009171, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661526} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661575} +{"event": "cli session", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661576} +{"event": "command_web", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661577} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661586} +{"event": "message_send", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "ask", "prompt_tokens": 2506, "completion_tokens": 179, "total_tokens": 2685, "cost": 0.0004833, "total_cost": 0.0004833, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661589} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661770} +{"event": "cli session", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661771} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661773} +{"event": "message_send", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "ask", "prompt_tokens": 82, "completion_tokens": 310, "total_tokens": 392, "cost": 0.0001983, "total_cost": 0.0001983, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661786} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661850} +{"event": "cli session", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661851} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661851} +{"event": "message_send", "properties": {"main_model": "gpt-4o-mini", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gpt-4o-mini", "edit_format": "ask", "prompt_tokens": 2512, "completion_tokens": 139, "total_tokens": 2651, "cost": 0.0004602, "total_cost": 0.0004602, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661863} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661866} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661867} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661870} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 4484, "completion_tokens": 221, "total_tokens": 4705, "cost": 0.016767, "total_cost": 0.016767, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661881} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661935} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661938} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661939} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661959} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 4500, "completion_tokens": 162, "total_tokens": 4662, "cost": 0.01593, "total_cost": 0.01593, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732661982} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6899, "completion_tokens": 130, "total_tokens": 7029, "cost": 0.022647, "total_cost": 0.038577, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662010} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 12865, "completion_tokens": 720, "total_tokens": 13585, "cost": 0.04939500000000001, "total_cost": 0.08797200000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662031} +{"event": "command_diff", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662040} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10375, "completion_tokens": 480, "total_tokens": 10855, "cost": 0.038325, "total_cost": 0.126297, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662108} +{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662123} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662254} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662330} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732662330} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668587} +{"event": "cli session", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668587} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2177, "completion_tokens": 0, "total_tokens": 2177, "cost": 0.002177, "total_cost": 0.002177, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668590} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668617} +{"event": "cli session", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668617} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668627} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2225, "completion_tokens": 53, "total_tokens": 2278, "cost": 0.00249, "total_cost": 0.00249, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668632} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668784} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2225, "completion_tokens": 53, "total_tokens": 2278, "cost": 0.00249, "total_cost": 0.00249, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668789} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668799} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2225, "completion_tokens": 53, "total_tokens": 2278, "cost": 0.00249, "total_cost": 0.00249, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668804} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668829} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2225, "completion_tokens": 53, "total_tokens": 2278, "cost": 0.00249, "total_cost": 0.00249, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668834} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668859} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 0, "completion_tokens": 0, "total_tokens": 0, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668861} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668930} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2325, "completion_tokens": 0, "total_tokens": 2325, "cost": 0.002325, "total_cost": 0.002325, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732668933} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669007} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2325, "completion_tokens": 0, "total_tokens": 2325, "cost": 0.002325, "total_cost": 0.002325, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669009} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669063} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2325, "completion_tokens": 0, "total_tokens": 2325, "cost": 0.002325, "total_cost": 0.002325, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669065} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669111} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669122} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2235, "completion_tokens": 72, "total_tokens": 2307, "cost": 0.002595, "total_cost": 0.002595, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669127} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669143} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2241, "completion_tokens": 54, "total_tokens": 2295, "cost": 0.0025109999999999998, "total_cost": 0.0025109999999999998, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669147} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669153} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2241, "completion_tokens": 47, "total_tokens": 2288, "cost": 0.007428, "total_cost": 0.007428, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669157} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669184} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2241, "completion_tokens": 56, "total_tokens": 2297, "cost": 0.002521, "total_cost": 0.002521, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669189} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669207} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2331, "completion_tokens": 0, "total_tokens": 2331, "cost": 0.0023309999999999997, "total_cost": 0.0023309999999999997, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669209} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669319} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2330, "completion_tokens": 0, "total_tokens": 2330, "cost": 0.00233, "total_cost": 0.00233, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669321} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669367} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2330, "completion_tokens": 0, "total_tokens": 2330, "cost": 0.00233, "total_cost": 0.00233, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669370} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669378} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2330, "completion_tokens": 31, "total_tokens": 2361, "cost": 0.007455000000000001, "total_cost": 0.007455000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669383} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669403} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2321, "completion_tokens": 0, "total_tokens": 2321, "cost": 0.0023209999999999997, "total_cost": 0.0023209999999999997, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669406} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669527} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2175, "completion_tokens": 83, "total_tokens": 2258, "cost": 0.00259, "total_cost": 0.00259, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732669534} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670104} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670105} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670112} +{"event": "command_git", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670117} +{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670120} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 18049, "completion_tokens": 624, "total_tokens": 18673, "cost": 0.06350700000000001, "total_cost": 0.06350700000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670200} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 18845, "completion_tokens": 524, "total_tokens": 19369, "cost": 0.06439500000000001, "total_cost": 0.12790200000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670238} +{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670268} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670362} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670410} +{"event": "message_send", "properties": {"main_model": "claude-3-5-haiku-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-haiku-20241022", "edit_format": "diff", "prompt_tokens": 2221, "completion_tokens": 56, "total_tokens": 2277, "cost": 0.0025009999999999998, "total_cost": 0.0025009999999999998, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670414} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670423} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2230, "completion_tokens": 35, "total_tokens": 2265, "cost": 0.007215, "total_cost": 0.007215, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670426} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670482} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2230, "completion_tokens": 35, "total_tokens": 2265, "cost": 0.007215, "total_cost": 0.007215, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670485} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670499} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2230, "completion_tokens": 35, "total_tokens": 2265, "cost": 0.007215, "total_cost": 0.007215, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670503} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670603} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670762} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2330, "completion_tokens": 31, "total_tokens": 2361, "cost": 0.007455000000000001, "total_cost": 0.007455000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670766} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670811} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2330, "completion_tokens": 31, "total_tokens": 2361, "cost": 0.007455000000000001, "total_cost": 0.007455000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670815} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670821} diff --git a/aider/website/docs/config/adv-model-settings.md b/aider/website/docs/config/adv-model-settings.md index 31b2c21cc..46715349d 100644 --- a/aider/website/docs/config/adv-model-settings.md +++ b/aider/website/docs/config/adv-model-settings.md @@ -504,7 +504,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 max_tokens: 8192 lazy: false name: claude-3-5-sonnet-20240620 @@ -523,7 +523,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 max_tokens: 8192 lazy: false name: anthropic/claude-3-5-sonnet-20240620 @@ -542,7 +542,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 max_tokens: 8192 lazy: false name: anthropic/claude-3-5-sonnet-20241022 @@ -561,7 +561,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 max_tokens: 8192 lazy: false name: bedrock/anthropic.claude-3-5-sonnet-20241022-v2:0 @@ -580,7 +580,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 max_tokens: 8192 lazy: false name: anthropic/claude-3-5-sonnet-latest @@ -599,7 +599,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 max_tokens: 8192 lazy: false name: claude-3-5-sonnet-20241022 @@ -618,7 +618,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 lazy: false name: anthropic/claude-3-haiku-20240307 reminder: user @@ -636,7 +636,7 @@ cog.out("```\n") examples_as_sys_msg: false extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 lazy: false name: anthropic/claude-3-5-haiku-20241022 reminder: user @@ -654,7 +654,7 @@ cog.out("```\n") examples_as_sys_msg: false extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 lazy: false name: bedrock/anthropic.claude-3-5-haiku-20241022-v1:0 reminder: user @@ -672,7 +672,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 lazy: false name: claude-3-5-haiku-20241022 reminder: user @@ -707,7 +707,7 @@ cog.out("```\n") examples_as_sys_msg: true extra_params: extra_headers: - anthropic-beta: prompt-caching-2024-07-31 + anthropic-beta: prompt-caching-2024-07-31,pdfs-2024-09-25 lazy: false name: claude-3-haiku-20240307 reminder: user From 309893fd1e036d53a723022adadbd974ca852baa Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:45:01 -0800 Subject: [PATCH 07/58] test: verify image file presence in LLM messages for read-only command --- tests/basic/test_commands.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/basic/test_commands.py b/tests/basic/test_commands.py index b4b0e304d..07a82037d 100644 --- a/tests/basic/test_commands.py +++ b/tests/basic/test_commands.py @@ -903,6 +903,20 @@ class TestCommands(TestCase): ) ) + # Check that the image file appears in the messages + messages = vision_coder.format_messages().all_messages() + found_image = False + for msg in messages: + if msg.get("role") == "user" and "content" in msg: + content = msg["content"] + if isinstance(content, list): + for item in content: + if isinstance(item, dict) and item.get("type") == "text": + if "test_image.jpg" in item.get("text", ""): + found_image = True + break + self.assertTrue(found_image, "Image file not found in messages to LLM") + def test_cmd_read_only_with_glob_pattern(self): with GitTemporaryDirectory() as repo_dir: io = InputOutput(pretty=False, fancy_input=False, yes=False) From 34b8c3f47c26f93f284151d746e290c729c465dc Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:46:51 -0800 Subject: [PATCH 08/58] fix: add dummy message to prevent empty cur_messages in test --- tests/basic/test_commands.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/tests/basic/test_commands.py b/tests/basic/test_commands.py index 07a82037d..0982d8bf4 100644 --- a/tests/basic/test_commands.py +++ b/tests/basic/test_commands.py @@ -903,6 +903,9 @@ class TestCommands(TestCase): ) ) + # Add a dummy message to ensure format_messages() works + vision_coder.cur_messages = [{"role": "user", "content": "Check the image"}] + # Check that the image file appears in the messages messages = vision_coder.format_messages().all_messages() found_image = False From 4be37282737f1d391082899289615ea0b4ddf000 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:48:42 -0800 Subject: [PATCH 09/58] feat: add image file support for read-only files --- aider/coders/base_coder.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index e7331e746..8643bffc9 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -665,6 +665,8 @@ class Coder: def get_readonly_files_messages(self): readonly_messages = [] + + # Handle non-image files read_only_content = self.get_read_only_files_content() if read_only_content: readonly_messages += [ @@ -676,6 +678,15 @@ class Coder: content="Ok, I will use these files as references.", ), ] + + # Handle image files + images_message = self.get_images_message(self.abs_read_only_fnames) + if images_message is not None: + readonly_messages += [ + images_message, + dict(role="assistant", content="Ok, I will use these images as references."), + ] + return readonly_messages def get_chat_files_messages(self): @@ -697,7 +708,7 @@ class Coder: dict(role="assistant", content=files_reply), ] - images_message = self.get_images_message() + images_message = self.get_images_message(self.abs_fnames) if images_message is not None: chat_files_messages += [ images_message, @@ -706,7 +717,7 @@ class Coder: return chat_files_messages - def get_images_message(self): + def get_images_message(self, fnames): supports_images = self.main_model.info.get("supports_vision") supports_pdfs = self.main_model.info.get("supports_pdf_input") From cf4ef8605dcba8cc487321d26c9e4377de07b280 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:48:48 -0800 Subject: [PATCH 10/58] style: remove trailing whitespace in base_coder.py --- aider/coders/base_coder.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 8643bffc9..0579b5d1c 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -665,7 +665,7 @@ class Coder: def get_readonly_files_messages(self): readonly_messages = [] - + # Handle non-image files read_only_content = self.get_read_only_files_content() if read_only_content: @@ -686,7 +686,7 @@ class Coder: images_message, dict(role="assistant", content="Ok, I will use these images as references."), ] - + return readonly_messages def get_chat_files_messages(self): From 28d1feacf525b55f9e02f4066b2ba8dc5b7af069 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:49:53 -0800 Subject: [PATCH 11/58] refactor: simplify image file processing to use provided filenames directly --- aider/coders/base_coder.py | 40 ++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 0579b5d1c..bec667830 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -728,27 +728,29 @@ class Coder: return None image_messages = [] - for fname, content in self.get_abs_fnames_content(): - if is_image_file(fname): - mime_type, _ = mimetypes.guess_type(fname) - if not mime_type: - continue + for fname in fnames: + if not is_image_file(fname): + continue - with open(fname, "rb") as image_file: - encoded_string = base64.b64encode(image_file.read()).decode("utf-8") - image_url = f"data:{mime_type};base64,{encoded_string}" - rel_fname = self.get_rel_fname(fname) + mime_type, _ = mimetypes.guess_type(fname) + if not mime_type: + continue - if mime_type.startswith("image/") and supports_images: - image_messages += [ - {"type": "text", "text": f"Image file: {rel_fname}"}, - {"type": "image_url", "image_url": {"url": image_url, "detail": "high"}}, - ] - elif mime_type == "application/pdf" and supports_pdfs: - image_messages += [ - {"type": "text", "text": f"PDF file: {rel_fname}"}, - {"type": "image_url", "image_url": image_url}, - ] + with open(fname, "rb") as image_file: + encoded_string = base64.b64encode(image_file.read()).decode("utf-8") + image_url = f"data:{mime_type};base64,{encoded_string}" + rel_fname = self.get_rel_fname(fname) + + if mime_type.startswith("image/") and supports_images: + image_messages += [ + {"type": "text", "text": f"Image file: {rel_fname}"}, + {"type": "image_url", "image_url": {"url": image_url, "detail": "high"}}, + ] + elif mime_type == "application/pdf" and supports_pdfs: + image_messages += [ + {"type": "text", "text": f"PDF file: {rel_fname}"}, + {"type": "image_url", "image_url": image_url}, + ] if not image_messages: return None From 1f2917681f46212dd453333e87a934213d7abb9c Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:52:06 -0800 Subject: [PATCH 12/58] feat: add cwd parameter to run_cmd for directory control --- aider/run_cmd.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/aider/run_cmd.py b/aider/run_cmd.py index 974af9c37..69d5bd7c6 100644 --- a/aider/run_cmd.py +++ b/aider/run_cmd.py @@ -8,12 +8,12 @@ import pexpect import psutil -def run_cmd(command, verbose=False, error_print=None): +def run_cmd(command, verbose=False, error_print=None, cwd=None): try: if sys.stdin.isatty() and hasattr(pexpect, "spawn") and platform.system() != "Windows": - return run_cmd_pexpect(command, verbose) + return run_cmd_pexpect(command, verbose, cwd) - return run_cmd_subprocess(command, verbose) + return run_cmd_subprocess(command, verbose, cwd) except OSError as e: error_message = f"Error occurred while running command '{command}': {str(e)}" if error_print is None: @@ -39,7 +39,7 @@ def get_windows_parent_process_name(): return None -def run_cmd_subprocess(command, verbose=False): +def run_cmd_subprocess(command, verbose=False, cwd=None): if verbose: print("Using run_cmd_subprocess:", command) @@ -69,6 +69,7 @@ def run_cmd_subprocess(command, verbose=False): errors="replace", bufsize=0, # Set bufsize to 0 for unbuffered output universal_newlines=True, + cwd=cwd, ) output = [] @@ -85,7 +86,7 @@ def run_cmd_subprocess(command, verbose=False): return 1, str(e) -def run_cmd_pexpect(command, verbose=False): +def run_cmd_pexpect(command, verbose=False, cwd=None): """ Run a shell command interactively using pexpect, capturing all output. @@ -112,12 +113,12 @@ def run_cmd_pexpect(command, verbose=False): # Use the shell from SHELL environment variable if verbose: print("Running pexpect.spawn with shell:", shell) - child = pexpect.spawn(shell, args=["-c", command], encoding="utf-8") + child = pexpect.spawn(shell, args=["-c", command], encoding="utf-8", cwd=cwd) else: # Fall back to spawning the command directly if verbose: print("Running pexpect.spawn without shell.") - child = pexpect.spawn(command, encoding="utf-8") + child = pexpect.spawn(command, encoding="utf-8", cwd=cwd) # Transfer control to the user, capturing output child.interact(output_filter=output_callback) From 973e86df278ac91ea0059220aefc51d1c3c7288c Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:52:46 -0800 Subject: [PATCH 13/58] fix: use cwd=root when executing shell commands --- aider/coders/base_coder.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index bec667830..478d6f888 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -2112,7 +2112,7 @@ class Coder: self.io.tool_output(f"Running {command}") # Add the command to input history self.io.add_to_input_history(f"/run {command.strip()}") - exit_status, output = run_cmd(command, error_print=self.io.tool_error) + exit_status, output = run_cmd(command, error_print=self.io.tool_error, cwd=self.root) if output: accumulated_output += f"Output from {command}\n{output}\n" From 1a745e4fa9a0a16ac2e19586c97e875cdee676f4 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:53:09 -0800 Subject: [PATCH 14/58] fix: set cwd to repo root for shell commands in cmd_run --- aider/commands.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/aider/commands.py b/aider/commands.py index 7f500ce08..af74e281c 100644 --- a/aider/commands.py +++ b/aider/commands.py @@ -876,7 +876,7 @@ class Commands: def cmd_run(self, args, add_on_nonzero_exit=False): "Run a shell command and optionally add the output to the chat (alias: !)" exit_status, combined_output = run_cmd( - args, verbose=self.verbose, error_print=self.io.tool_error + args, verbose=self.verbose, error_print=self.io.tool_error, cwd=self.coder.root ) if combined_output is None: From 415652d38eb882c5e43521818e3798f04925bdd9 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 19:55:07 -0800 Subject: [PATCH 15/58] style: reorder subprocess args to keep cwd consistent --- aider/linter.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/linter.py b/aider/linter.py index 471914072..529cacb9d 100644 --- a/aider/linter.py +++ b/aider/linter.py @@ -49,11 +49,11 @@ class Linter: try: process = subprocess.Popen( cmd, - cwd=self.root, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, encoding=self.encoding, errors="replace", + cwd=self.root, ) except OSError as err: print(f"Unable to execute lint command: {err}") @@ -152,12 +152,12 @@ class Linter: try: result = subprocess.run( flake8_cmd, - cwd=self.root, capture_output=True, text=True, check=False, encoding=self.encoding, errors="replace", + cwd=self.root, ) errors = result.stdout + result.stderr except Exception as e: From 70a282ebf13b165fe98eeb4907987f35870be392 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 20:11:12 -0800 Subject: [PATCH 16/58] copy --- aider/website/docs/faq.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 003c61ecd..9b67295e6 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -217,6 +217,18 @@ by doing something like `git blame` on the repo, and counting up who wrote all the new lines of code in each release. Only lines in source code files are counted, not documentation or prompt files. +## Why is the LLM speaking to me in an unexpected language? + +Aider goes to some effort to prompt the model to use the language that is configured +for your system. +But LLMs aren't fully reliable, and they sometimes decide to speak in +an unexpected language. +Claude is especially fond of speaking French. + +You can explicitly set the language that aider tells the model to use with +`--chat-language `. +But the LLM may not comply. + ## Can I share my aider chat transcript? Yes, you can now share aider chat logs in a pretty way. From 9c8bde2cff0f8d304fbb0328ab7d6552adf7a51a Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 20:13:33 -0800 Subject: [PATCH 17/58] copy --- aider/website/docs/faq.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/aider/website/docs/faq.md b/aider/website/docs/faq.md index 9b67295e6..4921f4326 100644 --- a/aider/website/docs/faq.md +++ b/aider/website/docs/faq.md @@ -169,7 +169,10 @@ python -m aider ## Can I change the system prompts that aider uses? -Aider is set up to support different system prompts and edit formats +The most convenient way to add custom instructions is to use a +[conventions file](https://aider.chat/docs/usage/conventions.html). + +But, aider is set up to support different actual system prompts and edit formats in a modular way. If you look in the `aider/coders` subdirectory, you'll see there's a base coder with base prompts, and then there are a number of From a64956406db0527c1bd343a9f68863f0a7452d97 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 20:26:44 -0800 Subject: [PATCH 18/58] fix: improve PDF support detection and update model suggestions --- aider/coders/base_coder.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/aider/coders/base_coder.py b/aider/coders/base_coder.py index 478d6f888..3926cd987 100755 --- a/aider/coders/base_coder.py +++ b/aider/coders/base_coder.py @@ -719,10 +719,12 @@ class Coder: def get_images_message(self, fnames): supports_images = self.main_model.info.get("supports_vision") - supports_pdfs = self.main_model.info.get("supports_pdf_input") + supports_pdfs = self.main_model.info.get("supports_pdf_input") or self.main_model.info.get( + "max_pdf_size_mb" + ) # https://github.com/BerriAI/litellm/pull/6928 - supports_pdfs = "claude-3-5-sonnet-20241022" in self.main_model.name + supports_pdfs = supports_pdfs or "claude-3-5-sonnet-20241022" in self.main_model.name if not (supports_images or supports_pdfs): return None @@ -1396,9 +1398,7 @@ class Coder: res.append("- Ask for smaller changes in each request.") res.append("- Break your code into smaller source files.") if "diff" not in self.main_model.edit_format: - res.append( - "- Use a stronger model like gpt-4o, sonnet or opus that can return diffs." - ) + res.append("- Use a stronger model that can return diffs.") if input_tokens >= max_input_tokens or total_tokens >= max_input_tokens: res.append("") From f702f67e270f66cd9356c78317c182b008f0e5ca Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 20:28:48 -0800 Subject: [PATCH 19/58] copy --- HISTORY.md | 7 + aider/website/HISTORY.md | 7 + aider/website/assets/sample-analytics.jsonl | 318 ++++++++++---------- 3 files changed, 173 insertions(+), 159 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index cba71b3fc..3da032c17 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,12 @@ # Release history +### main branch + +- PDF support for Sonnet and Gemini models. +- Set cwd to repo root when running shell commands. +- Improved error handling for failed .gitignore file operations. +- Aider wrote 82% of the code in this release. + ### Aider v0.65.1 - Bugfix to `--alias`. diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 1d33a219f..ab2a243b8 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -24,6 +24,13 @@ cog.out(text) ]]]--> +### main branch + +- PDF support for Sonnet and Gemini models. +- Set cwd to repo root when running shell commands. +- Improved error handling for failed .gitignore file operations. +- Aider wrote 82% of the code in this release. + ### Aider v0.65.1 - Bugfix to `--alias`. diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 52fcbcac0..d4f2f27b3 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,162 +1,3 @@ -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4554, "completion_tokens": 249, "total_tokens": 4803, "cost": 0.017397, "total_cost": 0.017397, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153969} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732153997} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 5573, "completion_tokens": 931, "total_tokens": 6504, "cost": 0.030684000000000003, "total_cost": 0.048081, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154054} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7869, "completion_tokens": 328, "total_tokens": 8197, "cost": 0.028527, "total_cost": 0.076608, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154137} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8082, "completion_tokens": 250, "total_tokens": 8332, "cost": 0.027996, "total_cost": 0.104604, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154165} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8759, "completion_tokens": 0, "total_tokens": 8759, "cost": 0.026277000000000002, "total_cost": 0.130881, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154209} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154223} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154236} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10107, "completion_tokens": 283, "total_tokens": 10390, "cost": 0.034566, "total_cost": 0.165447, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154294} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8064, "completion_tokens": 681, "total_tokens": 8745, "cost": 0.034407, "total_cost": 0.199854, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154329} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732154412} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732155671} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732155671} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156129} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156130} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4355, "completion_tokens": 713, "total_tokens": 5068, "cost": 0.02376, "total_cost": 0.02376, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156158} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156165} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156173} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24243, "completion_tokens": 702, "total_tokens": 24945, "cost": 0.083259, "total_cost": 0.107019, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156208} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156247} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156248} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25095, "completion_tokens": 783, "total_tokens": 25878, "cost": 0.08703000000000001, "total_cost": 0.19404900000000003, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156303} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24732, "completion_tokens": 772, "total_tokens": 25504, "cost": 0.08577599999999999, "total_cost": 0.279825, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156432} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24775, "completion_tokens": 836, "total_tokens": 25611, "cost": 0.086865, "total_cost": 0.36668999999999996, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156523} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24932, "completion_tokens": 490, "total_tokens": 25422, "cost": 0.082146, "total_cost": 0.44883599999999996, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156683} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25588, "completion_tokens": 105, "total_tokens": 25693, "cost": 0.07833899999999999, "total_cost": 0.527175, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732156997} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25744, "completion_tokens": 99, "total_tokens": 25843, "cost": 0.078717, "total_cost": 0.605892, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732157247} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160515} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160516} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24980, "completion_tokens": 376, "total_tokens": 25356, "cost": 0.08058000000000001, "total_cost": 0.686472, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160614} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160629} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25429, "completion_tokens": 739, "total_tokens": 26168, "cost": 0.087372, "total_cost": 0.773844, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160740} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25145, "completion_tokens": 124, "total_tokens": 25269, "cost": 0.077295, "total_cost": 0.851139, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160756} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160758} -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160763} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 23980, "completion_tokens": 899, "total_tokens": 24879, "cost": 0.085425, "total_cost": 0.936564, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160801} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160830} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732160837} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24937, "completion_tokens": 496, "total_tokens": 25433, "cost": 0.082251, "total_cost": 1.018815, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732161575} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25670, "completion_tokens": 684, "total_tokens": 26354, "cost": 0.08727, "total_cost": 1.106085, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732161766} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25276, "completion_tokens": 847, "total_tokens": 26123, "cost": 0.088533, "total_cost": 1.194618, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732161827} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24511, "completion_tokens": 1817, "total_tokens": 26328, "cost": 0.100788, "total_cost": 1.295406, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732161916} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25012, "completion_tokens": 277, "total_tokens": 25289, "cost": 0.07919100000000001, "total_cost": 1.374597, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732161962} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25379, "completion_tokens": 142, "total_tokens": 25521, "cost": 0.078267, "total_cost": 1.4528640000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162006} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25584, "completion_tokens": 450, "total_tokens": 26034, "cost": 0.083502, "total_cost": 1.5363660000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162070} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 26434, "completion_tokens": 347, "total_tokens": 26781, "cost": 0.084507, "total_cost": 1.620873, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162081} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162206} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162206} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24794, "completion_tokens": 1029, "total_tokens": 25823, "cost": 0.08981700000000001, "total_cost": 0.08981700000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162238} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25925, "completion_tokens": 1170, "total_tokens": 27095, "cost": 0.095325, "total_cost": 0.185142, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162408} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25286, "completion_tokens": 138, "total_tokens": 25424, "cost": 0.07792800000000001, "total_cost": 0.26307, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162423} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162577} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162836} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732162837} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732198998} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732198999} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199001} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 17347, "completion_tokens": 137, "total_tokens": 17484, "cost": 0.054096000000000005, "total_cost": 0.054096000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199010} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199040} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199040} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199045} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199050} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199050} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2181, "completion_tokens": 48, "total_tokens": 2229, "cost": 0.007263, "total_cost": 0.007263, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199056} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199075} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199075} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2181, "completion_tokens": 49, "total_tokens": 2230, "cost": 0.007278, "total_cost": 0.007278, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199083} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199105} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199126} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199126} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199233} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 28023, "completion_tokens": 514, "total_tokens": 28537, "cost": 0.091779, "total_cost": 0.145875, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199292} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 28565, "completion_tokens": 570, "total_tokens": 29135, "cost": 0.09424500000000001, "total_cost": 0.24012, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199318} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199410} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199410} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199412} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199416} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 29119, "completion_tokens": 268, "total_tokens": 29387, "cost": 0.091377, "total_cost": 0.331497, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199448} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199454} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199454} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199458} -{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199462} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199469} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199695} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199696} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199705} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199733} -{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199741} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 26376, "completion_tokens": 218, "total_tokens": 26594, "cost": 0.082398, "total_cost": 0.082398, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199763} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199834} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199835} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199976} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199987} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199988} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732199992} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4242, "completion_tokens": 265, "total_tokens": 4507, "cost": 0.016701, "total_cost": 0.016701, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732200023} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732200038} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732200044} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732200118} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211452} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211452} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211464} -{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211491} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 25786, "completion_tokens": 511, "total_tokens": 26297, "cost": 0.085023, "total_cost": 0.085023, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211532} -{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211626} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211631} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 5006, "completion_tokens": 583, "total_tokens": 5589, "cost": 0.023763, "total_cost": 0.108786, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211713} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211822} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211823} -{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211827} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4652, "completion_tokens": 89, "total_tokens": 4741, "cost": 0.015290999999999999, "total_cost": 0.015290999999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211831} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211837} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211841} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211841} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211845} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211845} -{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211848} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2179, "completion_tokens": 79, "total_tokens": 2258, "cost": 0.0077220000000000006, "total_cost": 0.0077220000000000006, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211854} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211856} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211888} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6457, "completion_tokens": 847, "total_tokens": 7304, "cost": 0.032076, "total_cost": 0.140862, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211913} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7452, "completion_tokens": 292, "total_tokens": 7744, "cost": 0.026736000000000003, "total_cost": 0.167598, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732211931} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212065} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212526} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212526} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212533} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212533} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8911, "completion_tokens": 350, "total_tokens": 9261, "cost": 0.031983, "total_cost": 0.031983, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212575} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9310, "completion_tokens": 169, "total_tokens": 9479, "cost": 0.030465, "total_cost": 0.062448, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212613} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212618} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212618} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9547, "completion_tokens": 345, "total_tokens": 9892, "cost": 0.033816, "total_cost": 0.09626399999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212644} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212651} -{"event": "cli session", "properties": {"main_model": "gpt-4o-mini", "weak_model": "gpt-4o-mini", "editor_model": "gpt-4o-mini", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212652} -{"event": "message_send", "properties": {"main_model": "gpt-4o-mini", "weak_model": "gpt-4o-mini", "editor_model": "gpt-4o-mini", "edit_format": "whole", "prompt_tokens": 675, "completion_tokens": 0, "total_tokens": 675, "cost": 0.00010125, "total_cost": 0.00010125, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212657} -{"event": "message_send", "properties": {"main_model": "gpt-4o-mini", "weak_model": "gpt-4o-mini", "editor_model": "gpt-4o-mini", "edit_format": "whole", "prompt_tokens": 691, "completion_tokens": 30, "total_tokens": 721, "cost": 0.00012165, "total_cost": 0.0002229, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212668} -{"event": "message_send", "properties": {"main_model": "gpt-4o-mini", "weak_model": "gpt-4o-mini", "editor_model": "gpt-4o-mini", "edit_format": "whole", "prompt_tokens": 732, "completion_tokens": 33, "total_tokens": 765, "cost": 0.0001296, "total_cost": 0.0003525, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212716} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212741} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212741} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212744} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4085, "completion_tokens": 113, "total_tokens": 4198, "cost": 0.01395, "total_cost": 0.01395, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212754} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732212773} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213010} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213010} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213034} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213035} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213041} -{"event": "command_chat-mode", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213045} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 11518, "completion_tokens": 150, "total_tokens": 11668, "cost": 0.036804, "total_cost": 0.036804, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213062} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 11698, "completion_tokens": 247, "total_tokens": 11945, "cost": 0.038799, "total_cost": 0.075603, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213089} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213237} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213251} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213251} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213254} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6309, "completion_tokens": 806, "total_tokens": 7115, "cost": 0.031017, "total_cost": 0.031017, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213297} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7575, "completion_tokens": 567, "total_tokens": 8142, "cost": 0.03123, "total_cost": 0.062247, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213376} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213420} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8224, "completion_tokens": 2891, "total_tokens": 11115, "cost": 0.068037, "total_cost": 0.130284, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213496} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213536} {"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213545} {"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213586} {"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213601} @@ -998,3 +839,162 @@ {"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670811} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 2330, "completion_tokens": 31, "total_tokens": 2361, "cost": 0.007455000000000001, "total_cost": 0.007455000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670815} {"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670821} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670951} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732670952} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678168} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678168} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678196} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 11571, "completion_tokens": 245, "total_tokens": 11816, "cost": 0.038388, "total_cost": 0.038388, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678205} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678221} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 11834, "completion_tokens": 673, "total_tokens": 12507, "cost": 0.045597, "total_cost": 0.083985, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678237} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678250} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 12392, "completion_tokens": 936, "total_tokens": 13328, "cost": 0.051216, "total_cost": 0.13520100000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678270} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678329} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678330} +{"event": "command_paste", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678331} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4210, "completion_tokens": 64, "total_tokens": 4274, "cost": 0.013590000000000001, "total_cost": 0.013590000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678345} +{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678366} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 15472, "completion_tokens": 1344, "total_tokens": 16816, "cost": 0.066576, "total_cost": 0.201777, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678393} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678639} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678639} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678648} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678648} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 226, "completion_tokens": 260, "total_tokens": 486, "cost": 0.0045780000000000005, "total_cost": 0.0045780000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678664} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 503, "completion_tokens": 240, "total_tokens": 743, "cost": 0.005109, "total_cost": 0.009687000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678685} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678708} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 225, "completion_tokens": 180, "total_tokens": 405, "cost": 0.0033750000000000004, "total_cost": 0.013062, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732678722} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679037} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679037} +{"event": "command_read-only", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679050} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 30601, "completion_tokens": 416, "total_tokens": 31017, "cost": 0.09804299999999999, "total_cost": 0.09804299999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679100} +{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679185} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 35687, "completion_tokens": 351, "total_tokens": 36038, "cost": 0.11232600000000001, "total_cost": 0.210369, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679210} +{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679218} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679233} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679253} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 36405, "completion_tokens": 512, "total_tokens": 36917, "cost": 0.11689500000000001, "total_cost": 0.327264, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679270} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 39001, "completion_tokens": 464, "total_tokens": 39465, "cost": 0.123963, "total_cost": 0.451227, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679320} +{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679332} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 34105, "completion_tokens": 404, "total_tokens": 34509, "cost": 0.108375, "total_cost": 0.5596019999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679362} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 34222, "completion_tokens": 835, "total_tokens": 35057, "cost": 0.115191, "total_cost": 0.674793, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679392} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679483} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679484} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679494} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679495} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679498} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4198, "completion_tokens": 474, "total_tokens": 4672, "cost": 0.019704, "total_cost": 0.019704, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679525} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679543} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 19326, "completion_tokens": 118, "total_tokens": 19444, "cost": 0.059748, "total_cost": 0.079452, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679565} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679572} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 29776, "completion_tokens": 133, "total_tokens": 29909, "cost": 0.091323, "total_cost": 0.170775, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679587} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679614} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679615} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679621} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 14077, "completion_tokens": 219, "total_tokens": 14296, "cost": 0.045516, "total_cost": 0.045516, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679628} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 16430, "completion_tokens": 91, "total_tokens": 16521, "cost": 0.050655, "total_cost": 0.096171, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679648} +{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679677} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679679} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7095, "completion_tokens": 311, "total_tokens": 7406, "cost": 0.02595, "total_cost": 0.196725, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679706} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679795} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732679795} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681092} +{"event": "model warning", "properties": {"main_model": "gemini/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681094} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681102} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-latest", "edit_format": "diff-fenced", "prompt_tokens": 2256, "completion_tokens": 31, "total_tokens": 2287, "cost": 0.00792855, "total_cost": 0.00792855, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681105} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-latest", "edit_format": "diff-fenced", "prompt_tokens": 2331, "completion_tokens": 63, "total_tokens": 2394, "cost": 0.008224649999999998, "total_cost": 0.0161532, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681108} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681148} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-latest", "edit_format": "diff-fenced", "prompt_tokens": 2356, "completion_tokens": 5, "total_tokens": 2361, "cost": 0.00825125, "total_cost": 0.00825125, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681152} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681165} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-latest", "edit_format": "diff-fenced", "prompt_tokens": 2361, "completion_tokens": 18, "total_tokens": 2379, "cost": 0.0082824, "total_cost": 0.0082824, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681169} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681230} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681244} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681271} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681274} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 31, "total_tokens": 684, "cost": 5.8274999999999993e-05, "total_cost": 5.8274999999999993e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681277} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681279} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-001", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-001", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 15, "total_tokens": 668, "cost": 5.3475e-05, "total_cost": 5.3475e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681281} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681289} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681292} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 30, "total_tokens": 783, "cost": 6.547499999999999e-05, "total_cost": 6.547499999999999e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681295} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681297} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-001", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-001", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 10, "total_tokens": 763, "cost": 5.9474999999999996e-05, "total_cost": 5.9474999999999996e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681300} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681302} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-002", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-002", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 30, "total_tokens": 783, "cost": 6.547499999999999e-05, "total_cost": 6.547499999999999e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681306} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681308} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-8b-exp-0827", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-8b-exp-0827", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 42, "total_tokens": 795, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681311} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681313} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-8b-exp-0924", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-8b-exp-0924", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 42, "total_tokens": 795, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681316} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681317} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-exp-0827", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-exp-0827", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 19, "total_tokens": 772, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681321} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681323} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-latest", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 34, "total_tokens": 787, "cost": 6.6675e-05, "total_cost": 6.6675e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681326} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681328} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro", "edit_format": "diff-fenced", "prompt_tokens": 2361, "completion_tokens": 18, "total_tokens": 2379, "cost": 0.0084525, "total_cost": 0.0084525, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681332} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681334} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-001", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-001", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 25, "total_tokens": 778, "cost": 0.002898, "total_cost": 0.002898, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681338} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681340} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-002", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-002", "edit_format": "diff", "prompt_tokens": 2363, "completion_tokens": 10, "total_tokens": 2373, "cost": 0.0083755, "total_cost": 0.0083755, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681345} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681347} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-exp-0801", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-exp-0801", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 37, "total_tokens": 790, "cost": 0.0030239999999999998, "total_cost": 0.0030239999999999998, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681352} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681354} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-exp-0827", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-exp-0827", "edit_format": "diff-fenced", "prompt_tokens": 2361, "completion_tokens": 19, "total_tokens": 2380, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681358} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681360} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-latest", "edit_format": "diff-fenced", "prompt_tokens": 2361, "completion_tokens": 18, "total_tokens": 2379, "cost": 0.0082824, "total_cost": 0.0082824, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681364} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681366} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-exp-1114", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-exp-1114", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 10, "total_tokens": 763, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681372} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681374} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-gemma-2-27b-it", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-gemma-2-27b-it", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 0, "total_tokens": 753, "cost": 0.00026355, "total_cost": 0.00026355, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681376} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681378} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-gemma-2-9b-it", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-gemma-2-9b-it", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 0, "total_tokens": 753, "cost": 0.00026355, "total_cost": 0.00026355, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681380} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681383} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-pro", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-pro", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 0, "total_tokens": 753, "cost": 0.00026355, "total_cost": 0.00026355, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681385} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681387} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-pro-vision", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-pro-vision", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 0, "total_tokens": 753, "cost": 0.00026355, "total_cost": 0.00026355, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681389} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681485} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681488} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 32, "total_tokens": 685, "cost": 5.8575e-05, "total_cost": 5.8575e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681491} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681493} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-001", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-001", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 15, "total_tokens": 668, "cost": 5.3475e-05, "total_cost": 5.3475e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681495} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681497} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681528} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681531} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 21, "total_tokens": 774, "cost": 6.2775e-05, "total_cost": 6.2775e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681534} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681536} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-001", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-001", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 10, "total_tokens": 763, "cost": 5.9474999999999996e-05, "total_cost": 5.9474999999999996e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681539} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681541} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-002", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-002", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 34, "total_tokens": 787, "cost": 6.6675e-05, "total_cost": 6.6675e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681545} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681546} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-8b-exp-0827", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-8b-exp-0827", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 42, "total_tokens": 795, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681550} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681552} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-8b-exp-0924", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-8b-exp-0924", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 45, "total_tokens": 798, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681555} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681557} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-exp-0827", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-exp-0827", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 18, "total_tokens": 771, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681561} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681563} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-flash-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-flash-latest", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 20, "total_tokens": 773, "cost": 6.2475e-05, "total_cost": 6.2475e-05, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681566} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681568} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro", "edit_format": "diff-fenced", "prompt_tokens": 2261, "completion_tokens": 37, "total_tokens": 2298, "cost": 0.008302, "total_cost": 0.008302, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681571} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681574} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-001", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-001", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 24, "total_tokens": 677, "cost": 0.0025375, "total_cost": 0.0025375, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681577} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681579} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-002", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-002", "edit_format": "diff", "prompt_tokens": 2263, "completion_tokens": 28, "total_tokens": 2291, "cost": 0.0082145, "total_cost": 0.0082145, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681584} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681586} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-exp-0801", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-exp-0801", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 49, "total_tokens": 702, "cost": 0.0027999999999999995, "total_cost": 0.0027999999999999995, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681590} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681592} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-exp-0827", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-exp-0827", "edit_format": "diff-fenced", "prompt_tokens": 2261, "completion_tokens": 45, "total_tokens": 2306, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681596} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681596} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681597} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-1.5-pro-latest", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-1.5-pro-latest", "edit_format": "diff-fenced", "prompt_tokens": 2261, "completion_tokens": 22, "total_tokens": 2283, "cost": 0.0079366, "total_cost": 0.0079366, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681600} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681602} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-exp-1114", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-exp-1114", "edit_format": "whole", "prompt_tokens": 753, "completion_tokens": 9, "total_tokens": 762, "cost": 0.0, "total_cost": 0.0, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681608} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681610} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-gemma-2-27b-it", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-gemma-2-27b-it", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 0, "total_tokens": 653, "cost": 0.00022855, "total_cost": 0.00022855, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681612} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681614} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-gemma-2-9b-it", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-gemma-2-9b-it", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 0, "total_tokens": 653, "cost": 0.00022855, "total_cost": 0.00022855, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681616} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681618} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-pro", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-pro", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 23, "total_tokens": 676, "cost": 0.0002527, "total_cost": 0.0002527, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681621} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681623} +{"event": "message_send", "properties": {"main_model": "gemini/gemini-pro-vision", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "gemini/gemini-pro-vision", "edit_format": "whole", "prompt_tokens": 653, "completion_tokens": 0, "total_tokens": 653, "cost": 0.00022855, "total_cost": 0.00022855, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681625} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681656} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 23213, "completion_tokens": 235, "total_tokens": 23448, "cost": 0.073164, "total_cost": 0.073164, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681667} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681679} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681679} From 7dffa943fa5be83d556ecfecb329ee7426ea92aa Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 20:37:29 -0800 Subject: [PATCH 20/58] fix: handle analytics file access errors gracefully --- aider/analytics.py | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/aider/analytics.py b/aider/analytics.py index 52f5a7f9d..9404fa05b 100644 --- a/aider/analytics.py +++ b/aider/analytics.py @@ -105,9 +105,14 @@ class Analytics: return uuid_str[:6] <= threshold def get_data_file_path(self): - data_file = Path.home() / ".aider" / "analytics.json" - data_file.parent.mkdir(parents=True, exist_ok=True) - return data_file + try: + data_file = Path.home() / ".aider" / "analytics.json" + data_file.parent.mkdir(parents=True, exist_ok=True) + return data_file + except OSError: + # If we can't create/access the directory, just disable analytics + self.disable(permanently=False) + return None def get_or_create_uuid(self): self.load_data() @@ -119,6 +124,9 @@ class Analytics: def load_data(self): data_file = self.get_data_file_path() + if not data_file: + return + if data_file.exists(): try: data = json.loads(data_file.read_text()) @@ -130,14 +138,20 @@ class Analytics: def save_data(self): data_file = self.get_data_file_path() + if not data_file: + return + data = dict( uuid=self.user_id, permanently_disable=self.permanently_disable, asked_opt_in=self.asked_opt_in, ) - # Allow exceptions; crash if we can't record permanently_disabled=True, etc - data_file.write_text(json.dumps(data, indent=4)) + try: + data_file.write_text(json.dumps(data, indent=4)) + except OSError: + # If we can't write the file, just disable analytics + self.disable(permanently=False) def get_system_info(self): return { From ded5fe5ec02759948b15ad4da14c7e785fd56882 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 20:37:34 -0800 Subject: [PATCH 21/58] style: remove trailing whitespace in analytics.py --- aider/analytics.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/aider/analytics.py b/aider/analytics.py index 9404fa05b..82c888247 100644 --- a/aider/analytics.py +++ b/aider/analytics.py @@ -126,7 +126,7 @@ class Analytics: data_file = self.get_data_file_path() if not data_file: return - + if data_file.exists(): try: data = json.loads(data_file.read_text()) @@ -140,7 +140,7 @@ class Analytics: data_file = self.get_data_file_path() if not data_file: return - + data = dict( uuid=self.user_id, permanently_disable=self.permanently_disable, From 200295e3eea614639810692669ac621d4f349de4 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Tue, 26 Nov 2024 20:41:59 -0800 Subject: [PATCH 22/58] fix: add error handling for input history file permissions --- aider/io.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/aider/io.py b/aider/io.py index ea7229730..df6e71317 100644 --- a/aider/io.py +++ b/aider/io.py @@ -492,10 +492,13 @@ class InputOutput: def add_to_input_history(self, inp): if not self.input_history_file: return - FileHistory(self.input_history_file).append_string(inp) - # Also add to the in-memory history if it exists - if self.prompt_session and self.prompt_session.history: - self.prompt_session.history.append_string(inp) + try: + FileHistory(self.input_history_file).append_string(inp) + # Also add to the in-memory history if it exists + if self.prompt_session and self.prompt_session.history: + self.prompt_session.history.append_string(inp) + except OSError as err: + self.tool_warning(f"Unable to write to input history file: {err}") def get_input_history(self): if not self.input_history_file: From 947e4ce71d8efbfbab905bf624176f055db5d10f Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Tue, 26 Nov 2024 20:43:09 -0800 Subject: [PATCH 23/58] copy --- HISTORY.md | 4 ++- aider/website/HISTORY.md | 4 ++- aider/website/assets/sample-analytics.jsonl | 28 ++++++++++----------- 3 files changed, 20 insertions(+), 16 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index 3da032c17..e2785d6f0 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -5,7 +5,9 @@ - PDF support for Sonnet and Gemini models. - Set cwd to repo root when running shell commands. - Improved error handling for failed .gitignore file operations. -- Aider wrote 82% of the code in this release. +- Improved error handling for input history file permissions. +- Improved error handling for analytics file access. +- Aider wrote 85% of the code in this release. ### Aider v0.65.1 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index ab2a243b8..61755d118 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -29,7 +29,9 @@ cog.out(text) - PDF support for Sonnet and Gemini models. - Set cwd to repo root when running shell commands. - Improved error handling for failed .gitignore file operations. -- Aider wrote 82% of the code in this release. +- Improved error handling for input history file permissions. +- Improved error handling for analytics file access. +- Aider wrote 85% of the code in this release. ### Aider v0.65.1 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index d4f2f27b3..bf186ae2a 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,17 +1,3 @@ -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213545} -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213586} -{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213601} -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213603} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6984, "completion_tokens": 2897, "total_tokens": 9881, "cost": 0.064407, "total_cost": 0.194691, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213683} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213738} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 7783, "completion_tokens": 126, "total_tokens": 7909, "cost": 0.025239, "total_cost": 0.21993000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213743} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10040, "completion_tokens": 311, "total_tokens": 10351, "cost": 0.034785, "total_cost": 0.254715, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213757} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7462, "completion_tokens": 159, "total_tokens": 7621, "cost": 0.024771, "total_cost": 0.279486, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213839} -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213849} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6678, "completion_tokens": 171, "total_tokens": 6849, "cost": 0.022599, "total_cost": 0.302085, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213901} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213915} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6902, "completion_tokens": 474, "total_tokens": 7376, "cost": 0.027816, "total_cost": 0.329901, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732213950} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732214094} {"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732214094} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7539, "completion_tokens": 548, "total_tokens": 8087, "cost": 0.030837000000000003, "total_cost": 0.360738, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732214492} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8172, "completion_tokens": 261, "total_tokens": 8433, "cost": 0.028430999999999998, "total_cost": 0.389169, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732214517} @@ -998,3 +984,17 @@ {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 23213, "completion_tokens": 235, "total_tokens": 23448, "cost": 0.073164, "total_cost": 0.073164, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681667} {"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681679} {"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732681679} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682162} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682162} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682176} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 4762, "completion_tokens": 116, "total_tokens": 4878, "cost": 0.016026, "total_cost": 0.016026, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682188} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 5252, "completion_tokens": 472, "total_tokens": 5724, "cost": 0.022836, "total_cost": 0.038861999999999994, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682202} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7910, "completion_tokens": 594, "total_tokens": 8504, "cost": 0.03264, "total_cost": 0.071502, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682247} +{"event": "command_diff", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682351} +{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682448} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682462} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682462} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7011, "completion_tokens": 71, "total_tokens": 7082, "cost": 0.022098, "total_cost": 0.09359999999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682475} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 11983, "completion_tokens": 296, "total_tokens": 12279, "cost": 0.040389, "total_cost": 0.133989, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682516} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682550} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24248, "completion_tokens": 210, "total_tokens": 24458, "cost": 0.075894, "total_cost": 0.075894, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682562} From 5c73ab26c09fbf0f33f2f1eba4476d802aafcd98 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:23:21 -0800 Subject: [PATCH 24/58] test: add key symbol checks for each language parser --- tests/basic/test_repomap.py | 100 ++++++++++++++++++++---------------- 1 file changed, 55 insertions(+), 45 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index cdcd609b9..a6e44e831 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -385,99 +385,109 @@ class Greeter { } } """, + "Greeter" # Key symbol to check ), "c": ( "test.c", - ( - '#include \n\nint main() {\n printf("Hello, World!\\n");\n ' - " return 0;\n}\n" - ), + '#include \n\nint main() {\n printf("Hello, World!\\n");\n return 0;\n}\n', + "main" # Key symbol to check ), "csharp": ( "test.cs", - ( - "using System;\n\nclass Program {\n static void Main() {\n " - ' Console.WriteLine("Hello, World!");\n }\n}\n' - ), + 'using System;\n\nclass Program {\n static void Main() {\n Console.WriteLine("Hello, World!");\n }\n}\n', + "Program" # Key symbol to check ), "cpp": ( "test.cpp", - ( - '#include \n\nint main() {\n std::cout << "Hello, World!" <<' - " std::endl;\n return 0;\n}\n" - ), + '#include \n\nint main() {\n std::cout << "Hello, World!" << std::endl;\n return 0;\n}\n', + "main" # Key symbol to check + ), + "elisp": ( + "test.el", + '(defun greet (name)\n (message "Hello, %s!" name))\n', + "greet" # Key symbol to check ), - "elisp": ("test.el", '(defun greet (name)\n (message "Hello, %s!" name))\n'), "elixir": ( "test.ex", - ( - 'defmodule Greeter do\n def hello(name) do\n IO.puts("Hello, #{name}!")\n ' - " end\nend\n" - ), + 'defmodule Greeter do\n def hello(name) do\n IO.puts("Hello, #{name}!")\n end\nend\n', + "Greeter" # Key symbol to check ), "elm": ( "test.elm", - ( - "module Main exposing (main)\n\nimport Html exposing (text)\n\nmain =\n text" - ' "Hello, World!"\n' - ), + 'module Main exposing (main)\n\nimport Html exposing (text)\n\nmain =\n text "Hello, World!"\n', + "Main" # Key symbol to check ), "go": ( "test.go", - ( - 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello,' - ' World!")\n}\n' - ), + 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello, World!")\n}\n', + "main" # Key symbol to check ), "java": ( "Test.java", - ( - "public class Test {\n public static void main(String[] args) {\n " - ' System.out.println("Hello, World!");\n }\n}\n' - ), + 'public class Test {\n public static void main(String[] args) {\n System.out.println("Hello, World!");\n }\n}\n', + "Test" # Key symbol to check ), "javascript": ( "test.js", "function greet(name) {\n console.log(`Hello, ${name}!`);\n}\n", + "greet" # Key symbol to check + ), + "ocaml": ( + "test.ml", + 'let greet name =\n Printf.printf "Hello, %s!\\n" name\n', + "greet" # Key symbol to check ), - "ocaml": ("test.ml", 'let greet name =\n Printf.printf "Hello, %s!\\n" name\n'), "php": ( "test.php", '\n', + "greet" # Key symbol to check + ), + "python": ( + "test.py", + 'def greet(name):\n print(f"Hello, {name}!")\n', + "greet" # Key symbol to check + ), + "ql": ( + "test.ql", + 'predicate greet(string name) {\n name = "World"\n}\n', + "greet" # Key symbol to check + ), + "ruby": ( + "test.rb", + 'def greet(name)\n puts "Hello, #{name}!"\nend\n', + "greet" # Key symbol to check + ), + "rust": ( + "test.rs", + 'fn main() {\n println!("Hello, World!");\n}\n', + "main" # Key symbol to check ), - "python": ("test.py", 'def greet(name):\n print(f"Hello, {name}!")\n'), - "ql": ("test.ql", 'predicate greet(string name) {\n name = "World"\n}\n'), - "ruby": ("test.rb", 'def greet(name)\n puts "Hello, #{name}!"\nend\n'), - "rust": ("test.rs", 'fn main() {\n println!("Hello, World!");\n}\n'), "typescript": ( "test.ts", "function greet(name: string): void {\n console.log(`Hello, ${name}!`);\n}\n", + "greet" # Key symbol to check ), "tsx": ( "test.tsx", - ( - "import React from 'react';\n\nconst Greeting: React.FC<{ name: string }> = ({" - " name }) => {\n return

Hello, {name}!

;\n};\n\nexport default" - " Greeting;\n" - ), + "import React from 'react';\n\nconst Greeting: React.FC<{ name: string }> = ({ name }) => {\n return

Hello, {name}!

;\n};\n\nexport default Greeting;\n", + "Greeting" # Key symbol to check ), } with IgnorantTemporaryDirectory() as temp_dir: - for _, (filename, content) in language_files.items(): + for _, (filename, content, _) in language_files.items(): with open(os.path.join(temp_dir, filename), "w") as f: f.write(content) io = InputOutput() repo_map = RepoMap(main_model=self.GPT35, root=temp_dir, io=io) - other_files = [ - os.path.join(temp_dir, filename) for filename, _ in language_files.values() - ] + other_files = [os.path.join(temp_dir, filename) for filename, _, _ in language_files.values()] result = repo_map.get_repo_map([], other_files) - # Check if the result contains all the expected files - for lang, (filename, _) in language_files.items(): + # Check if the result contains all the expected files and symbols + for lang, (filename, _, key_symbol) in language_files.items(): self.assertIn(filename, result, f"File for language {lang} not found in repo map") + self.assertIn(key_symbol, result, f"Key symbol '{key_symbol}' for language {lang} not found in repo map") # close the open cache files, so Windows won't error del repo_map From 48ea13e1300252af42014c43535de2ecc82f05d1 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:23:25 -0800 Subject: [PATCH 25/58] style: format code with black and add trailing commas --- tests/basic/test_repomap.py | 87 +++++++++++++++++++++++++------------ 1 file changed, 59 insertions(+), 28 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index a6e44e831..e5b0f76f8 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -385,92 +385,117 @@ class Greeter { } } """, - "Greeter" # Key symbol to check + "Greeter", # Key symbol to check ), "c": ( "test.c", - '#include \n\nint main() {\n printf("Hello, World!\\n");\n return 0;\n}\n', - "main" # Key symbol to check + ( + '#include \n\nint main() {\n printf("Hello, World!\\n");\n ' + " return 0;\n}\n" + ), + "main", # Key symbol to check ), "csharp": ( "test.cs", - 'using System;\n\nclass Program {\n static void Main() {\n Console.WriteLine("Hello, World!");\n }\n}\n', - "Program" # Key symbol to check + ( + "using System;\n\nclass Program {\n static void Main() {\n " + ' Console.WriteLine("Hello, World!");\n }\n}\n' + ), + "Program", # Key symbol to check ), "cpp": ( "test.cpp", - '#include \n\nint main() {\n std::cout << "Hello, World!" << std::endl;\n return 0;\n}\n', - "main" # Key symbol to check + ( + '#include \n\nint main() {\n std::cout << "Hello, World!" <<' + " std::endl;\n return 0;\n}\n" + ), + "main", # Key symbol to check ), "elisp": ( "test.el", '(defun greet (name)\n (message "Hello, %s!" name))\n', - "greet" # Key symbol to check + "greet", # Key symbol to check ), "elixir": ( "test.ex", - 'defmodule Greeter do\n def hello(name) do\n IO.puts("Hello, #{name}!")\n end\nend\n', - "Greeter" # Key symbol to check + ( + 'defmodule Greeter do\n def hello(name) do\n IO.puts("Hello, #{name}!")\n ' + " end\nend\n" + ), + "Greeter", # Key symbol to check ), "elm": ( "test.elm", - 'module Main exposing (main)\n\nimport Html exposing (text)\n\nmain =\n text "Hello, World!"\n', - "Main" # Key symbol to check + ( + "module Main exposing (main)\n\nimport Html exposing (text)\n\nmain =\n text" + ' "Hello, World!"\n' + ), + "Main", # Key symbol to check ), "go": ( "test.go", - 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello, World!")\n}\n', - "main" # Key symbol to check + ( + 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello,' + ' World!")\n}\n' + ), + "main", # Key symbol to check ), "java": ( "Test.java", - 'public class Test {\n public static void main(String[] args) {\n System.out.println("Hello, World!");\n }\n}\n', - "Test" # Key symbol to check + ( + "public class Test {\n public static void main(String[] args) {\n " + ' System.out.println("Hello, World!");\n }\n}\n' + ), + "Test", # Key symbol to check ), "javascript": ( "test.js", "function greet(name) {\n console.log(`Hello, ${name}!`);\n}\n", - "greet" # Key symbol to check + "greet", # Key symbol to check ), "ocaml": ( "test.ml", 'let greet name =\n Printf.printf "Hello, %s!\\n" name\n', - "greet" # Key symbol to check + "greet", # Key symbol to check ), "php": ( "test.php", '\n', - "greet" # Key symbol to check + "greet", # Key symbol to check ), "python": ( "test.py", 'def greet(name):\n print(f"Hello, {name}!")\n', - "greet" # Key symbol to check + "greet", # Key symbol to check ), "ql": ( "test.ql", 'predicate greet(string name) {\n name = "World"\n}\n', - "greet" # Key symbol to check + "greet", # Key symbol to check ), "ruby": ( "test.rb", 'def greet(name)\n puts "Hello, #{name}!"\nend\n', - "greet" # Key symbol to check + "greet", # Key symbol to check ), "rust": ( "test.rs", 'fn main() {\n println!("Hello, World!");\n}\n', - "main" # Key symbol to check + "main", # Key symbol to check ), "typescript": ( "test.ts", "function greet(name: string): void {\n console.log(`Hello, ${name}!`);\n}\n", - "greet" # Key symbol to check + "greet", # Key symbol to check ), "tsx": ( "test.tsx", - "import React from 'react';\n\nconst Greeting: React.FC<{ name: string }> = ({ name }) => {\n return

Hello, {name}!

;\n};\n\nexport default Greeting;\n", - "Greeting" # Key symbol to check + ( + "import React from 'react';\n\nconst Greeting: React.FC<{ name: string }> = ({" + " name }) => {\n return

Hello, {name}!

;\n};\n\nexport default" + " Greeting;\n" + ), + "Greeting", # Key symbol to check ), } @@ -481,13 +506,19 @@ class Greeter { io = InputOutput() repo_map = RepoMap(main_model=self.GPT35, root=temp_dir, io=io) - other_files = [os.path.join(temp_dir, filename) for filename, _, _ in language_files.values()] + other_files = [ + os.path.join(temp_dir, filename) for filename, _, _ in language_files.values() + ] result = repo_map.get_repo_map([], other_files) # Check if the result contains all the expected files and symbols for lang, (filename, _, key_symbol) in language_files.items(): self.assertIn(filename, result, f"File for language {lang} not found in repo map") - self.assertIn(key_symbol, result, f"Key symbol '{key_symbol}' for language {lang} not found in repo map") + self.assertIn( + key_symbol, + result, + f"Key symbol '{key_symbol}' for language {lang} not found in repo map", + ) # close the open cache files, so Windows won't error del repo_map From 2337b2bb3ee77cbe7599f273cbbda4a66151ea05 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 06:48:10 -0800 Subject: [PATCH 26/58] test: refactor repo map language test to run each language separately --- tests/basic/test_repomap.py | 116 ++++++++++++++++++------------------ 1 file changed, 58 insertions(+), 58 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index e5b0f76f8..5e09da33b 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -373,20 +373,6 @@ class TestRepoMapAllLanguages(unittest.TestCase): def test_get_repo_map_all_languages(self): language_files = { - "dart": ( - "test.dart", - """void main() { - print('Hello, World!'); -} - -class Greeter { - String sayHello(String name) { - return 'Hello, $name!'; - } -} -""", - "Greeter", # Key symbol to check - ), "c": ( "test.c", ( @@ -395,14 +381,6 @@ class Greeter { ), "main", # Key symbol to check ), - "csharp": ( - "test.cs", - ( - "using System;\n\nclass Program {\n static void Main() {\n " - ' Console.WriteLine("Hello, World!");\n }\n}\n' - ), - "Program", # Key symbol to check - ), "cpp": ( "test.cpp", ( @@ -411,11 +389,6 @@ class Greeter { ), "main", # Key symbol to check ), - "elisp": ( - "test.el", - '(defun greet (name)\n (message "Hello, %s!" name))\n', - "greet", # Key symbol to check - ), "elixir": ( "test.ex", ( @@ -424,22 +397,6 @@ class Greeter { ), "Greeter", # Key symbol to check ), - "elm": ( - "test.elm", - ( - "module Main exposing (main)\n\nimport Html exposing (text)\n\nmain =\n text" - ' "Hello, World!"\n' - ), - "Main", # Key symbol to check - ), - "go": ( - "test.go", - ( - 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello,' - ' World!")\n}\n' - ), - "main", # Key symbol to check - ), "java": ( "Test.java", ( @@ -450,7 +407,7 @@ class Greeter { ), "javascript": ( "test.js", - "function greet(name) {\n console.log(`Hello, ${name}!`);\n}\n", + "var greet= 1;function greet(name) {\n console.log(`Hello, ${name}!`);\n}\n", "greet", # Key symbol to check ), "ocaml": ( @@ -497,31 +454,74 @@ class Greeter { ), "Greeting", # Key symbol to check ), + "csharp": ( + "test.cs", + ( + "using System;\n\nclass Program {\n static void Main() {\n " + ' Console.WriteLine("Hello, World!");\n }\n}\n' + ), + "Program", # Key symbol to check + ), + ##################### + "dart": ( + "test.dart", + """void main() { + print('Hello, World!'); +} + +class Greeter { + String sayHello(String name) { + return 'Hello, $name!'; + } +} +""", + "Greeter", # Key symbol to check + ), + "elisp": ( + "test.el", + '(defun greet (name)\n (message "Hello, %s!" name))\n', + "greet", # Key symbol to check + ), + "elm": ( + "test.elm", + ( + "module Main exposing (main)\n\nimport Html exposing (text)\n\nmain =\n text" + ' "Hello, World!"\n' + ), + "Main", # Key symbol to check + ), + "go": ( + "test.go", + ( + 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello,' + ' World!")\n}\n' + ), + "main", # Key symbol to check + ), } - with IgnorantTemporaryDirectory() as temp_dir: - for _, (filename, content, _) in language_files.items(): + for lang, (filename, content, key_symbol) in language_files.items(): + with GitTemporaryDirectory() as temp_dir: with open(os.path.join(temp_dir, filename), "w") as f: f.write(content) - io = InputOutput() - repo_map = RepoMap(main_model=self.GPT35, root=temp_dir, io=io) - other_files = [ - os.path.join(temp_dir, filename) for filename, _, _ in language_files.values() - ] - result = repo_map.get_repo_map([], other_files) + io = InputOutput() + repo_map = RepoMap(main_model=self.GPT35, root=temp_dir, io=io) + other_files = [filename] + result = repo_map.get_repo_map([], other_files) + dump(lang) + dump(result) - # Check if the result contains all the expected files and symbols - for lang, (filename, _, key_symbol) in language_files.items(): - self.assertIn(filename, result, f"File for language {lang} not found in repo map") + # Check if the result contains all the expected files and symbols + self.assertIn(filename, result, f"File for language {lang} not found in repo map: {result}") self.assertIn( key_symbol, result, - f"Key symbol '{key_symbol}' for language {lang} not found in repo map", + f"Key symbol '{key_symbol}' for language {lang} not found in repo map: {result}", ) - # close the open cache files, so Windows won't error - del repo_map + # close the open cache files, so Windows won't error + del repo_map def test_repo_map_sample_code_base(self): # Path to the sample code base From 27f0ca3b0863f359971de37441da245a8651d5d5 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:48:12 -0800 Subject: [PATCH 27/58] feat: enhance JavaScript test snippet with class and module exports --- tests/basic/test_repomap.py | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 5e09da33b..5a199e88a 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -407,8 +407,34 @@ class TestRepoMapAllLanguages(unittest.TestCase): ), "javascript": ( "test.js", - "var greet= 1;function greet(name) {\n console.log(`Hello, ${name}!`);\n}\n", - "greet", # Key symbol to check + """// Class definition +class Person { + constructor(name) { + this.name = name; + } + + sayHello() { + return `Hello, ${this.name}!`; + } +} + +// Function declaration +function greet(person) { + return person.sayHello(); +} + +// Variables and constants +const DEFAULT_NAME = 'World'; +let currentPerson = new Person(DEFAULT_NAME); + +// Export for use in other modules +module.exports = { + Person, + greet, + DEFAULT_NAME +}; +""", + "Person", # Key symbol to check ), "ocaml": ( "test.ml", From 7bc7b2e3da7bb706c69ba9dbb3f90b712cc18c1a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:48:17 -0800 Subject: [PATCH 28/58] style: Fix line length violations in test_repomap.py --- tests/basic/test_repomap.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 5a199e88a..1c12920af 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -539,11 +539,16 @@ class Greeter { dump(result) # Check if the result contains all the expected files and symbols - self.assertIn(filename, result, f"File for language {lang} not found in repo map: {result}") + self.assertIn( + filename, result, f"File for language {lang} not found in repo map: {result}" + ) self.assertIn( key_symbol, result, - f"Key symbol '{key_symbol}' for language {lang} not found in repo map: {result}", + ( + f"Key symbol '{key_symbol}' for language {lang} not found in repo map:" + f" {result}" + ), ) # close the open cache files, so Windows won't error From 4f6e52aed0bb90430bf3a5928e0cd64267c2397f Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 06:51:20 -0800 Subject: [PATCH 29/58] test: add assertion for minimum result length in repomap test --- tests/basic/test_repomap.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 1c12920af..ee4a3e1cc 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -412,7 +412,7 @@ class Person { constructor(name) { this.name = name; } - + sayHello() { return `Hello, ${this.name}!`; } @@ -538,6 +538,8 @@ class Greeter { dump(lang) dump(result) + self.assertGreater(len(result.strip().splitlines()), 1) + # Check if the result contains all the expected files and symbols self.assertIn( filename, result, f"File for language {lang} not found in repo map: {result}" From 203128d935bcad3134eda121a2f443064bfcdf39 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:51:22 -0800 Subject: [PATCH 30/58] test: enhance Java test case with interface and implementation --- tests/basic/test_repomap.py | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index ee4a3e1cc..8380faeaa 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -399,11 +399,24 @@ class TestRepoMapAllLanguages(unittest.TestCase): ), "java": ( "Test.java", - ( - "public class Test {\n public static void main(String[] args) {\n " - ' System.out.println("Hello, World!");\n }\n}\n' - ), - "Test", # Key symbol to check + """public interface Greeting { + String greet(String name); +} + +public class Test implements Greeting { + private String prefix = "Hello"; + + public String greet(String name) { + return prefix + ", " + name + "!"; + } + + public static void main(String[] args) { + Test greeter = new Test(); + System.out.println(greeter.greet("World")); + } +} +""", + "Greeting", # Key symbol to check ), "javascript": ( "test.js", From 00f79fecd09d71856aebc57a58debf37efb1dc78 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:51:53 -0800 Subject: [PATCH 31/58] test: enhance OCaml test case with module and type definitions --- tests/basic/test_repomap.py | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 8380faeaa..88f6cf89d 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -451,8 +451,27 @@ module.exports = { ), "ocaml": ( "test.ml", - 'let greet name =\n Printf.printf "Hello, %s!\\n" name\n', - "greet", # Key symbol to check + """(* Module definition *) +module Greeter = struct + type person = { + name: string; + age: int + } + + let create_person name age = + {name; age} + + let greet person = + Printf.printf "Hello, %s! You are %d years old.\\n" + person.name person.age +end + +(* Outside the module *) +let () = + let person = Greeter.create_person "Alice" 30 in + Greeter.greet person +""", + "Greeter", # Key symbol to check ), "php": ( "test.php", From 0faff91c722ca70b60fc4f51c2d732df498c7cd9 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:52:31 -0800 Subject: [PATCH 32/58] test: enhance Python test case with class and type annotations --- tests/basic/test_repomap.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 88f6cf89d..746c12d01 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -480,8 +480,33 @@ let () = ), "python": ( "test.py", - 'def greet(name):\n print(f"Hello, {name}!")\n', - "greet", # Key symbol to check + '''from typing import Optional, List + +class Person: + """A class representing a person.""" + + def __init__(self, name: str, age: Optional[int] = None): + self.name = name + self.age = age + + def greet(self, formal: bool = False) -> str: + """Generate a greeting.""" + prefix = "Good day" if formal else "Hello" + return f"{prefix}, {self.name}!" + +def create_greeting_list(people: List[Person]) -> List[str]: + """Create greetings for a list of people.""" + return [person.greet() for person in people] + +# Constants +DEFAULT_NAME = "World" +MAX_AGE = 150 + +if __name__ == "__main__": + person = Person(DEFAULT_NAME) + print(person.greet()) +''', + "Person", # Key symbol to check ), "ql": ( "test.ql", From 10877a99f1d9ffc914191aaa744540a42e6d045f Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:53:41 -0800 Subject: [PATCH 33/58] test: enhance Rust test snippet with trait and struct examples --- tests/basic/test_repomap.py | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 746c12d01..2278d4564 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -520,8 +520,41 @@ if __name__ == "__main__": ), "rust": ( "test.rs", - 'fn main() {\n println!("Hello, World!");\n}\n', - "main", # Key symbol to check + """// Define a trait +trait Greeting { + fn greet(&self) -> String; +} + +// Define a struct +struct Person { + name: String, + age: u32, +} + +// Implement the trait for Person +impl Greeting for Person { + fn greet(&self) -> String { + format!("Hello, {}! You are {} years old.", self.name, self.age) + } +} + +// Implementation block for Person +impl Person { + fn new(name: String, age: u32) -> Self { + Person { name, age } + } +} + +// Constants +const DEFAULT_NAME: &str = "World"; +const MAX_AGE: u32 = 150; + +fn main() { + let person = Person::new(DEFAULT_NAME.to_string(), 30); + println!("{}", person.greet()); +} +""", + "Person", # Key symbol to check ), "typescript": ( "test.ts", From ae395fbb8fa88129600a5e46f43a1d93572a136a Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:54:37 -0800 Subject: [PATCH 34/58] test: enhance TSX test fixture with more symbols and hooks --- tests/basic/test_repomap.py | 38 +++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 2278d4564..ccecbdf12 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -563,12 +563,38 @@ fn main() { ), "tsx": ( "test.tsx", - ( - "import React from 'react';\n\nconst Greeting: React.FC<{ name: string }> = ({" - " name }) => {\n return

Hello, {name}!

;\n};\n\nexport default" - " Greeting;\n" - ), - "Greeting", # Key symbol to check + """import React, { useState, useEffect } from 'react'; + +interface UserProps { + name: string; + age?: number; +} + +// Component with props interface +const UserGreeting: React.FC = ({ name, age }) => { + const [greeting, setGreeting] = useState(''); + + useEffect(() => { + setGreeting(`Hello, ${name}${age ? ` (${age})` : ''}!`); + }, [name, age]); + + return

{greeting}

; +}; + +// Custom hook +function useCounter(initial: number = 0) { + const [count, setCount] = useState(initial); + const increment = () => setCount(c => c + 1); + return { count, increment }; +} + +// Constants +const DEFAULT_NAME = 'World'; +const MAX_AGE = 150; + +export { UserGreeting, useCounter, DEFAULT_NAME, MAX_AGE }; +""", + "UserGreeting", # Key symbol to check ), "csharp": ( "test.cs", From 8d50bc0ef1a1d76898f6530711493755fde7e6f5 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 06:56:15 -0800 Subject: [PATCH 35/58] fix: correct key symbol in TypeScript test from UserGreeting to UserProps --- tests/basic/test_repomap.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index ccecbdf12..f94878a37 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -405,11 +405,11 @@ class TestRepoMapAllLanguages(unittest.TestCase): public class Test implements Greeting { private String prefix = "Hello"; - + public String greet(String name) { return prefix + ", " + name + "!"; } - + public static void main(String[] args) { Test greeter = new Test(); System.out.println(greeter.greet("World")); @@ -458,16 +458,16 @@ module Greeter = struct age: int } - let create_person name age = + let create_person name age = {name; age} let greet person = - Printf.printf "Hello, %s! You are %d years old.\\n" + Printf.printf "Hello, %s! You are %d years old.\\n" person.name person.age end (* Outside the module *) -let () = +let () = let person = Greeter.create_person "Alice" 30 in Greeter.greet person """, @@ -484,11 +484,11 @@ let () = class Person: """A class representing a person.""" - + def __init__(self, name: str, age: Optional[int] = None): self.name = name self.age = age - + def greet(self, formal: bool = False) -> str: """Generate a greeting.""" prefix = "Good day" if formal else "Hello" @@ -594,7 +594,7 @@ const MAX_AGE = 150; export { UserGreeting, useCounter, DEFAULT_NAME, MAX_AGE }; """, - "UserGreeting", # Key symbol to check + "UserProps", # Key symbol to check ), "csharp": ( "test.cs", From 631cdc37c414153d26b4a2bd0424499b85de73ca Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:56:16 -0800 Subject: [PATCH 36/58] test: enhance C# test case with more language features and symbols --- tests/basic/test_repomap.py | 45 ++++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 5 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index f94878a37..11514ae42 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -598,11 +598,46 @@ export { UserGreeting, useCounter, DEFAULT_NAME, MAX_AGE }; ), "csharp": ( "test.cs", - ( - "using System;\n\nclass Program {\n static void Main() {\n " - ' Console.WriteLine("Hello, World!");\n }\n}\n' - ), - "Program", # Key symbol to check + """using System; +using System.Collections.Generic; + +namespace Greetings { + public interface IGreeter { + string Greet(string name); + } + + public class Person { + public string Name { get; set; } + public int Age { get; set; } + + public Person(string name, int age) { + Name = name; + Age = age; + } + } + + public class FormalGreeter : IGreeter { + private const string PREFIX = "Good day"; + private static readonly int MAX_AGE = 150; + + public string Greet(string name) { + return $"{PREFIX}, {name}!"; + } + + public string GreetPerson(Person person) { + return $"{PREFIX}, {person.Name} ({person.Age})!"; + } + } + + public class Program { + static void Main() { + var greeter = new FormalGreeter(); + var person = new Person("World", 42); + Console.WriteLine(greeter.GreetPerson(person)); + } + } +}""", + "IGreeter", # Key symbol to check ), ##################### "dart": ( From b623141a8fc558a46e52847bc8f409eaffdde24a Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 06:58:13 -0800 Subject: [PATCH 37/58] refactor: reorder test language cases in repomap tests --- tests/basic/test_repomap.py | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 11514ae42..53298bf39 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -639,21 +639,7 @@ namespace Greetings { }""", "IGreeter", # Key symbol to check ), - ##################### - "dart": ( - "test.dart", - """void main() { - print('Hello, World!'); -} - -class Greeter { - String sayHello(String name) { - return 'Hello, $name!'; - } -} -""", - "Greeter", # Key symbol to check - ), + ##################### FIX ALL THE ONES BELOW HERE vvvvvvvvvvv "elisp": ( "test.el", '(defun greet (name)\n (message "Hello, %s!" name))\n', @@ -675,6 +661,20 @@ class Greeter { ), "main", # Key symbol to check ), + "dart": ( + "test.dart", + """void main() { + print('Hello, World!'); +} + +class Greeter { + String sayHello(String name) { + return 'Hello, $name!'; + } +} +""", + "Greeter", # Key symbol to check + ), } for lang, (filename, content, key_symbol) in language_files.items(): From 9e9b5e8d469b4e5c47e5aae9c89cdc26f60b8fd4 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:58:15 -0800 Subject: [PATCH 38/58] feat: enhance language test snippets with comprehensive examples --- tests/basic/test_repomap.py | 150 +++++++++++++++++++++++++++++++----- 1 file changed, 131 insertions(+), 19 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 53298bf39..24c6efd5b 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -642,38 +642,150 @@ namespace Greetings { ##################### FIX ALL THE ONES BELOW HERE vvvvvvvvvvv "elisp": ( "test.el", - '(defun greet (name)\n (message "Hello, %s!" name))\n', - "greet", # Key symbol to check + """(defvar *default-greeting* "Hello") +(defvar *max-name-length* 50) + +(defstruct person + (name "Anonymous") + (age 0)) + +(defclass greeter () + ((prefix :initarg :prefix + :accessor greeter-prefix + :initform *default-greeting*))) + +(defmethod greet ((g greeter) (p person)) + (format nil "~A, ~A! You are ~D years old." + (greeter-prefix g) + (person-name p) + (person-age p))) + +(defun create-formal-greeter () + (make-instance 'greeter :prefix "Good day")) + +(defun main () + (let ((greeter (create-formal-greeter)) + (person (make-person :name "World" :age 42))) + (message "%s" (greet greeter person))))""", + "greeter", # Key symbol to check ), "elm": ( "test.elm", - ( - "module Main exposing (main)\n\nimport Html exposing (text)\n\nmain =\n text" - ' "Hello, World!"\n' - ), - "Main", # Key symbol to check + """module Main exposing (main, Person, Greeting) + +import Html exposing (Html, div, text) +import Html.Attributes exposing (class) + +type alias Person = + { name : String + , age : Int + } + +type Greeting + = Formal + | Casual + +greet : Greeting -> Person -> String +greet style person = + let + prefix = + case style of + Formal -> + "Good day" + + Casual -> + "Hi" + in + prefix ++ ", " ++ person.name ++ "!" + +defaultPerson : Person +defaultPerson = + { name = "World" + , age = 42 + } + +main : Html msg +main = + div [ class "greeting" ] + [ text (greet Formal defaultPerson) + ]""", + "Person", # Key symbol to check ), "go": ( "test.go", - ( - 'package main\n\nimport "fmt"\n\nfunc main() {\n fmt.Println("Hello,' - ' World!")\n}\n' - ), - "main", # Key symbol to check + """package main + +import ( + "fmt" + "strings" +) + +// Person represents someone who can be greeted +type Person struct { + Name string + Age int +} + +// Greeter defines greeting behavior +type Greeter interface { + Greet(p Person) string +} + +// FormalGreeter implements Greeter with formal style +type FormalGreeter struct { + Prefix string +} + +const ( + DefaultName = "World" + MaxAge = 150 +) + +func (g FormalGreeter) Greet(p Person) string { + return fmt.Sprintf("%s, %s! You are %d years old.", + g.Prefix, p.Name, p.Age) +} + +func NewFormalGreeter() *FormalGreeter { + return &FormalGreeter{Prefix: "Good day"} +} + +func main() { + greeter := NewFormalGreeter() + person := Person{Name: DefaultName, Age: 42} + fmt.Println(greeter.Greet(person)) +}""", + "Greeter", # Key symbol to check ), "dart": ( "test.dart", - """void main() { - print('Hello, World!'); + """abstract class Greeting { + String greet(Person person); } -class Greeter { - String sayHello(String name) { - return 'Hello, $name!'; +class Person { + final String name; + final int age; + + const Person(this.name, this.age); +} + +class FormalGreeting implements Greeting { + static const String prefix = 'Good day'; + static const int maxAge = 150; + + @override + String greet(Person person) { + return '$prefix, ${person.name}! You are ${person.age} years old.'; } } -""", - "Greeter", # Key symbol to check + +void main() { + final greeter = FormalGreeting(); + final person = Person('World', 42); + print(greeter.greet(person)); +}""", + "Greeting", # Key symbol to check ), } From a85ae206c9a99996c4f19459714628cbe405b1f1 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 06:59:58 -0800 Subject: [PATCH 39/58] refactor: add initial language test fixtures for C, C++, Elixir and Java --- tests/fixtures/languages/c/hello.c | 6 ++++++ tests/fixtures/languages/cpp/hello.cpp | 6 ++++++ tests/fixtures/languages/elixir/greeter.ex | 5 +++++ tests/fixtures/languages/java/Test.java | 16 ++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 tests/fixtures/languages/c/hello.c create mode 100644 tests/fixtures/languages/cpp/hello.cpp create mode 100644 tests/fixtures/languages/elixir/greeter.ex create mode 100644 tests/fixtures/languages/java/Test.java diff --git a/tests/fixtures/languages/c/hello.c b/tests/fixtures/languages/c/hello.c new file mode 100644 index 000000000..f26b97c98 --- /dev/null +++ b/tests/fixtures/languages/c/hello.c @@ -0,0 +1,6 @@ +#include + +int main() { + printf("Hello, World!\n"); + return 0; +} diff --git a/tests/fixtures/languages/cpp/hello.cpp b/tests/fixtures/languages/cpp/hello.cpp new file mode 100644 index 000000000..bc8f460d0 --- /dev/null +++ b/tests/fixtures/languages/cpp/hello.cpp @@ -0,0 +1,6 @@ +#include + +int main() { + std::cout << "Hello, World!" << std::endl; + return 0; +} diff --git a/tests/fixtures/languages/elixir/greeter.ex b/tests/fixtures/languages/elixir/greeter.ex new file mode 100644 index 000000000..192f5904c --- /dev/null +++ b/tests/fixtures/languages/elixir/greeter.ex @@ -0,0 +1,5 @@ +defmodule Greeter do + def hello(name) do + IO.puts("Hello, #{name}!") + end +end diff --git a/tests/fixtures/languages/java/Test.java b/tests/fixtures/languages/java/Test.java new file mode 100644 index 000000000..ae2ecafa8 --- /dev/null +++ b/tests/fixtures/languages/java/Test.java @@ -0,0 +1,16 @@ +public interface Greeting { + String greet(String name); +} + +public class Test implements Greeting { + private String prefix = "Hello"; + + public String greet(String name) { + return prefix + ", " + name + "!"; + } + + public static void main(String[] args) { + Test greeter = new Test(); + System.out.println(greeter.greet("World")); + } +} From 565f08a8e94bca9cd00bd824e1815bad62190bbb Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 07:03:18 -0800 Subject: [PATCH 40/58] refactor: clean up test cases and remove redundant language examples --- tests/basic/test_repomap.py | 35 ++--------------------------------- 1 file changed, 2 insertions(+), 33 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 24c6efd5b..07485c7b9 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -639,7 +639,6 @@ namespace Greetings { }""", "IGreeter", # Key symbol to check ), - ##################### FIX ALL THE ONES BELOW HERE vvvvvvvvvvv "elisp": ( "test.el", """(defvar *default-greeting* "Hello") @@ -692,7 +691,7 @@ greet style person = case style of Formal -> "Good day" - + Casual -> "Hi" in @@ -742,7 +741,7 @@ const ( ) func (g FormalGreeter) Greet(p Person) string { - return fmt.Sprintf("%s, %s! You are %d years old.", + return fmt.Sprintf("%s, %s! You are %d years old.", g.Prefix, p.Name, p.Age) } @@ -757,36 +756,6 @@ func main() { }""", "Greeter", # Key symbol to check ), - "dart": ( - "test.dart", - """abstract class Greeting { - String greet(Person person); -} - -class Person { - final String name; - final int age; - - const Person(this.name, this.age); -} - -class FormalGreeting implements Greeting { - static const String prefix = 'Good day'; - static const int maxAge = 150; - - @override - String greet(Person person) { - return '$prefix, ${person.name}! You are ${person.age} years old.'; - } -} - -void main() { - final greeter = FormalGreeting(); - final person = Person('World', 42); - print(greeter.greet(person)); -}""", - "Greeting", # Key symbol to check - ), } for lang, (filename, content, key_symbol) in language_files.items(): From 4de8c25a3f477492ec78fd6164fe344e5f282747 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:03:20 -0800 Subject: [PATCH 41/58] refactor: move language examples to fixture files --- tests/basic/test_repomap.py | 148 +----------------------- tests/fixtures/languages/csharp/test.cs | 39 +++++++ tests/fixtures/languages/elisp/test.el | 25 ++++ tests/fixtures/languages/elm/test.elm | 38 ++++++ tests/fixtures/languages/go/test.go | 42 +++++++ 5 files changed, 148 insertions(+), 144 deletions(-) create mode 100644 tests/fixtures/languages/csharp/test.cs create mode 100644 tests/fixtures/languages/elisp/test.el create mode 100644 tests/fixtures/languages/elm/test.elm create mode 100644 tests/fixtures/languages/go/test.go diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 07485c7b9..7347800e5 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -598,162 +598,22 @@ export { UserGreeting, useCounter, DEFAULT_NAME, MAX_AGE }; ), "csharp": ( "test.cs", - """using System; -using System.Collections.Generic; - -namespace Greetings { - public interface IGreeter { - string Greet(string name); - } - - public class Person { - public string Name { get; set; } - public int Age { get; set; } - - public Person(string name, int age) { - Name = name; - Age = age; - } - } - - public class FormalGreeter : IGreeter { - private const string PREFIX = "Good day"; - private static readonly int MAX_AGE = 150; - - public string Greet(string name) { - return $"{PREFIX}, {name}!"; - } - - public string GreetPerson(Person person) { - return $"{PREFIX}, {person.Name} ({person.Age})!"; - } - } - - public class Program { - static void Main() { - var greeter = new FormalGreeter(); - var person = new Person("World", 42); - Console.WriteLine(greeter.GreetPerson(person)); - } - } -}""", + "", # Now reads from fixture file "IGreeter", # Key symbol to check ), "elisp": ( "test.el", - """(defvar *default-greeting* "Hello") -(defvar *max-name-length* 50) - -(defstruct person - (name "Anonymous") - (age 0)) - -(defclass greeter () - ((prefix :initarg :prefix - :accessor greeter-prefix - :initform *default-greeting*))) - -(defmethod greet ((g greeter) (p person)) - (format nil "~A, ~A! You are ~D years old." - (greeter-prefix g) - (person-name p) - (person-age p))) - -(defun create-formal-greeter () - (make-instance 'greeter :prefix "Good day")) - -(defun main () - (let ((greeter (create-formal-greeter)) - (person (make-person :name "World" :age 42))) - (message "%s" (greet greeter person))))""", + "", # Now reads from fixture file "greeter", # Key symbol to check ), "elm": ( "test.elm", - """module Main exposing (main, Person, Greeting) - -import Html exposing (Html, div, text) -import Html.Attributes exposing (class) - -type alias Person = - { name : String - , age : Int - } - -type Greeting - = Formal - | Casual - -greet : Greeting -> Person -> String -greet style person = - let - prefix = - case style of - Formal -> - "Good day" - - Casual -> - "Hi" - in - prefix ++ ", " ++ person.name ++ "!" - -defaultPerson : Person -defaultPerson = - { name = "World" - , age = 42 - } - -main : Html msg -main = - div [ class "greeting" ] - [ text (greet Formal defaultPerson) - ]""", + "", # Now reads from fixture file "Person", # Key symbol to check ), "go": ( "test.go", - """package main - -import ( - "fmt" - "strings" -) - -// Person represents someone who can be greeted -type Person struct { - Name string - Age int -} - -// Greeter defines greeting behavior -type Greeter interface { - Greet(p Person) string -} - -// FormalGreeter implements Greeter with formal style -type FormalGreeter struct { - Prefix string -} - -const ( - DefaultName = "World" - MaxAge = 150 -) - -func (g FormalGreeter) Greet(p Person) string { - return fmt.Sprintf("%s, %s! You are %d years old.", - g.Prefix, p.Name, p.Age) -} - -func NewFormalGreeter() *FormalGreeter { - return &FormalGreeter{Prefix: "Good day"} -} - -func main() { - greeter := NewFormalGreeter() - person := Person{Name: DefaultName, Age: 42} - fmt.Println(greeter.Greet(person)) -}""", + "", # Now reads from fixture file "Greeter", # Key symbol to check ), } diff --git a/tests/fixtures/languages/csharp/test.cs b/tests/fixtures/languages/csharp/test.cs new file mode 100644 index 000000000..51f5bf4e6 --- /dev/null +++ b/tests/fixtures/languages/csharp/test.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; + +namespace Greetings { + public interface IGreeter { + string Greet(string name); + } + + public class Person { + public string Name { get; set; } + public int Age { get; set; } + + public Person(string name, int age) { + Name = name; + Age = age; + } + } + + public class FormalGreeter : IGreeter { + private const string PREFIX = "Good day"; + private static readonly int MAX_AGE = 150; + + public string Greet(string name) { + return $"{PREFIX}, {name}!"; + } + + public string GreetPerson(Person person) { + return $"{PREFIX}, {person.Name} ({person.Age})!"; + } + } + + public class Program { + static void Main() { + var greeter = new FormalGreeter(); + var person = new Person("World", 42); + Console.WriteLine(greeter.GreetPerson(person)); + } + } +} diff --git a/tests/fixtures/languages/elisp/test.el b/tests/fixtures/languages/elisp/test.el new file mode 100644 index 000000000..26e25b7b3 --- /dev/null +++ b/tests/fixtures/languages/elisp/test.el @@ -0,0 +1,25 @@ +(defvar *default-greeting* "Hello") +(defvar *max-name-length* 50) + +(defstruct person + (name "Anonymous") + (age 0)) + +(defclass greeter () + ((prefix :initarg :prefix + :accessor greeter-prefix + :initform *default-greeting*))) + +(defmethod greet ((g greeter) (p person)) + (format nil "~A, ~A! You are ~D years old." + (greeter-prefix g) + (person-name p) + (person-age p))) + +(defun create-formal-greeter () + (make-instance 'greeter :prefix "Good day")) + +(defun main () + (let ((greeter (create-formal-greeter)) + (person (make-person :name "World" :age 42))) + (message "%s" (greet greeter person)))) diff --git a/tests/fixtures/languages/elm/test.elm b/tests/fixtures/languages/elm/test.elm new file mode 100644 index 000000000..7784f60eb --- /dev/null +++ b/tests/fixtures/languages/elm/test.elm @@ -0,0 +1,38 @@ +module Main exposing (main, Person, Greeting) + +import Html exposing (Html, div, text) +import Html.Attributes exposing (class) + +type alias Person = + { name : String + , age : Int + } + +type Greeting + = Formal + | Casual + +greet : Greeting -> Person -> String +greet style person = + let + prefix = + case style of + Formal -> + "Good day" + + Casual -> + "Hi" + in + prefix ++ ", " ++ person.name ++ "!" + +defaultPerson : Person +defaultPerson = + { name = "World" + , age = 42 + } + +main : Html msg +main = + div [ class "greeting" ] + [ text (greet Formal defaultPerson) + ] diff --git a/tests/fixtures/languages/go/test.go b/tests/fixtures/languages/go/test.go new file mode 100644 index 000000000..98f6bca10 --- /dev/null +++ b/tests/fixtures/languages/go/test.go @@ -0,0 +1,42 @@ +package main + +import ( + "fmt" + "strings" +) + +// Person represents someone who can be greeted +type Person struct { + Name string + Age int +} + +// Greeter defines greeting behavior +type Greeter interface { + Greet(p Person) string +} + +// FormalGreeter implements Greeter with formal style +type FormalGreeter struct { + Prefix string +} + +const ( + DefaultName = "World" + MaxAge = 150 +) + +func (g FormalGreeter) Greet(p Person) string { + return fmt.Sprintf("%s, %s! You are %d years old.", + g.Prefix, p.Name, p.Age) +} + +func NewFormalGreeter() *FormalGreeter { + return &FormalGreeter{Prefix: "Good day"} +} + +func main() { + greeter := NewFormalGreeter() + person := Person{Name: DefaultName, Age: 42} + fmt.Println(greeter.Greet(person)) +} From 642c1c50fb4eec63c014af887b504025c8fb3bbe Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:04:23 -0800 Subject: [PATCH 42/58] refactor: move remaining test examples to fixture files --- tests/basic/test_repomap.py | 71 +-------------------- tests/fixtures/languages/python/test.py | 25 ++++++++ tests/fixtures/languages/tsx/test.tsx | 11 ++++ tests/fixtures/languages/typescript/test.ts | 27 ++++++++ 4 files changed, 66 insertions(+), 68 deletions(-) create mode 100644 tests/fixtures/languages/python/test.py create mode 100644 tests/fixtures/languages/tsx/test.tsx create mode 100644 tests/fixtures/languages/typescript/test.ts diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 7347800e5..a86a2ff47 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -281,35 +281,7 @@ class TestRepoMapTypescript(unittest.TestCase): def test_get_repo_map_typescript(self): # Create a temporary directory with a sample TypeScript file test_file_ts = "test_file.ts" - file_content_ts = """\ -interface IMyInterface { - someMethod(): void; -} - -type ExampleType = { - key: string; - value: number; -}; - -enum Status { - New, - InProgress, - Completed, -} - -export class MyClass { - constructor(public value: number) {} - - add(input: number): number { - return this.value + input; - return this.value + input; - } -} - -export function myFunction(input: number): number { - return input * 2; -} -""" + file_content_ts = "" with IgnorantTemporaryDirectory() as temp_dir: with open(os.path.join(temp_dir, test_file_ts), "w") as f: @@ -335,19 +307,7 @@ export function myFunction(input: number): number { def test_get_repo_map_tsx(self): # Create a temporary directory with a sample TSX file test_file_tsx = "test_file.tsx" - file_content_tsx = """\ -import React from 'react'; - -interface GreetingProps { - name: string; -} - -const Greeting: React.FC = ({ name }) => { - return

Hello, {name}!

; -}; - -export default Greeting; -""" + file_content_tsx = "" with IgnorantTemporaryDirectory() as temp_dir: with open(os.path.join(temp_dir, test_file_tsx), "w") as f: @@ -480,32 +440,7 @@ let () = ), "python": ( "test.py", - '''from typing import Optional, List - -class Person: - """A class representing a person.""" - - def __init__(self, name: str, age: Optional[int] = None): - self.name = name - self.age = age - - def greet(self, formal: bool = False) -> str: - """Generate a greeting.""" - prefix = "Good day" if formal else "Hello" - return f"{prefix}, {self.name}!" - -def create_greeting_list(people: List[Person]) -> List[str]: - """Create greetings for a list of people.""" - return [person.greet() for person in people] - -# Constants -DEFAULT_NAME = "World" -MAX_AGE = 150 - -if __name__ == "__main__": - person = Person(DEFAULT_NAME) - print(person.greet()) -''', + "", # Now reads from fixture file "Person", # Key symbol to check ), "ql": ( diff --git a/tests/fixtures/languages/python/test.py b/tests/fixtures/languages/python/test.py new file mode 100644 index 000000000..726362a07 --- /dev/null +++ b/tests/fixtures/languages/python/test.py @@ -0,0 +1,25 @@ +from typing import Optional, List + +class Person: + """A class representing a person.""" + + def __init__(self, name: str, age: Optional[int] = None): + self.name = name + self.age = age + + def greet(self, formal: bool = False) -> str: + """Generate a greeting.""" + prefix = "Good day" if formal else "Hello" + return f"{prefix}, {self.name}!" + +def create_greeting_list(people: List[Person]) -> List[str]: + """Create greetings for a list of people.""" + return [person.greet() for person in people] + +# Constants +DEFAULT_NAME = "World" +MAX_AGE = 150 + +if __name__ == "__main__": + person = Person(DEFAULT_NAME) + print(person.greet()) diff --git a/tests/fixtures/languages/tsx/test.tsx b/tests/fixtures/languages/tsx/test.tsx new file mode 100644 index 000000000..c813a35cf --- /dev/null +++ b/tests/fixtures/languages/tsx/test.tsx @@ -0,0 +1,11 @@ +import React from 'react'; + +interface GreetingProps { + name: string; +} + +const Greeting: React.FC = ({ name }) => { + return

Hello, {name}!

; +}; + +export default Greeting; diff --git a/tests/fixtures/languages/typescript/test.ts b/tests/fixtures/languages/typescript/test.ts new file mode 100644 index 000000000..3cdaf3fd1 --- /dev/null +++ b/tests/fixtures/languages/typescript/test.ts @@ -0,0 +1,27 @@ +interface IMyInterface { + someMethod(): void; +} + +type ExampleType = { + key: string; + value: number; +}; + +enum Status { + New, + InProgress, + Completed, +} + +export class MyClass { + constructor(public value: number) {} + + add(input: number): number { + return this.value + input; + return this.value + input; + } +} + +export function myFunction(input: number): number { + return input * 2; +} From 44ceb8f1a0d93df2aa493b43131ef262782231fc Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:04:29 -0800 Subject: [PATCH 43/58] style: Fix import order and add proper line spacing --- tests/fixtures/languages/python/test.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tests/fixtures/languages/python/test.py b/tests/fixtures/languages/python/test.py index 726362a07..1514264c2 100644 --- a/tests/fixtures/languages/python/test.py +++ b/tests/fixtures/languages/python/test.py @@ -1,4 +1,5 @@ -from typing import Optional, List +from typing import List, Optional + class Person: """A class representing a person.""" @@ -12,10 +13,12 @@ class Person: prefix = "Good day" if formal else "Hello" return f"{prefix}, {self.name}!" + def create_greeting_list(people: List[Person]) -> List[str]: """Create greetings for a list of people.""" return [person.greet() for person in people] + # Constants DEFAULT_NAME = "World" MAX_AGE = 150 From 8c218e9edc4d13d6639e9493e48d040e481eb4ed Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:05:10 -0800 Subject: [PATCH 44/58] refactor: move remaining language examples to fixture files --- tests/fixtures/languages/javascript/test.js | 26 ++++++++++++++++ tests/fixtures/languages/ocaml/test.ml | 19 ++++++++++++ tests/fixtures/languages/php/test.php | 5 ++++ tests/fixtures/languages/ql/test.ql | 3 ++ tests/fixtures/languages/ruby/test.rb | 3 ++ tests/fixtures/languages/rust/test.rs | 33 +++++++++++++++++++++ 6 files changed, 89 insertions(+) create mode 100644 tests/fixtures/languages/javascript/test.js create mode 100644 tests/fixtures/languages/ocaml/test.ml create mode 100644 tests/fixtures/languages/php/test.php create mode 100644 tests/fixtures/languages/ql/test.ql create mode 100644 tests/fixtures/languages/ruby/test.rb create mode 100644 tests/fixtures/languages/rust/test.rs diff --git a/tests/fixtures/languages/javascript/test.js b/tests/fixtures/languages/javascript/test.js new file mode 100644 index 000000000..ad2a04940 --- /dev/null +++ b/tests/fixtures/languages/javascript/test.js @@ -0,0 +1,26 @@ +// Class definition +class Person { + constructor(name) { + this.name = name; + } + + sayHello() { + return `Hello, ${this.name}!`; + } +} + +// Function declaration +function greet(person) { + return person.sayHello(); +} + +// Variables and constants +const DEFAULT_NAME = 'World'; +let currentPerson = new Person(DEFAULT_NAME); + +// Export for use in other modules +module.exports = { + Person, + greet, + DEFAULT_NAME +}; diff --git a/tests/fixtures/languages/ocaml/test.ml b/tests/fixtures/languages/ocaml/test.ml new file mode 100644 index 000000000..47cb79c15 --- /dev/null +++ b/tests/fixtures/languages/ocaml/test.ml @@ -0,0 +1,19 @@ +(* Module definition *) +module Greeter = struct + type person = { + name: string; + age: int + } + + let create_person name age = + {name; age} + + let greet person = + Printf.printf "Hello, %s! You are %d years old.\n" + person.name person.age +end + +(* Outside the module *) +let () = + let person = Greeter.create_person "Alice" 30 in + Greeter.greet person diff --git a/tests/fixtures/languages/php/test.php b/tests/fixtures/languages/php/test.php new file mode 100644 index 000000000..d454bf82b --- /dev/null +++ b/tests/fixtures/languages/php/test.php @@ -0,0 +1,5 @@ + diff --git a/tests/fixtures/languages/ql/test.ql b/tests/fixtures/languages/ql/test.ql new file mode 100644 index 000000000..4ecc0c055 --- /dev/null +++ b/tests/fixtures/languages/ql/test.ql @@ -0,0 +1,3 @@ +predicate greet(string name) { + name = "World" +} diff --git a/tests/fixtures/languages/ruby/test.rb b/tests/fixtures/languages/ruby/test.rb new file mode 100644 index 000000000..d63f13b6c --- /dev/null +++ b/tests/fixtures/languages/ruby/test.rb @@ -0,0 +1,3 @@ +def greet(name) + puts "Hello, #{name}!" +end diff --git a/tests/fixtures/languages/rust/test.rs b/tests/fixtures/languages/rust/test.rs new file mode 100644 index 000000000..1bcc3ae85 --- /dev/null +++ b/tests/fixtures/languages/rust/test.rs @@ -0,0 +1,33 @@ +// Define a trait +trait Greeting { + fn greet(&self) -> String; +} + +// Define a struct +struct Person { + name: String, + age: u32, +} + +// Implement the trait for Person +impl Greeting for Person { + fn greet(&self) -> String { + format!("Hello, {}! You are {} years old.", self.name, self.age) + } +} + +// Implementation block for Person +impl Person { + fn new(name: String, age: u32) -> Self { + Person { name, age } + } +} + +// Constants +const DEFAULT_NAME: &str = "World"; +const MAX_AGE: u32 = 150; + +fn main() { + let person = Person::new(DEFAULT_NAME.to_string(), 30); + println!("{}", person.greet()); +} From 4580fac6faa8342b195d0adec209308d845cace8 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:05:36 -0800 Subject: [PATCH 45/58] refactor: move test code samples to fixture files --- tests/basic/test_repomap.py | 90 +++---------------------------------- 1 file changed, 6 insertions(+), 84 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index a86a2ff47..8afd9be3b 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -380,62 +380,17 @@ public class Test implements Greeting { ), "javascript": ( "test.js", - """// Class definition -class Person { - constructor(name) { - this.name = name; - } - - sayHello() { - return `Hello, ${this.name}!`; - } -} - -// Function declaration -function greet(person) { - return person.sayHello(); -} - -// Variables and constants -const DEFAULT_NAME = 'World'; -let currentPerson = new Person(DEFAULT_NAME); - -// Export for use in other modules -module.exports = { - Person, - greet, - DEFAULT_NAME -}; -""", + "", # Now reads from fixture file "Person", # Key symbol to check ), "ocaml": ( "test.ml", - """(* Module definition *) -module Greeter = struct - type person = { - name: string; - age: int - } - - let create_person name age = - {name; age} - - let greet person = - Printf.printf "Hello, %s! You are %d years old.\\n" - person.name person.age -end - -(* Outside the module *) -let () = - let person = Greeter.create_person "Alice" 30 in - Greeter.greet person -""", + "", # Now reads from fixture file "Greeter", # Key symbol to check ), "php": ( "test.php", - '\n', + "", # Now reads from fixture file "greet", # Key symbol to check ), "python": ( @@ -445,50 +400,17 @@ let () = ), "ql": ( "test.ql", - 'predicate greet(string name) {\n name = "World"\n}\n', + "", # Now reads from fixture file "greet", # Key symbol to check ), "ruby": ( "test.rb", - 'def greet(name)\n puts "Hello, #{name}!"\nend\n', + "", # Now reads from fixture file "greet", # Key symbol to check ), "rust": ( "test.rs", - """// Define a trait -trait Greeting { - fn greet(&self) -> String; -} - -// Define a struct -struct Person { - name: String, - age: u32, -} - -// Implement the trait for Person -impl Greeting for Person { - fn greet(&self) -> String { - format!("Hello, {}! You are {} years old.", self.name, self.age) - } -} - -// Implementation block for Person -impl Person { - fn new(name: String, age: u32) -> Self { - Person { name, age } - } -} - -// Constants -const DEFAULT_NAME: &str = "World"; -const MAX_AGE: u32 = 150; - -fn main() { - let person = Person::new(DEFAULT_NAME.to_string(), 30); - println!("{}", person.greet()); -} -""", + "", # Now reads from fixture file "Person", # Key symbol to check ), "typescript": ( From 7465b4bf911ee989caa2dca43207ed71da74c987 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:06:50 -0800 Subject: [PATCH 46/58] refactor: move TypeScript and TSX test code to fixture files --- tests/basic/test_repomap.py | 34 ++------------------- tests/fixtures/languages/tsx/test.tsx | 29 +++++++++++++++--- tests/fixtures/languages/typescript/test.ts | 28 ++--------------- 3 files changed, 28 insertions(+), 63 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 8afd9be3b..1742ce52e 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -415,42 +415,12 @@ public class Test implements Greeting { ), "typescript": ( "test.ts", - "function greet(name: string): void {\n console.log(`Hello, ${name}!`);\n}\n", + "", # Now reads from fixture file "greet", # Key symbol to check ), "tsx": ( "test.tsx", - """import React, { useState, useEffect } from 'react'; - -interface UserProps { - name: string; - age?: number; -} - -// Component with props interface -const UserGreeting: React.FC = ({ name, age }) => { - const [greeting, setGreeting] = useState(''); - - useEffect(() => { - setGreeting(`Hello, ${name}${age ? ` (${age})` : ''}!`); - }, [name, age]); - - return

{greeting}

; -}; - -// Custom hook -function useCounter(initial: number = 0) { - const [count, setCount] = useState(initial); - const increment = () => setCount(c => c + 1); - return { count, increment }; -} - -// Constants -const DEFAULT_NAME = 'World'; -const MAX_AGE = 150; - -export { UserGreeting, useCounter, DEFAULT_NAME, MAX_AGE }; -""", + "", # Now reads from fixture file "UserProps", # Key symbol to check ), "csharp": ( diff --git a/tests/fixtures/languages/tsx/test.tsx b/tests/fixtures/languages/tsx/test.tsx index c813a35cf..bb8ddec09 100644 --- a/tests/fixtures/languages/tsx/test.tsx +++ b/tests/fixtures/languages/tsx/test.tsx @@ -1,11 +1,30 @@ -import React from 'react'; +import React, { useState, useEffect } from 'react'; -interface GreetingProps { +interface UserProps { name: string; + age?: number; } -const Greeting: React.FC = ({ name }) => { - return

Hello, {name}!

; +// Component with props interface +const UserGreeting: React.FC = ({ name, age }) => { + const [greeting, setGreeting] = useState(''); + + useEffect(() => { + setGreeting(`Hello, ${name}${age ? ` (${age})` : ''}!`); + }, [name, age]); + + return

{greeting}

; }; -export default Greeting; +// Custom hook +function useCounter(initial: number = 0) { + const [count, setCount] = useState(initial); + const increment = () => setCount(c => c + 1); + return { count, increment }; +} + +// Constants +const DEFAULT_NAME = 'World'; +const MAX_AGE = 150; + +export { UserGreeting, useCounter, DEFAULT_NAME, MAX_AGE }; diff --git a/tests/fixtures/languages/typescript/test.ts b/tests/fixtures/languages/typescript/test.ts index 3cdaf3fd1..abdbd49fe 100644 --- a/tests/fixtures/languages/typescript/test.ts +++ b/tests/fixtures/languages/typescript/test.ts @@ -1,27 +1,3 @@ -interface IMyInterface { - someMethod(): void; -} - -type ExampleType = { - key: string; - value: number; -}; - -enum Status { - New, - InProgress, - Completed, -} - -export class MyClass { - constructor(public value: number) {} - - add(input: number): number { - return this.value + input; - return this.value + input; - } -} - -export function myFunction(input: number): number { - return input * 2; +function greet(name: string): void { + console.log(`Hello, ${name}!`); } From ec2b635a1a62b43bce8363d37795e14c3613e163 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:09:28 -0800 Subject: [PATCH 47/58] refactor: use fixture files for C, C++, and Elixir test content --- tests/basic/test_repomap.py | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 1742ce52e..e8daa7f0c 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -335,26 +335,17 @@ class TestRepoMapAllLanguages(unittest.TestCase): language_files = { "c": ( "test.c", - ( - '#include \n\nint main() {\n printf("Hello, World!\\n");\n ' - " return 0;\n}\n" - ), + "", # Now reads from fixture file "main", # Key symbol to check ), "cpp": ( "test.cpp", - ( - '#include \n\nint main() {\n std::cout << "Hello, World!" <<' - " std::endl;\n return 0;\n}\n" - ), + "", # Now reads from fixture file "main", # Key symbol to check ), "elixir": ( "test.ex", - ( - 'defmodule Greeter do\n def hello(name) do\n IO.puts("Hello, #{name}!")\n ' - " end\nend\n" - ), + "", # Now reads from fixture file "Greeter", # Key symbol to check ), "java": ( From 447b7af5735115d31cb9dfbee8c6a110505dfbbb Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:10:38 -0800 Subject: [PATCH 48/58] refactor: use fixture file for Java test instead of embedded code --- tests/basic/test_repomap.py | 18 +----------------- 1 file changed, 1 insertion(+), 17 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index e8daa7f0c..ba619d635 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -350,23 +350,7 @@ class TestRepoMapAllLanguages(unittest.TestCase): ), "java": ( "Test.java", - """public interface Greeting { - String greet(String name); -} - -public class Test implements Greeting { - private String prefix = "Hello"; - - public String greet(String name) { - return prefix + ", " + name + "!"; - } - - public static void main(String[] args) { - Test greeter = new Test(); - System.out.println(greeter.greet("World")); - } -} -""", + "", # Now reads from fixture file "Greeting", # Key symbol to check ), "javascript": ( From 2ce01b157be70d30c755c8a664b94071aa584790 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:11:45 -0800 Subject: [PATCH 49/58] refactor: simplify language test map and read from fixture files --- tests/basic/test_repomap.py | 124 +++++++++++------------------------- 1 file changed, 37 insertions(+), 87 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index ba619d635..7b8a68e30 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -333,96 +333,46 @@ class TestRepoMapAllLanguages(unittest.TestCase): def test_get_repo_map_all_languages(self): language_files = { - "c": ( - "test.c", - "", # Now reads from fixture file - "main", # Key symbol to check - ), - "cpp": ( - "test.cpp", - "", # Now reads from fixture file - "main", # Key symbol to check - ), - "elixir": ( - "test.ex", - "", # Now reads from fixture file - "Greeter", # Key symbol to check - ), - "java": ( - "Test.java", - "", # Now reads from fixture file - "Greeting", # Key symbol to check - ), - "javascript": ( - "test.js", - "", # Now reads from fixture file - "Person", # Key symbol to check - ), - "ocaml": ( - "test.ml", - "", # Now reads from fixture file - "Greeter", # Key symbol to check - ), - "php": ( - "test.php", - "", # Now reads from fixture file - "greet", # Key symbol to check - ), - "python": ( - "test.py", - "", # Now reads from fixture file - "Person", # Key symbol to check - ), - "ql": ( - "test.ql", - "", # Now reads from fixture file - "greet", # Key symbol to check - ), - "ruby": ( - "test.rb", - "", # Now reads from fixture file - "greet", # Key symbol to check - ), - "rust": ( - "test.rs", - "", # Now reads from fixture file - "Person", # Key symbol to check - ), - "typescript": ( - "test.ts", - "", # Now reads from fixture file - "greet", # Key symbol to check - ), - "tsx": ( - "test.tsx", - "", # Now reads from fixture file - "UserProps", # Key symbol to check - ), - "csharp": ( - "test.cs", - "", # Now reads from fixture file - "IGreeter", # Key symbol to check - ), - "elisp": ( - "test.el", - "", # Now reads from fixture file - "greeter", # Key symbol to check - ), - "elm": ( - "test.elm", - "", # Now reads from fixture file - "Person", # Key symbol to check - ), - "go": ( - "test.go", - "", # Now reads from fixture file - "Greeter", # Key symbol to check - ), + "c": "main", + "cpp": "main", + "elixir": "Greeter", + "java": "Greeting", + "javascript": "Person", + "ocaml": "Greeter", + "php": "greet", + "python": "Person", + "ql": "greet", + "ruby": "greet", + "rust": "Person", + "typescript": "greet", + "tsx": "UserProps", + "csharp": "IGreeter", + "elisp": "greeter", + "elm": "Person", + "go": "Greeter", } - for lang, (filename, content, key_symbol) in language_files.items(): + fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" + + for lang, key_symbol in language_files.items(): + # Get the fixture file path and name based on language + fixture_dir = fixtures_dir / lang + if lang == "cpp": + filename = "hello.cpp" + elif lang == "c": + filename = "hello.c" + else: + filename = "test." + {"csharp": "cs"}.get(lang, lang) + + fixture_path = fixture_dir / filename + self.assertTrue(fixture_path.exists(), f"Fixture file missing for {lang}: {fixture_path}") + + # Read the fixture content + with open(fixture_path, "r", encoding="utf-8") as f: + content = f.read() with GitTemporaryDirectory() as temp_dir: - with open(os.path.join(temp_dir, filename), "w") as f: + test_file = os.path.join(temp_dir, filename) + with open(test_file, "w", encoding="utf-8") as f: f.write(content) io = InputOutput() From 9ab46fade7e044128bbada2ae1c7e4573ae89fb9 Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:11:49 -0800 Subject: [PATCH 50/58] style: fix linting issues in test_repomap.py --- tests/basic/test_repomap.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 7b8a68e30..17ec03e92 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -334,7 +334,7 @@ class TestRepoMapAllLanguages(unittest.TestCase): def test_get_repo_map_all_languages(self): language_files = { "c": "main", - "cpp": "main", + "cpp": "main", "elixir": "Greeter", "java": "Greeting", "javascript": "Person", @@ -365,7 +365,9 @@ class TestRepoMapAllLanguages(unittest.TestCase): filename = "test." + {"csharp": "cs"}.get(lang, lang) fixture_path = fixture_dir / filename - self.assertTrue(fixture_path.exists(), f"Fixture file missing for {lang}: {fixture_path}") + self.assertTrue( + fixture_path.exists(), f"Fixture file missing for {lang}: {fixture_path}" + ) # Read the fixture content with open(fixture_path, "r", encoding="utf-8") as f: From f5100626a896e3e8ca1c6115451c6c0ba9457beb Mon Sep 17 00:00:00 2001 From: "Paul Gauthier (aider)" Date: Wed, 27 Nov 2024 07:18:04 -0800 Subject: [PATCH 51/58] refactor: update language file extensions and paths in test code --- tests/basic/test_repomap.py | 43 ++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index 17ec03e92..e4530a4b1 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -333,23 +333,23 @@ class TestRepoMapAllLanguages(unittest.TestCase): def test_get_repo_map_all_languages(self): language_files = { - "c": "main", - "cpp": "main", - "elixir": "Greeter", - "java": "Greeting", - "javascript": "Person", - "ocaml": "Greeter", - "php": "greet", - "python": "Person", - "ql": "greet", - "ruby": "greet", - "rust": "Person", - "typescript": "greet", - "tsx": "UserProps", - "csharp": "IGreeter", - "elisp": "greeter", - "elm": "Person", - "go": "Greeter", + "c": ("c", "main"), + "cpp": ("cpp", "main"), + "elixir": ("ex", "Greeter"), + "java": ("java", "Greeting"), + "javascript": ("js", "Person"), + "ocaml": ("ml", "Greeter"), + "php": ("php", "greet"), + "python": ("py", "Person"), + "ql": ("ql", "greet"), + "ruby": ("rb", "greet"), + "rust": ("rs", "Person"), + "typescript": ("ts", "greet"), + "tsx": ("tsx", "UserProps"), + "csharp": ("cs", "IGreeter"), + "elisp": ("el", "greeter"), + "elm": ("elm", "Person"), + "go": ("go", "Greeter"), } fixtures_dir = Path(__file__).parent.parent / "fixtures" / "languages" @@ -357,13 +357,8 @@ class TestRepoMapAllLanguages(unittest.TestCase): for lang, key_symbol in language_files.items(): # Get the fixture file path and name based on language fixture_dir = fixtures_dir / lang - if lang == "cpp": - filename = "hello.cpp" - elif lang == "c": - filename = "hello.c" - else: - filename = "test." + {"csharp": "cs"}.get(lang, lang) - + ext, key_symbol = language_files[lang] + filename = f"test.{ext}" fixture_path = fixture_dir / filename self.assertTrue( fixture_path.exists(), f"Fixture file missing for {lang}: {fixture_path}" From 8fb23b414cb5ab4ced1ce54a8b410cc573478b77 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 07:18:21 -0800 Subject: [PATCH 52/58] rename --- tests/fixtures/languages/c/{hello.c => test.c} | 0 tests/fixtures/languages/cpp/{hello.cpp => test.cpp} | 0 tests/fixtures/languages/elixir/{greeter.ex => test.ex} | 0 tests/fixtures/languages/java/{Test.java => test.java} | 0 4 files changed, 0 insertions(+), 0 deletions(-) rename tests/fixtures/languages/c/{hello.c => test.c} (100%) rename tests/fixtures/languages/cpp/{hello.cpp => test.cpp} (100%) rename tests/fixtures/languages/elixir/{greeter.ex => test.ex} (100%) rename tests/fixtures/languages/java/{Test.java => test.java} (100%) diff --git a/tests/fixtures/languages/c/hello.c b/tests/fixtures/languages/c/test.c similarity index 100% rename from tests/fixtures/languages/c/hello.c rename to tests/fixtures/languages/c/test.c diff --git a/tests/fixtures/languages/cpp/hello.cpp b/tests/fixtures/languages/cpp/test.cpp similarity index 100% rename from tests/fixtures/languages/cpp/hello.cpp rename to tests/fixtures/languages/cpp/test.cpp diff --git a/tests/fixtures/languages/elixir/greeter.ex b/tests/fixtures/languages/elixir/test.ex similarity index 100% rename from tests/fixtures/languages/elixir/greeter.ex rename to tests/fixtures/languages/elixir/test.ex diff --git a/tests/fixtures/languages/java/Test.java b/tests/fixtures/languages/java/test.java similarity index 100% rename from tests/fixtures/languages/java/Test.java rename to tests/fixtures/languages/java/test.java From a67b665846573abefc448cbabf1c62974bcace60 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 07:37:33 -0800 Subject: [PATCH 53/58] copy --- aider/website/_includes/multi-line.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/aider/website/_includes/multi-line.md b/aider/website/_includes/multi-line.md index 15de04da9..5a93562ca 100644 --- a/aider/website/_includes/multi-line.md +++ b/aider/website/_includes/multi-line.md @@ -13,3 +13,7 @@ def hello(): print("Hello}") # Note: contains a brace python} ``` + +{: .note } +People often ask for SHIFT-ENTER to be a soft-newline. +Unfortunately there is no portable way to detect that keystroke in terminals. From f44e5ae5f941245ea599909643e9eb88500e021b Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 07:46:47 -0800 Subject: [PATCH 54/58] cleanup --- tests/basic/test_repomap.py | 48 ------------------------------------- 1 file changed, 48 deletions(-) diff --git a/tests/basic/test_repomap.py b/tests/basic/test_repomap.py index e4530a4b1..6f47cee09 100644 --- a/tests/basic/test_repomap.py +++ b/tests/basic/test_repomap.py @@ -278,54 +278,6 @@ class TestRepoMapTypescript(unittest.TestCase): def setUp(self): self.GPT35 = Model("gpt-3.5-turbo") - def test_get_repo_map_typescript(self): - # Create a temporary directory with a sample TypeScript file - test_file_ts = "test_file.ts" - file_content_ts = "" - - with IgnorantTemporaryDirectory() as temp_dir: - with open(os.path.join(temp_dir, test_file_ts), "w") as f: - f.write(file_content_ts) - - io = InputOutput() - repo_map = RepoMap(main_model=self.GPT35, root=temp_dir, io=io) - other_files = [os.path.join(temp_dir, test_file_ts)] - result = repo_map.get_repo_map([], other_files) - - # Check if the result contains the expected tags map with TypeScript identifiers - self.assertIn("test_file.ts", result) - self.assertIn("IMyInterface", result) - self.assertIn("ExampleType", result) - self.assertIn("Status", result) - self.assertIn("MyClass", result) - self.assertIn("add", result) - self.assertIn("myFunction", result) - - # close the open cache files, so Windows won't error - del repo_map - - def test_get_repo_map_tsx(self): - # Create a temporary directory with a sample TSX file - test_file_tsx = "test_file.tsx" - file_content_tsx = "" - - with IgnorantTemporaryDirectory() as temp_dir: - with open(os.path.join(temp_dir, test_file_tsx), "w") as f: - f.write(file_content_tsx) - - io = InputOutput() - repo_map = RepoMap(main_model=self.GPT35, root=temp_dir, io=io) - other_files = [os.path.join(temp_dir, test_file_tsx)] - result = repo_map.get_repo_map([], other_files) - - # Check if the result contains the expected tags map with TSX identifiers - self.assertIn("test_file.tsx", result) - self.assertIn("GreetingProps", result) - self.assertIn("Greeting", result) - - # close the open cache files, so Windows won't error - del repo_map - class TestRepoMapAllLanguages(unittest.TestCase): def setUp(self): From 945d10f5545f6fed6ba5352bc0e082a9e982c64c Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 09:27:23 -0800 Subject: [PATCH 55/58] add event for repo size --- aider/main.py | 5 + aider/website/assets/sample-analytics.jsonl | 202 ++++++++++---------- 2 files changed, 106 insertions(+), 101 deletions(-) diff --git a/aider/main.py b/aider/main.py index 29c6a9efb..602066370 100644 --- a/aider/main.py +++ b/aider/main.py @@ -721,6 +721,11 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F if not sanity_check_repo(repo, io): return 1 + if repo: + analytics.event("repo", num_files=len(repo.get_tracked_files())) + else: + analytics.event("no-repo") + commands = Commands( io, None, diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index bf186ae2a..917c56825 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,104 +1,3 @@ -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732214094} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7539, "completion_tokens": 548, "total_tokens": 8087, "cost": 0.030837000000000003, "total_cost": 0.360738, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732214492} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8172, "completion_tokens": 261, "total_tokens": 8433, "cost": 0.028430999999999998, "total_cost": 0.389169, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732214517} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732215325} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732215360} -{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732215363} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9243, "completion_tokens": 507, "total_tokens": 9750, "cost": 0.035334, "total_cost": 0.42450299999999996, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732215394} -{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732215967} -{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732215970} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 5749, "completion_tokens": 189, "total_tokens": 5938, "cost": 0.020082000000000003, "total_cost": 0.44458499999999995, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216011} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6064, "completion_tokens": 161, "total_tokens": 6225, "cost": 0.020607, "total_cost": 0.46519199999999994, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216101} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216226} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 4261, "completion_tokens": 246, "total_tokens": 4507, "cost": 0.016473, "total_cost": 0.48166499999999995, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216234} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6639, "completion_tokens": 133, "total_tokens": 6772, "cost": 0.021912, "total_cost": 0.5035769999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216280} -{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216317} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216365} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 4722, "completion_tokens": 251, "total_tokens": 4973, "cost": 0.017931, "total_cost": 0.521508, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216372} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6949, "completion_tokens": 154, "total_tokens": 7103, "cost": 0.023157, "total_cost": 0.544665, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216426} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6028, "completion_tokens": 169, "total_tokens": 6197, "cost": 0.020619, "total_cost": 0.5652839999999999, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732216439} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732217127} -{"event": "message_send", "properties": {"main_model": "openrouter/qwen/qwen-2.5-coder-32b-instruct", "weak_model": "openrouter/qwen/qwen-2.5-coder-32b-instruct", "editor_model": "openrouter/qwen/qwen-2.5-coder-32b-instruct", "edit_format": "diff", "prompt_tokens": 2203, "completion_tokens": 43, "total_tokens": 2246, "cost": 0.00040427999999999997, "total_cost": 0.00040427999999999997, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732217130} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732217171} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6292, "completion_tokens": 309, "total_tokens": 6601, "cost": 0.023511, "total_cost": 0.5887949999999998, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218000} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218131} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218131} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218564} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218564} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218567} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218756} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218757} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218961} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732218961} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219071} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219072} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219199} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219199} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219202} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219204} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219211} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219229} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219229} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219239} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6845, "completion_tokens": 0, "total_tokens": 6845, "cost": 0.020535, "total_cost": 0.020535, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219240} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219254} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6863, "completion_tokens": 0, "total_tokens": 6863, "cost": 0.020589, "total_cost": 0.041124, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219254} -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219256} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219262} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219263} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219264} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6862, "completion_tokens": 389, "total_tokens": 7251, "cost": 0.026421, "total_cost": 0.026421, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219278} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219286} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 7372, "completion_tokens": 291, "total_tokens": 7663, "cost": 0.026481, "total_cost": 0.052902000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219295} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219308} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 7678, "completion_tokens": 202, "total_tokens": 7880, "cost": 0.026064, "total_cost": 0.07896600000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219316} -{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219331} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219348} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6872, "completion_tokens": 235, "total_tokens": 7107, "cost": 0.024141, "total_cost": 0.103107, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219357} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219429} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219429} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219451} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6973, "completion_tokens": 513, "total_tokens": 7486, "cost": 0.028614, "total_cost": 0.028614, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219466} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219524} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219525} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219538} -{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219556} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 6151, "completion_tokens": 251, "total_tokens": 6402, "cost": 0.022218, "total_cost": 0.022218, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219607} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219616} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219628} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6671, "completion_tokens": 429, "total_tokens": 7100, "cost": 0.026448, "total_cost": 0.048666, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219640} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732219765} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732220004} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732220004} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732220215} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732220215} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732220642} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732220642} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732221139} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732221215} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732221215} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732221304} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.63.3.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732221304} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732221402} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732221403} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732222469} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732222470} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732222562} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732222562} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.1"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732222680} -{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.1"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732222681} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732224618} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732224622} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732225984} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732225984} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226083} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226083} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226295} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 3577, "completion_tokens": 1518, "total_tokens": 5095, "cost": 0.033501, "total_cost": 0.033501, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226325} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7097, "completion_tokens": 3651, "total_tokens": 10748, "cost": 0.076056, "total_cost": 0.109557, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226417} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226450} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226494} -{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226498} {"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226501} {"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226513} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4603, "completion_tokens": 309, "total_tokens": 4912, "cost": 0.018444000000000002, "total_cost": 0.128001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226545} @@ -998,3 +897,104 @@ {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 11983, "completion_tokens": 296, "total_tokens": 12279, "cost": 0.040389, "total_cost": 0.133989, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682516} {"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682550} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24248, "completion_tokens": 210, "total_tokens": 24458, "cost": 0.075894, "total_cost": 0.075894, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682562} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682586} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732682586} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717225} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717225} +{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717230} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717258} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6014, "completion_tokens": 303, "total_tokens": 6317, "cost": 0.022587, "total_cost": 0.022587, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717267} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717319} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 6352, "completion_tokens": 1384, "total_tokens": 7736, "cost": 0.039816000000000004, "total_cost": 0.062403, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717349} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9966, "completion_tokens": 2285, "total_tokens": 12251, "cost": 0.06417300000000001, "total_cost": 0.12657600000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717399} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 8452, "completion_tokens": 603, "total_tokens": 9055, "cost": 0.034401, "total_cost": 0.16097700000000004, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732717587} +{"event": "command_editor", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732718845} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9154, "completion_tokens": 277, "total_tokens": 9431, "cost": 0.031617, "total_cost": 0.19259400000000004, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732718888} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9579, "completion_tokens": 273, "total_tokens": 9852, "cost": 0.032832, "total_cost": 0.22542600000000004, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719079} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9944, "completion_tokens": 274, "total_tokens": 10218, "cost": 0.033942, "total_cost": 0.25936800000000004, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719111} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9279, "completion_tokens": 348, "total_tokens": 9627, "cost": 0.033057, "total_cost": 0.29242500000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719149} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9827, "completion_tokens": 340, "total_tokens": 10167, "cost": 0.034581, "total_cost": 0.327006, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719219} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10368, "completion_tokens": 427, "total_tokens": 10795, "cost": 0.037509, "total_cost": 0.36451500000000003, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719275} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9559, "completion_tokens": 426, "total_tokens": 9985, "cost": 0.035067, "total_cost": 0.39958200000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719373} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10228, "completion_tokens": 1277, "total_tokens": 11505, "cost": 0.049839, "total_cost": 0.44942100000000007, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719492} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9485, "completion_tokens": 329, "total_tokens": 9814, "cost": 0.03339, "total_cost": 0.4828110000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719590} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10046, "completion_tokens": 484, "total_tokens": 10530, "cost": 0.037398, "total_cost": 0.5202090000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719620} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 10549, "completion_tokens": 149, "total_tokens": 10698, "cost": 0.033882, "total_cost": 0.5540910000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719647} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719650} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9578, "completion_tokens": 1978, "total_tokens": 11556, "cost": 0.058404, "total_cost": 0.6124950000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719703} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719834} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9849, "completion_tokens": 990, "total_tokens": 10839, "cost": 0.044397, "total_cost": 0.6568920000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719859} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719871} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9698, "completion_tokens": 1509, "total_tokens": 11207, "cost": 0.051729, "total_cost": 0.7086210000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719903} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 13315, "completion_tokens": 905, "total_tokens": 14220, "cost": 0.05352, "total_cost": 0.7621410000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719934} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719953} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719971} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 7684, "completion_tokens": 220, "total_tokens": 7904, "cost": 0.026352, "total_cost": 0.7884930000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732719978} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9993, "completion_tokens": 925, "total_tokens": 10918, "cost": 0.043854000000000004, "total_cost": 0.8323470000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720008} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720026} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9604, "completion_tokens": 0, "total_tokens": 9604, "cost": 0.028812, "total_cost": 0.8611590000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720028} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720030} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720032} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 7519, "completion_tokens": 180, "total_tokens": 7699, "cost": 0.025257, "total_cost": 0.8864160000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720039} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720085} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720125} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 7531, "completion_tokens": 200, "total_tokens": 7731, "cost": 0.025593, "total_cost": 0.9120090000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720132} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9871, "completion_tokens": 390, "total_tokens": 10261, "cost": 0.035463, "total_cost": 0.9474720000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720166} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720204} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9530, "completion_tokens": 212, "total_tokens": 9742, "cost": 0.03177, "total_cost": 0.9792420000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720237} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720241} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9492, "completion_tokens": 1152, "total_tokens": 10644, "cost": 0.045756000000000005, "total_cost": 1.024998, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720303} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720351} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720395} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 7094, "completion_tokens": 285, "total_tokens": 7379, "cost": 0.025557, "total_cost": 1.0505550000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720404} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9457, "completion_tokens": 114, "total_tokens": 9571, "cost": 0.030081, "total_cost": 1.0806360000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720447} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9446, "completion_tokens": 0, "total_tokens": 9446, "cost": 0.028338000000000002, "total_cost": 1.1089740000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720474} +{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720482} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720488} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9678, "completion_tokens": 133, "total_tokens": 9811, "cost": 0.031029, "total_cost": 1.140003, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720524} +{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720571} +{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720578} +{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720593} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9618, "completion_tokens": 647, "total_tokens": 10265, "cost": 0.038559, "total_cost": 1.178562, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720636} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720658} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 9208, "completion_tokens": 594, "total_tokens": 9802, "cost": 0.036534, "total_cost": 1.2150960000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720675} +{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720826} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720828} +{"event": "command_run", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720863} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7400, "completion_tokens": 261, "total_tokens": 7661, "cost": 0.026115, "total_cost": 1.2412110000000003, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720897} +{"event": "command_undo", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732720921} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732721914} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732721914} +{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722371} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 7199, "completion_tokens": 0, "total_tokens": 7199, "cost": 0.021597, "total_cost": 1.2628080000000004, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722388} +{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722390} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722465} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722466} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722618} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722618} +{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722620} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722634} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722637} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 2432, "completion_tokens": 278, "total_tokens": 2710, "cost": 0.011466, "total_cost": 0.011466, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722666} +{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722889} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722911} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732722911} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732723217} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732723309} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732723352} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732723447} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732723470} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732723496} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732726774} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732726775} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732727171} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732727171} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732727181} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732727181} +{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732727219} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 3228, "completion_tokens": 818, "total_tokens": 4046, "cost": 0.021954, "total_cost": 0.021954, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732727236} +{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732727242} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728382} +{"event": "repo", "properties": {"num_files": 389, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728383} +{"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728383} +{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728387} From 62e96372fabbc80744a0f3c728ccc42771c9af68 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 09:29:22 -0800 Subject: [PATCH 56/58] bumped deps to pickup grep-ast 0.4.1 and disable Dart --- requirements.txt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/requirements.txt b/requirements.txt index cdc67ae97..0c56fd0b7 100644 --- a/requirements.txt +++ b/requirements.txt @@ -62,7 +62,7 @@ gitdb==4.0.11 # via gitpython gitpython==3.1.43 # via -r requirements/requirements.in -grep-ast==0.4.0 +grep-ast==0.4.1 # via -r requirements/requirements.in h11==0.14.0 # via httpcore @@ -86,9 +86,9 @@ importlib-resources==6.4.5 # via -r requirements/requirements.in jinja2==3.1.4 # via litellm -jiter==0.7.1 +jiter==0.8.0 # via openai -json5==0.9.28 +json5==0.10.0 # via -r requirements/requirements.in jsonschema==4.23.0 # via @@ -120,7 +120,7 @@ numpy==1.26.4 # via # -r requirements/requirements.in # scipy -openai==1.55.1 +openai==1.55.2 # via litellm packaging==24.2 # via From 3ab1018c668d0e50316f913ab20d8f2531e850e0 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 09:29:35 -0800 Subject: [PATCH 57/58] copy --- aider/website/docs/languages.md | 1 - 1 file changed, 1 deletion(-) diff --git a/aider/website/docs/languages.md b/aider/website/docs/languages.md index 417850ff1..ac91ab537 100644 --- a/aider/website/docs/languages.md +++ b/aider/website/docs/languages.md @@ -62,7 +62,6 @@ cog.out(get_supported_languages_md()) | cpp | .cc | ✓ | ✓ | | cpp | .cpp | ✓ | ✓ | | css | .css | | ✓ | -| dart | .dart | ✓ | ✓ | | dockerfile | .dockerfile | | ✓ | | dot | .dot | | ✓ | | elisp | .el | ✓ | ✓ | From a1f5bfb746a7c922a3fa037d47d1eca66d20b3b2 Mon Sep 17 00:00:00 2001 From: Paul Gauthier Date: Wed, 27 Nov 2024 09:36:17 -0800 Subject: [PATCH 58/58] copy --- HISTORY.md | 1 + aider/website/HISTORY.md | 1 + aider/website/assets/sample-analytics.jsonl | 10 +++++----- 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/HISTORY.md b/HISTORY.md index e2785d6f0..8a74254ec 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -7,6 +7,7 @@ - Improved error handling for failed .gitignore file operations. - Improved error handling for input history file permissions. - Improved error handling for analytics file access. +- Removed broken support for Dart. - Aider wrote 85% of the code in this release. ### Aider v0.65.1 diff --git a/aider/website/HISTORY.md b/aider/website/HISTORY.md index 61755d118..2aae866f9 100644 --- a/aider/website/HISTORY.md +++ b/aider/website/HISTORY.md @@ -31,6 +31,7 @@ cog.out(text) - Improved error handling for failed .gitignore file operations. - Improved error handling for input history file permissions. - Improved error handling for analytics file access. +- Removed broken support for Dart. - Aider wrote 85% of the code in this release. ### Aider v0.65.1 diff --git a/aider/website/assets/sample-analytics.jsonl b/aider/website/assets/sample-analytics.jsonl index 917c56825..0d44bff0c 100644 --- a/aider/website/assets/sample-analytics.jsonl +++ b/aider/website/assets/sample-analytics.jsonl @@ -1,8 +1,3 @@ -{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226501} -{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226513} -{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 4603, "completion_tokens": 309, "total_tokens": 4912, "cost": 0.018444000000000002, "total_cost": 0.128001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226545} -{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226579} -{"event": "command_ask", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226590} {"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-haiku-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "ask", "prompt_tokens": 22736, "completion_tokens": 346, "total_tokens": 23082, "cost": 0.073398, "total_cost": 0.201399, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732226599} {"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732227043} {"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.64.2.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732227043} @@ -998,3 +993,8 @@ {"event": "repo", "properties": {"num_files": 389, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728383} {"event": "cli session", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728383} {"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728387} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728731} +{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728741} +{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728864} +{"event": "repo", "properties": {"num_files": 389, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728864} +{"event": "message_send", "properties": {"main_model": "claude-3-5-sonnet-20241022", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "claude-3-5-sonnet-20241022", "edit_format": "diff", "prompt_tokens": 24438, "completion_tokens": 236, "total_tokens": 24674, "cost": 0.076854, "total_cost": 0.076854, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.65.2.dev62+gf44e5ae5"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1732728874}