mirror of
https://github.com/Aider-AI/aider.git
synced 2025-05-25 23:05:00 +00:00
Merge branch 'main' into watch
This commit is contained in:
commit
7fc7ea6aba
22 changed files with 553 additions and 34 deletions
15
HISTORY.md
15
HISTORY.md
|
@ -1,6 +1,21 @@
|
||||||
|
|
||||||
# Release history
|
# Release history
|
||||||
|
|
||||||
|
### Aider v0.62.0
|
||||||
|
|
||||||
|
- Full support for Claude 3.5 Haiku
|
||||||
|
- Scored 75% on [aider's code editing leaderboard](https://aider.chat/docs/leaderboards/).
|
||||||
|
- Almost as good as Sonnet at much lower cost.
|
||||||
|
- Launch with `--haiku` to use it.
|
||||||
|
- Easily apply file edits from ChatGPT, Claude or other web apps
|
||||||
|
- Chat with ChatGPT or Claude via their web app.
|
||||||
|
- Give it your source files and ask for the changes you want.
|
||||||
|
- Use the web app's "copy response" button to copy the entire reply from the LLM.
|
||||||
|
- Run `aider --apply-clipboard-edits file-to-edit.js`.
|
||||||
|
- Aider will edit your file with the LLM's changes.
|
||||||
|
- Bugfix for creating new files.
|
||||||
|
- Aider wrote 84% of the code in this release.
|
||||||
|
|
||||||
### Aider v0.61.0
|
### Aider v0.61.0
|
||||||
|
|
||||||
- Load and save aider slash-commands to files:
|
- Load and save aider slash-commands to files:
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
try:
|
try:
|
||||||
from aider.__version__ import __version__
|
from aider.__version__ import __version__
|
||||||
except Exception:
|
except Exception:
|
||||||
__version__ = "0.61.1.dev"
|
__version__ = "0.62.1.dev"
|
||||||
|
|
||||||
__all__ = [__version__]
|
__all__ = [__version__]
|
||||||
|
|
|
@ -66,6 +66,14 @@ def get_parser(default_config_files, git_root):
|
||||||
const=sonnet_model,
|
const=sonnet_model,
|
||||||
help=f"Use {sonnet_model} model for the main chat",
|
help=f"Use {sonnet_model} model for the main chat",
|
||||||
)
|
)
|
||||||
|
haiku_model = "claude-3-5-haiku-20241022"
|
||||||
|
group.add_argument(
|
||||||
|
"--haiku",
|
||||||
|
action="store_const",
|
||||||
|
dest="model",
|
||||||
|
const=haiku_model,
|
||||||
|
help=f"Use {haiku_model} model for the main chat",
|
||||||
|
)
|
||||||
gpt_4_model = "gpt-4-0613"
|
gpt_4_model = "gpt-4-0613"
|
||||||
group.add_argument(
|
group.add_argument(
|
||||||
"--4",
|
"--4",
|
||||||
|
@ -630,6 +638,12 @@ def get_parser(default_config_files, git_root):
|
||||||
metavar="FILE",
|
metavar="FILE",
|
||||||
help="Apply the changes from the given file instead of running the chat (debug)",
|
help="Apply the changes from the given file instead of running the chat (debug)",
|
||||||
)
|
)
|
||||||
|
group.add_argument(
|
||||||
|
"--apply-clipboard-edits",
|
||||||
|
action="store_true",
|
||||||
|
help="Apply clipboard contents as edits using the main model's editor format",
|
||||||
|
default=False,
|
||||||
|
)
|
||||||
group.add_argument(
|
group.add_argument(
|
||||||
"--yes-always",
|
"--yes-always",
|
||||||
action="store_true",
|
action="store_true",
|
||||||
|
|
|
@ -46,8 +46,12 @@ class EditBlockCoder(Coder):
|
||||||
for edit in edits:
|
for edit in edits:
|
||||||
path, original, updated = edit
|
path, original, updated = edit
|
||||||
full_path = self.abs_root_path(path)
|
full_path = self.abs_root_path(path)
|
||||||
|
new_content = None
|
||||||
|
|
||||||
|
if Path(full_path).exists():
|
||||||
content = self.io.read_text(full_path)
|
content = self.io.read_text(full_path)
|
||||||
new_content = do_replace(full_path, content, original, updated, self.fence)
|
new_content = do_replace(full_path, content, original, updated, self.fence)
|
||||||
|
|
||||||
if not new_content:
|
if not new_content:
|
||||||
# try patching any of the other files in the chat
|
# try patching any of the other files in the chat
|
||||||
for full_path in self.abs_fnames:
|
for full_path in self.abs_fnames:
|
||||||
|
|
|
@ -432,7 +432,6 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
|
||||||
if args.analytics_disable:
|
if args.analytics_disable:
|
||||||
analytics = Analytics(permanently_disable=True)
|
analytics = Analytics(permanently_disable=True)
|
||||||
print("Analytics have been permanently disabled.")
|
print("Analytics have been permanently disabled.")
|
||||||
return
|
|
||||||
|
|
||||||
if not args.verify_ssl:
|
if not args.verify_ssl:
|
||||||
import httpx
|
import httpx
|
||||||
|
@ -774,6 +773,10 @@ def main(argv=None, input=None, output=None, force_git_root=None, return_coder=F
|
||||||
coder.apply_updates()
|
coder.apply_updates()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if args.apply_clipboard_edits:
|
||||||
|
args.edit_format = main_model.editor_edit_format
|
||||||
|
args.message = "/paste"
|
||||||
|
|
||||||
if "VSCODE_GIT_IPC_HANDLE" in os.environ:
|
if "VSCODE_GIT_IPC_HANDLE" in os.environ:
|
||||||
args.pretty = False
|
args.pretty = False
|
||||||
io.tool_output("VSCode terminal detected, pretty output has been disabled.")
|
io.tool_output("VSCode terminal detected, pretty output has been disabled.")
|
||||||
|
|
|
@ -52,6 +52,7 @@ ANTHROPIC_MODELS = """
|
||||||
claude-2
|
claude-2
|
||||||
claude-2.1
|
claude-2.1
|
||||||
claude-3-haiku-20240307
|
claude-3-haiku-20240307
|
||||||
|
claude-3-5-haiku-20241022
|
||||||
claude-3-opus-20240229
|
claude-3-opus-20240229
|
||||||
claude-3-sonnet-20240229
|
claude-3-sonnet-20240229
|
||||||
claude-3-5-sonnet-20240620
|
claude-3-5-sonnet-20240620
|
||||||
|
@ -344,6 +345,55 @@ MODEL_SETTINGS = [
|
||||||
},
|
},
|
||||||
cache_control=True,
|
cache_control=True,
|
||||||
),
|
),
|
||||||
|
ModelSettings(
|
||||||
|
"anthropic/claude-3-5-haiku-20241022",
|
||||||
|
"diff",
|
||||||
|
weak_model_name="anthropic/claude-3-5-haiku-20241022",
|
||||||
|
extra_params={
|
||||||
|
"extra_headers": {
|
||||||
|
"anthropic-beta": ANTHROPIC_BETA_HEADER,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cache_control=True,
|
||||||
|
),
|
||||||
|
ModelSettings(
|
||||||
|
"claude-3-5-haiku-20241022",
|
||||||
|
"diff",
|
||||||
|
weak_model_name="claude-3-5-haiku-20241022",
|
||||||
|
examples_as_sys_msg=True,
|
||||||
|
extra_params={
|
||||||
|
"extra_headers": {
|
||||||
|
"anthropic-beta": ANTHROPIC_BETA_HEADER,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
cache_control=True,
|
||||||
|
),
|
||||||
|
ModelSettings(
|
||||||
|
"vertex_ai/claude-3-5-haiku@20241022",
|
||||||
|
"diff",
|
||||||
|
weak_model_name="vertex_ai/claude-3-5-haiku@20241022",
|
||||||
|
extra_params={
|
||||||
|
"max_tokens": 4096,
|
||||||
|
},
|
||||||
|
),
|
||||||
|
ModelSettings(
|
||||||
|
"openrouter/anthropic/claude-3.5-haiku",
|
||||||
|
"diff",
|
||||||
|
weak_model_name="openrouter/anthropic/claude-3.5-haiku",
|
||||||
|
extra_params={
|
||||||
|
"max_tokens": 4096,
|
||||||
|
},
|
||||||
|
cache_control=True,
|
||||||
|
),
|
||||||
|
ModelSettings(
|
||||||
|
"openrouter/anthropic/claude-3.5-haiku:beta",
|
||||||
|
"diff",
|
||||||
|
weak_model_name="openrouter/anthropic/claude-3.5-haiku:beta",
|
||||||
|
extra_params={
|
||||||
|
"max_tokens": 4096,
|
||||||
|
},
|
||||||
|
cache_control=True,
|
||||||
|
),
|
||||||
ModelSettings(
|
ModelSettings(
|
||||||
"claude-3-haiku-20240307",
|
"claude-3-haiku-20240307",
|
||||||
"whole",
|
"whole",
|
||||||
|
|
75
aider/resources/model-metadata.json
Normal file
75
aider/resources/model-metadata.json
Normal file
|
@ -0,0 +1,75 @@
|
||||||
|
{
|
||||||
|
"claude-3-5-haiku-20241022": {
|
||||||
|
"max_tokens": 4096,
|
||||||
|
"max_input_tokens": 200000,
|
||||||
|
"max_output_tokens": 4096,
|
||||||
|
"input_cost_per_token": 0.000001,
|
||||||
|
"output_cost_per_token": 0.000005,
|
||||||
|
"litellm_provider": "anthropic",
|
||||||
|
"mode": "chat",
|
||||||
|
"supports_function_calling": true,
|
||||||
|
"tool_use_system_prompt_tokens": 264,
|
||||||
|
"supports_assistant_prefill": true,
|
||||||
|
"supports_prompt_caching": true
|
||||||
|
},
|
||||||
|
"vertex_ai/claude-3-5-haiku@20241022": {
|
||||||
|
"max_tokens": 4096,
|
||||||
|
"max_input_tokens": 200000,
|
||||||
|
"max_output_tokens": 4096,
|
||||||
|
"input_cost_per_token": 0.000001,
|
||||||
|
"output_cost_per_token": 0.000005,
|
||||||
|
"litellm_provider": "vertex_ai-anthropic_models",
|
||||||
|
"mode": "chat",
|
||||||
|
"supports_function_calling": true,
|
||||||
|
"supports_assistant_prefill": true
|
||||||
|
},
|
||||||
|
"openrouter/anthropic/claude-3-5-haiku": {
|
||||||
|
"max_tokens": 200000,
|
||||||
|
"input_cost_per_token": 0.000001,
|
||||||
|
"output_cost_per_token": 0.000005,
|
||||||
|
"litellm_provider": "openrouter",
|
||||||
|
"mode": "chat",
|
||||||
|
"supports_function_calling": true,
|
||||||
|
},
|
||||||
|
"openrouter/anthropic/claude-3-5-haiku-20241022": {
|
||||||
|
"max_tokens": 4096,
|
||||||
|
"max_input_tokens": 200000,
|
||||||
|
"max_output_tokens": 4096,
|
||||||
|
"input_cost_per_token": 0.000001,
|
||||||
|
"output_cost_per_token": 0.000005,
|
||||||
|
"litellm_provider": "openrouter",
|
||||||
|
"mode": "chat",
|
||||||
|
"supports_function_calling": true,
|
||||||
|
"tool_use_system_prompt_tokens": 264
|
||||||
|
},
|
||||||
|
"anthropic.claude-3-5-haiku-20241022-v1:0": {
|
||||||
|
"max_tokens": 4096,
|
||||||
|
"max_input_tokens": 200000,
|
||||||
|
"max_output_tokens": 4096,
|
||||||
|
"input_cost_per_token": 0.000001,
|
||||||
|
"output_cost_per_token": 0.000005,
|
||||||
|
"litellm_provider": "bedrock",
|
||||||
|
"mode": "chat",
|
||||||
|
"supports_function_calling": true,
|
||||||
|
},
|
||||||
|
"us.anthropic.claude-3-5-haiku-20241022-v1:0": {
|
||||||
|
"max_tokens": 4096,
|
||||||
|
"max_input_tokens": 200000,
|
||||||
|
"max_output_tokens": 4096,
|
||||||
|
"input_cost_per_token": 0.000001,
|
||||||
|
"output_cost_per_token": 0.000005,
|
||||||
|
"litellm_provider": "bedrock",
|
||||||
|
"mode": "chat",
|
||||||
|
"supports_function_calling": true,
|
||||||
|
},
|
||||||
|
"eu.anthropic.claude-3-5-haiku-20241022-v1:0": {
|
||||||
|
"max_tokens": 4096,
|
||||||
|
"max_input_tokens": 200000,
|
||||||
|
"max_output_tokens": 4096,
|
||||||
|
"input_cost_per_token": 0.000001,
|
||||||
|
"output_cost_per_token": 0.000005,
|
||||||
|
"litellm_provider": "bedrock",
|
||||||
|
"mode": "chat",
|
||||||
|
"supports_function_calling": true,
|
||||||
|
},
|
||||||
|
}
|
|
@ -19,6 +19,21 @@ cog.out(text)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
### Aider v0.62.0
|
||||||
|
|
||||||
|
- Full support for Claude 3.5 Haiku
|
||||||
|
- Scored 75% on [aider's code editing leaderboard](https://aider.chat/docs/leaderboards/).
|
||||||
|
- Almost as good as Sonnet at much lower cost.
|
||||||
|
- Launch with `--haiku` to use it.
|
||||||
|
- Easily apply file edits from ChatGPT, Claude or other web apps
|
||||||
|
- Chat with ChatGPT or Claude via their web app.
|
||||||
|
- Give it your source files and ask for the changes you want.
|
||||||
|
- Use the web app's "copy response" button to copy the entire reply from the LLM.
|
||||||
|
- Run `aider --apply-clipboard-edits file-to-edit.js`.
|
||||||
|
- Aider will edit your file with the LLM's changes.
|
||||||
|
- Bugfix for creating new files.
|
||||||
|
- Aider wrote 84% of the code in this release.
|
||||||
|
|
||||||
### Aider v0.61.0
|
### Aider v0.61.0
|
||||||
|
|
||||||
- Load and save aider slash-commands to files:
|
- Load and save aider slash-commands to files:
|
||||||
|
|
|
@ -2895,3 +2895,24 @@
|
||||||
kAIto47802: 4
|
kAIto47802: 4
|
||||||
start_tag: v0.60.0
|
start_tag: v0.60.0
|
||||||
total_lines: 1272
|
total_lines: 1272
|
||||||
|
- aider_percentage: 84.0
|
||||||
|
aider_total: 63
|
||||||
|
end_date: '2024-11-04'
|
||||||
|
end_tag: v0.62.0
|
||||||
|
file_counts:
|
||||||
|
aider/__init__.py:
|
||||||
|
Paul Gauthier: 1
|
||||||
|
aider/args.py:
|
||||||
|
Paul Gauthier (aider): 14
|
||||||
|
aider/coders/editblock_coder.py:
|
||||||
|
Paul Gauthier: 6
|
||||||
|
aider/main.py:
|
||||||
|
Paul Gauthier (aider): 4
|
||||||
|
aider/models.py:
|
||||||
|
Paul Gauthier: 5
|
||||||
|
Paul Gauthier (aider): 45
|
||||||
|
grand_total:
|
||||||
|
Paul Gauthier: 12
|
||||||
|
Paul Gauthier (aider): 63
|
||||||
|
start_tag: v0.61.0
|
||||||
|
total_lines: 75
|
||||||
|
|
|
@ -1611,3 +1611,26 @@
|
||||||
versions: 0.59.2.dev
|
versions: 0.59.2.dev
|
||||||
seconds_per_case: 18.6
|
seconds_per_case: 18.6
|
||||||
total_cost: 0.0000
|
total_cost: 0.0000
|
||||||
|
|
||||||
|
- dirname: 2024-11-04-19-19-32--haiku35-diff-ex-as-sys-false
|
||||||
|
test_cases: 133
|
||||||
|
model: claude-3-5-haiku-20241022
|
||||||
|
edit_format: diff
|
||||||
|
commit_hash: 03bbdb0-dirty
|
||||||
|
pass_rate_1: 61.7
|
||||||
|
pass_rate_2: 75.2
|
||||||
|
percent_cases_well_formed: 95.5
|
||||||
|
error_outputs: 11
|
||||||
|
num_malformed_responses: 11
|
||||||
|
num_with_malformed_responses: 6
|
||||||
|
user_asks: 1
|
||||||
|
lazy_comments: 1
|
||||||
|
syntax_errors: 0
|
||||||
|
indentation_errors: 0
|
||||||
|
exhausted_context_windows: 0
|
||||||
|
test_timeouts: 2
|
||||||
|
command: aider --model anthropic/claude-3-5-haiku-20241022
|
||||||
|
date: 2024-11-04
|
||||||
|
versions: 0.61.1.dev
|
||||||
|
seconds_per_case: 18.4
|
||||||
|
total_cost: 0.0000
|
|
@ -352,4 +352,134 @@
|
||||||
{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730478719}
|
{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730478719}
|
||||||
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730479180}
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730479180}
|
||||||
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730479181}
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730479181}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730479652}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730479652}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730485790}
|
||||||
|
{"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": 3686, "completion_tokens": 122, "total_tokens": 3808, "cost": 0.012888, "total_cost": 0.012888, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730485796}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730485864}
|
||||||
|
{"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": 4389, "completion_tokens": 131, "total_tokens": 4520, "cost": 0.015132, "total_cost": 0.015132, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730485870}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730485876}
|
||||||
|
{"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": 4630, "completion_tokens": 200, "total_tokens": 4830, "cost": 0.01689, "total_cost": 0.01689, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730485883}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730485888}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730496783}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730496794}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730496806}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730496809}
|
||||||
|
{"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": 5099, "completion_tokens": 491, "total_tokens": 5590, "cost": 0.022662, "total_cost": 0.941154, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730496915}
|
||||||
|
{"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": 5632, "completion_tokens": 419, "total_tokens": 6051, "cost": 0.023181, "total_cost": 0.964335, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730496952}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730496971}
|
||||||
|
{"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": 19338, "completion_tokens": 1079, "total_tokens": 20417, "cost": 0.074199, "total_cost": 1.038534, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730497006}
|
||||||
|
{"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": 19716, "completion_tokens": 102, "total_tokens": 19818, "cost": 0.060677999999999996, "total_cost": 1.099212, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.60.2.dev13+g9e7995b7"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730497034}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730497091}
|
||||||
|
{"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.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730497092}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739772}
|
||||||
|
{"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": 2181, "completion_tokens": 62, "total_tokens": 2243, "cost": 0.0074730000000000005, "total_cost": 0.0074730000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739777}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739851}
|
||||||
|
{"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": 2181, "completion_tokens": 62, "total_tokens": 2243, "cost": 0.0074730000000000005, "total_cost": 0.0074730000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739855}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739887}
|
||||||
|
{"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.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739887}
|
||||||
|
{"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": 4679, "completion_tokens": 132, "total_tokens": 4811, "cost": 0.016017, "total_cost": 0.016017, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739897}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739914}
|
||||||
|
{"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": 8584, "completion_tokens": 182, "total_tokens": 8766, "cost": 0.028482, "total_cost": 0.044499, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739921}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739932}
|
||||||
|
{"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": 2181, "completion_tokens": 62, "total_tokens": 2243, "cost": 0.0074730000000000005, "total_cost": 0.0074730000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730739936}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740012}
|
||||||
|
{"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": 2181, "completion_tokens": 62, "total_tokens": 2243, "cost": 0.0074730000000000005, "total_cost": 0.0074730000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740016}
|
||||||
|
{"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": 2260, "completion_tokens": 65, "total_tokens": 2325, "cost": 0.007755000000000001, "total_cost": 0.015228000000000002, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740018}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740027}
|
||||||
|
{"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": 2181, "completion_tokens": 62, "total_tokens": 2243, "cost": 0.0074730000000000005, "total_cost": 0.0074730000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740031}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740037}
|
||||||
|
{"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": 2181, "completion_tokens": 62, "total_tokens": 2243, "cost": 0.0074730000000000005, "total_cost": 0.0074730000000000005, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740040}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740064}
|
||||||
|
{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740104}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740138}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740139}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740233}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730740233}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730741036}
|
||||||
|
{"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.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730741036}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730744738}
|
||||||
|
{"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.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730744738}
|
||||||
|
{"event": "command_paste", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730744742}
|
||||||
|
{"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": "editor-diff", "prompt_tokens": 1559, "completion_tokens": 43, "total_tokens": 1602, "cost": 0.0053219999999999995, "total_cost": 0.0053219999999999995, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730744745}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745072}
|
||||||
|
{"event": "command_paste", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745072}
|
||||||
|
{"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": "editor-diff", "prompt_tokens": 1559, "completion_tokens": 43, "total_tokens": 1602, "cost": 0.0053219999999999995, "total_cost": 0.0053219999999999995, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745076}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745181}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745186}
|
||||||
|
{"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": 15090, "completion_tokens": 442, "total_tokens": 15532, "cost": 0.0519, "total_cost": 0.096399, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745258}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745287}
|
||||||
|
{"event": "command_paste", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745287}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745299}
|
||||||
|
{"event": "command_paste", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745299}
|
||||||
|
{"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": 2271, "completion_tokens": 62, "total_tokens": 2333, "cost": 0.007743000000000001, "total_cost": 0.007743000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745304}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745389}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745389}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745811}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745837}
|
||||||
|
{"event": "model warning", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745839}
|
||||||
|
{"event": "message_send", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "edit_format": "whole", "prompt_tokens": 406, "completion_tokens": 0, "total_tokens": 406, "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.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745841}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745937}
|
||||||
|
{"event": "model warning", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745939}
|
||||||
|
{"event": "message_send", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "edit_format": "whole", "prompt_tokens": 406, "completion_tokens": 76, "total_tokens": 482, "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.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745944}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730745953}
|
||||||
|
{"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": 23784, "completion_tokens": 1082, "total_tokens": 24866, "cost": 0.087582, "total_cost": 0.183981, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730746012}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730746028}
|
||||||
|
{"event": "model warning", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730746030}
|
||||||
|
{"event": "message_send", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "edit_format": "whole", "prompt_tokens": 378, "completion_tokens": 75, "total_tokens": 453, "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.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730746041}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730747416}
|
||||||
|
{"event": "cli session", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730747419}
|
||||||
|
{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730747426}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730747938}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730747943}
|
||||||
|
{"event": "cli session", "properties": {"main_model": "anthropic/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "anthropic/REDACTED", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730747944}
|
||||||
|
{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730747946}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730748755}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730748815}
|
||||||
|
{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730749365}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730750834}
|
||||||
|
{"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": 3946, "completion_tokens": 86, "total_tokens": 4032, "cost": 0.013127999999999999, "total_cost": 0.197109, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730750860}
|
||||||
|
{"event": "command_drop", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730750867}
|
||||||
|
{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730750870}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730750874}
|
||||||
|
{"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": 6222, "completion_tokens": 248, "total_tokens": 6470, "cost": 0.022386000000000003, "total_cost": 0.219495, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730750884}
|
||||||
|
{"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": 6974, "completion_tokens": 556, "total_tokens": 7530, "cost": 0.029262, "total_cost": 0.248757, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730750985}
|
||||||
|
{"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": 7566, "completion_tokens": 387, "total_tokens": 7953, "cost": 0.028503, "total_cost": 0.27726, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751107}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751148}
|
||||||
|
{"event": "command_reset", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751163}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751169}
|
||||||
|
{"event": "command_add", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751171}
|
||||||
|
{"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": 8719, "completion_tokens": 275, "total_tokens": 8994, "cost": 0.030282, "total_cost": 0.307542, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751182}
|
||||||
|
{"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": 9122, "completion_tokens": 329, "total_tokens": 9451, "cost": 0.032301, "total_cost": 0.339843, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751204}
|
||||||
|
{"event": "command_clear", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751243}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751257}
|
||||||
|
{"event": "cli session", "properties": {"main_model": "None", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "None", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751258}
|
||||||
|
{"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": 8694, "completion_tokens": 312, "total_tokens": 9006, "cost": 0.030762, "total_cost": 0.370605, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751260}
|
||||||
|
{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751261}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751268}
|
||||||
|
{"event": "cli session", "properties": {"main_model": "None", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "None", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751270}
|
||||||
|
{"event": "command_exit", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751271}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751479}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751480}
|
||||||
|
{"event": "command_diff", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730751655}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730752696}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.61.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730752696}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730753391}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.0"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730753391}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754105}
|
||||||
|
{"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.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754107}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754113}
|
||||||
|
{"event": "gui session", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754114}
|
||||||
|
{"event": "command_help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754114}
|
||||||
|
{"event": "interactive help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754114}
|
||||||
|
{"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": "help", "prompt_tokens": 4369, "completion_tokens": 162, "total_tokens": 4531, "cost": 0.015537, "total_cost": 0.015537, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754131}
|
||||||
|
{"event": "command_help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754139}
|
||||||
|
{"event": "interactive help", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754139}
|
||||||
|
{"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": "help", "prompt_tokens": 7756, "completion_tokens": 141, "total_tokens": 7897, "cost": 0.025383, "total_cost": 0.04092, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754149}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754160}
|
||||||
|
{"event": "cli session", "properties": {"main_model": "openrouter/anthropic/claude-3.5-sonnet", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/anthropic/claude-3.5-sonnet", "edit_format": "diff", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754162}
|
||||||
|
{"event": "message_send", "properties": {"main_model": "openrouter/anthropic/claude-3.5-sonnet", "weak_model": "openrouter/REDACTED", "editor_model": "openrouter/anthropic/claude-3.5-sonnet", "edit_format": "diff", "prompt_tokens": 4597, "completion_tokens": 43, "total_tokens": 4640, "cost": 0.014436000000000001, "total_cost": 0.014436000000000001, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754166}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754174}
|
||||||
|
{"event": "cli session", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754176}
|
||||||
|
{"event": "message_send", "properties": {"main_model": "openrouter/REDACTED", "weak_model": "claude-3-5-sonnet-20241022", "editor_model": "openrouter/REDACTED", "edit_format": "whole", "prompt_tokens": 593, "completion_tokens": 53, "total_tokens": 646, "cost": 0.000858, "total_cost": 0.000858, "python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730754179}
|
||||||
|
{"event": "launched", "properties": {"python_version": "3.12.6", "os_platform": "Darwin", "os_release": "23.6.0", "machine": "x86_64", "aider_version": "0.62.1.dev"}, "user_id": "c42c4e6b-f054-44d7-ae1f-6726cc41da88", "time": 1730818364}
|
||||||
|
|
|
@ -32,6 +32,9 @@
|
||||||
## Use claude-3-5-sonnet-20241022 model for the main chat
|
## Use claude-3-5-sonnet-20241022 model for the main chat
|
||||||
#sonnet: false
|
#sonnet: false
|
||||||
|
|
||||||
|
## Use claude-3-5-haiku-20241022 model for the main chat
|
||||||
|
#haiku: false
|
||||||
|
|
||||||
## Use gpt-4-0613 model for the main chat
|
## Use gpt-4-0613 model for the main chat
|
||||||
#4: false
|
#4: false
|
||||||
|
|
||||||
|
@ -320,6 +323,9 @@
|
||||||
## Apply the changes from the given file instead of running the chat (debug)
|
## Apply the changes from the given file instead of running the chat (debug)
|
||||||
#apply: xxx
|
#apply: xxx
|
||||||
|
|
||||||
|
## Apply clipboard contents as edits using the main model's editor format
|
||||||
|
#apply-clipboard-edits: false
|
||||||
|
|
||||||
## Always say yes to every confirmation
|
## Always say yes to every confirmation
|
||||||
#yes-always: false
|
#yes-always: false
|
||||||
|
|
||||||
|
|
|
@ -36,6 +36,9 @@
|
||||||
## Use claude-3-5-sonnet-20241022 model for the main chat
|
## Use claude-3-5-sonnet-20241022 model for the main chat
|
||||||
#AIDER_SONNET=
|
#AIDER_SONNET=
|
||||||
|
|
||||||
|
## Use claude-3-5-haiku-20241022 model for the main chat
|
||||||
|
#AIDER_HAIKU=
|
||||||
|
|
||||||
## Use gpt-4-0613 model for the main chat
|
## Use gpt-4-0613 model for the main chat
|
||||||
#AIDER_4=
|
#AIDER_4=
|
||||||
|
|
||||||
|
@ -306,6 +309,9 @@
|
||||||
## Apply the changes from the given file instead of running the chat (debug)
|
## Apply the changes from the given file instead of running the chat (debug)
|
||||||
#AIDER_APPLY=
|
#AIDER_APPLY=
|
||||||
|
|
||||||
|
## Apply clipboard contents as edits using the main model's editor format
|
||||||
|
#AIDER_APPLY_CLIPBOARD_EDITS=false
|
||||||
|
|
||||||
## Always say yes to every confirmation
|
## Always say yes to every confirmation
|
||||||
#AIDER_YES_ALWAYS=
|
#AIDER_YES_ALWAYS=
|
||||||
|
|
||||||
|
|
|
@ -546,6 +546,93 @@ cog.out("```\n")
|
||||||
use_system_prompt: true
|
use_system_prompt: true
|
||||||
use_temperature: true
|
use_temperature: true
|
||||||
weak_model_name: anthropic/claude-3-haiku-20240307
|
weak_model_name: anthropic/claude-3-haiku-20240307
|
||||||
|
- cache_control: true
|
||||||
|
caches_by_default: false
|
||||||
|
edit_format: diff
|
||||||
|
editor_edit_format: null
|
||||||
|
editor_model_name: null
|
||||||
|
examples_as_sys_msg: false
|
||||||
|
extra_params:
|
||||||
|
extra_headers:
|
||||||
|
anthropic-beta: prompt-caching-2024-07-31
|
||||||
|
lazy: false
|
||||||
|
name: anthropic/claude-3-5-haiku-20241022
|
||||||
|
reminder: user
|
||||||
|
send_undo_reply: false
|
||||||
|
streaming: true
|
||||||
|
use_repo_map: false
|
||||||
|
use_system_prompt: true
|
||||||
|
use_temperature: true
|
||||||
|
weak_model_name: anthropic/claude-3-5-haiku-20241022
|
||||||
|
- cache_control: true
|
||||||
|
caches_by_default: false
|
||||||
|
edit_format: diff
|
||||||
|
editor_edit_format: null
|
||||||
|
editor_model_name: null
|
||||||
|
examples_as_sys_msg: true
|
||||||
|
extra_params:
|
||||||
|
extra_headers:
|
||||||
|
anthropic-beta: prompt-caching-2024-07-31
|
||||||
|
lazy: false
|
||||||
|
name: claude-3-5-haiku-20241022
|
||||||
|
reminder: user
|
||||||
|
send_undo_reply: false
|
||||||
|
streaming: true
|
||||||
|
use_repo_map: false
|
||||||
|
use_system_prompt: true
|
||||||
|
use_temperature: true
|
||||||
|
weak_model_name: claude-3-5-haiku-20241022
|
||||||
|
- cache_control: false
|
||||||
|
caches_by_default: false
|
||||||
|
edit_format: diff
|
||||||
|
editor_edit_format: null
|
||||||
|
editor_model_name: null
|
||||||
|
examples_as_sys_msg: false
|
||||||
|
extra_params:
|
||||||
|
max_tokens: 4096
|
||||||
|
lazy: false
|
||||||
|
name: vertex_ai/claude-3-5-haiku@20241022
|
||||||
|
reminder: user
|
||||||
|
send_undo_reply: false
|
||||||
|
streaming: true
|
||||||
|
use_repo_map: false
|
||||||
|
use_system_prompt: true
|
||||||
|
use_temperature: true
|
||||||
|
weak_model_name: vertex_ai/claude-3-5-haiku@20241022
|
||||||
|
- cache_control: true
|
||||||
|
caches_by_default: false
|
||||||
|
edit_format: diff
|
||||||
|
editor_edit_format: null
|
||||||
|
editor_model_name: null
|
||||||
|
examples_as_sys_msg: false
|
||||||
|
extra_params:
|
||||||
|
max_tokens: 4096
|
||||||
|
lazy: false
|
||||||
|
name: openrouter/anthropic/claude-3.5-haiku
|
||||||
|
reminder: user
|
||||||
|
send_undo_reply: false
|
||||||
|
streaming: true
|
||||||
|
use_repo_map: false
|
||||||
|
use_system_prompt: true
|
||||||
|
use_temperature: true
|
||||||
|
weak_model_name: openrouter/anthropic/claude-3.5-haiku
|
||||||
|
- cache_control: true
|
||||||
|
caches_by_default: false
|
||||||
|
edit_format: diff
|
||||||
|
editor_edit_format: null
|
||||||
|
editor_model_name: null
|
||||||
|
examples_as_sys_msg: false
|
||||||
|
extra_params:
|
||||||
|
max_tokens: 4096
|
||||||
|
lazy: false
|
||||||
|
name: openrouter/anthropic/claude-3.5-haiku:beta
|
||||||
|
reminder: user
|
||||||
|
send_undo_reply: false
|
||||||
|
streaming: true
|
||||||
|
use_repo_map: false
|
||||||
|
use_system_prompt: true
|
||||||
|
use_temperature: true
|
||||||
|
weak_model_name: openrouter/anthropic/claude-3.5-haiku:beta
|
||||||
- cache_control: true
|
- cache_control: true
|
||||||
caches_by_default: false
|
caches_by_default: false
|
||||||
edit_format: whole
|
edit_format: whole
|
||||||
|
|
|
@ -88,6 +88,9 @@ cog.outl("```")
|
||||||
## Use claude-3-5-sonnet-20241022 model for the main chat
|
## Use claude-3-5-sonnet-20241022 model for the main chat
|
||||||
#sonnet: false
|
#sonnet: false
|
||||||
|
|
||||||
|
## Use claude-3-5-haiku-20241022 model for the main chat
|
||||||
|
#haiku: false
|
||||||
|
|
||||||
## Use gpt-4-0613 model for the main chat
|
## Use gpt-4-0613 model for the main chat
|
||||||
#4: false
|
#4: false
|
||||||
|
|
||||||
|
@ -376,6 +379,9 @@ cog.outl("```")
|
||||||
## Apply the changes from the given file instead of running the chat (debug)
|
## Apply the changes from the given file instead of running the chat (debug)
|
||||||
#apply: xxx
|
#apply: xxx
|
||||||
|
|
||||||
|
## Apply clipboard contents as edits using the main model's editor format
|
||||||
|
#apply-clipboard-edits: false
|
||||||
|
|
||||||
## Always say yes to every confirmation
|
## Always say yes to every confirmation
|
||||||
#yes-always: false
|
#yes-always: false
|
||||||
|
|
||||||
|
|
|
@ -78,6 +78,9 @@ cog.outl("```")
|
||||||
## Use claude-3-5-sonnet-20241022 model for the main chat
|
## Use claude-3-5-sonnet-20241022 model for the main chat
|
||||||
#AIDER_SONNET=
|
#AIDER_SONNET=
|
||||||
|
|
||||||
|
## Use claude-3-5-haiku-20241022 model for the main chat
|
||||||
|
#AIDER_HAIKU=
|
||||||
|
|
||||||
## Use gpt-4-0613 model for the main chat
|
## Use gpt-4-0613 model for the main chat
|
||||||
#AIDER_4=
|
#AIDER_4=
|
||||||
|
|
||||||
|
@ -348,6 +351,9 @@ cog.outl("```")
|
||||||
## Apply the changes from the given file instead of running the chat (debug)
|
## Apply the changes from the given file instead of running the chat (debug)
|
||||||
#AIDER_APPLY=
|
#AIDER_APPLY=
|
||||||
|
|
||||||
|
## Apply clipboard contents as edits using the main model's editor format
|
||||||
|
#AIDER_APPLY_CLIPBOARD_EDITS=false
|
||||||
|
|
||||||
## Always say yes to every confirmation
|
## Always say yes to every confirmation
|
||||||
#AIDER_YES_ALWAYS=
|
#AIDER_YES_ALWAYS=
|
||||||
|
|
||||||
|
|
|
@ -26,12 +26,12 @@ cog.out(get_md_help())
|
||||||
]]]-->
|
]]]-->
|
||||||
```
|
```
|
||||||
usage: aider [-h] [--openai-api-key] [--anthropic-api-key] [--model]
|
usage: aider [-h] [--openai-api-key] [--anthropic-api-key] [--model]
|
||||||
[--opus] [--sonnet] [--4] [--4o] [--mini] [--4-turbo]
|
[--opus] [--sonnet] [--haiku] [--4] [--4o] [--mini]
|
||||||
[--35turbo] [--deepseek] [--o1-mini] [--o1-preview]
|
[--4-turbo] [--35turbo] [--deepseek] [--o1-mini]
|
||||||
[--list-models] [--openai-api-base] [--openai-api-type]
|
[--o1-preview] [--list-models] [--openai-api-base]
|
||||||
[--openai-api-version] [--openai-api-deployment-id]
|
[--openai-api-type] [--openai-api-version]
|
||||||
[--openai-organization-id] [--model-settings-file]
|
[--openai-api-deployment-id] [--openai-organization-id]
|
||||||
[--model-metadata-file]
|
[--model-settings-file] [--model-metadata-file]
|
||||||
[--verify-ssl | --no-verify-ssl] [--edit-format]
|
[--verify-ssl | --no-verify-ssl] [--edit-format]
|
||||||
[--architect] [--weak-model] [--editor-model]
|
[--architect] [--weak-model] [--editor-model]
|
||||||
[--editor-edit-format]
|
[--editor-edit-format]
|
||||||
|
@ -67,9 +67,9 @@ usage: aider [-h] [--openai-api-key] [--anthropic-api-key] [--model]
|
||||||
[--chat-language] [--version] [--just-check-update]
|
[--chat-language] [--version] [--just-check-update]
|
||||||
[--check-update | --no-check-update]
|
[--check-update | --no-check-update]
|
||||||
[--install-main-branch] [--upgrade] [--apply]
|
[--install-main-branch] [--upgrade] [--apply]
|
||||||
[--yes-always] [-v] [--show-repo-map] [--show-prompts]
|
[--apply-clipboard-edits] [--yes-always] [-v]
|
||||||
[--exit] [--message] [--message-file] [--load]
|
[--show-repo-map] [--show-prompts] [--exit] [--message]
|
||||||
[--encoding] [-c]
|
[--message-file] [--load] [--encoding] [-c]
|
||||||
[--gui | --no-gui | --browser | --no-browser]
|
[--gui | --no-gui | --browser | --no-browser]
|
||||||
[--suggest-shell-commands | --no-suggest-shell-commands]
|
[--suggest-shell-commands | --no-suggest-shell-commands]
|
||||||
[--fancy-input | --no-fancy-input] [--voice-format]
|
[--fancy-input | --no-fancy-input] [--voice-format]
|
||||||
|
@ -107,6 +107,10 @@ Environment variable: `AIDER_OPUS`
|
||||||
Use claude-3-5-sonnet-20241022 model for the main chat
|
Use claude-3-5-sonnet-20241022 model for the main chat
|
||||||
Environment variable: `AIDER_SONNET`
|
Environment variable: `AIDER_SONNET`
|
||||||
|
|
||||||
|
### `--haiku`
|
||||||
|
Use claude-3-5-haiku-20241022 model for the main chat
|
||||||
|
Environment variable: `AIDER_HAIKU`
|
||||||
|
|
||||||
### `--4`
|
### `--4`
|
||||||
Use gpt-4-0613 model for the main chat
|
Use gpt-4-0613 model for the main chat
|
||||||
Environment variable: `AIDER_4`
|
Environment variable: `AIDER_4`
|
||||||
|
@ -574,6 +578,11 @@ Aliases:
|
||||||
Apply the changes from the given file instead of running the chat (debug)
|
Apply the changes from the given file instead of running the chat (debug)
|
||||||
Environment variable: `AIDER_APPLY`
|
Environment variable: `AIDER_APPLY`
|
||||||
|
|
||||||
|
### `--apply-clipboard-edits`
|
||||||
|
Apply clipboard contents as edits using the main model's editor format
|
||||||
|
Default: False
|
||||||
|
Environment variable: `AIDER_APPLY_CLIPBOARD_EDITS`
|
||||||
|
|
||||||
### `--yes-always`
|
### `--yes-always`
|
||||||
Always say yes to every confirmation
|
Always say yes to every confirmation
|
||||||
Environment variable: `AIDER_YES_ALWAYS`
|
Environment variable: `AIDER_YES_ALWAYS`
|
||||||
|
|
|
@ -60,13 +60,20 @@ The model also has to successfully apply all its changes to the source file with
|
||||||
<script>
|
<script>
|
||||||
document.addEventListener('DOMContentLoaded', function () {
|
document.addEventListener('DOMContentLoaded', function () {
|
||||||
var ctx = document.getElementById('editChart').getContext('2d');
|
var ctx = document.getElementById('editChart').getContext('2d');
|
||||||
|
const HIGHTLIGHT_MODEL = 'no no no no';
|
||||||
var leaderboardData = {
|
var leaderboardData = {
|
||||||
labels: [],
|
labels: [],
|
||||||
datasets: [{
|
datasets: [{
|
||||||
label: 'Percent completed correctly',
|
label: 'Percent completed correctly',
|
||||||
data: [],
|
data: [],
|
||||||
backgroundColor: 'rgba(54, 162, 235, 0.2)',
|
backgroundColor: function(context) {
|
||||||
borderColor: 'rgba(54, 162, 235, 1)',
|
const label = context.chart.data.labels[context.dataIndex] || '';
|
||||||
|
return (label && label.includes(HIGHTLIGHT_MODEL)) ? 'rgba(255, 99, 132, 0.2)' : 'rgba(54, 162, 235, 0.2)';
|
||||||
|
},
|
||||||
|
borderColor: function(context) {
|
||||||
|
const label = context.chart.data.labels[context.dataIndex] || '';
|
||||||
|
return (label && label.includes(HIGHTLIGHT_MODEL)) ? 'rgba(255, 99, 132, 1)' : 'rgba(54, 162, 235, 1)';
|
||||||
|
},
|
||||||
borderWidth: 1
|
borderWidth: 1
|
||||||
}]
|
}]
|
||||||
};
|
};
|
||||||
|
@ -117,14 +124,9 @@ The model also has to successfully apply all its changes to the source file with
|
||||||
data: leaderboardData,
|
data: leaderboardData,
|
||||||
options: {
|
options: {
|
||||||
scales: {
|
scales: {
|
||||||
yAxes: [{
|
y: {
|
||||||
scaleLabel: {
|
|
||||||
display: true,
|
|
||||||
},
|
|
||||||
ticks: {
|
|
||||||
beginAtZero: true
|
beginAtZero: true
|
||||||
}
|
}
|
||||||
}]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -242,14 +244,9 @@ Therefore, results are available for fewer models.
|
||||||
data: leaderboardData,
|
data: leaderboardData,
|
||||||
options: {
|
options: {
|
||||||
scales: {
|
scales: {
|
||||||
yAxes: [{
|
y: {
|
||||||
scaleLabel: {
|
|
||||||
display: true,
|
|
||||||
},
|
|
||||||
ticks: {
|
|
||||||
beginAtZero: true
|
beginAtZero: true
|
||||||
}
|
}
|
||||||
}]
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -321,6 +318,6 @@ mod_dates = [get_last_modified_date(file) for file in files]
|
||||||
latest_mod_date = max(mod_dates)
|
latest_mod_date = max(mod_dates)
|
||||||
cog.out(f"{latest_mod_date.strftime('%B %d, %Y.')}")
|
cog.out(f"{latest_mod_date.strftime('%B %d, %Y.')}")
|
||||||
]]]-->
|
]]]-->
|
||||||
October 22, 2024.
|
November 04, 2024.
|
||||||
<!--[[[end]]]-->
|
<!--[[[end]]]-->
|
||||||
</p>
|
</p>
|
||||||
|
|
|
@ -95,5 +95,6 @@ cog.out(''.join(lines))
|
||||||
- TOGETHERAI_API_KEY
|
- TOGETHERAI_API_KEY
|
||||||
- VOLCENGINE_API_KEY
|
- VOLCENGINE_API_KEY
|
||||||
- VOYAGE_API_KEY
|
- VOYAGE_API_KEY
|
||||||
|
- XAI_API_KEY
|
||||||
- XINFERENCE_API_KEY
|
- XINFERENCE_API_KEY
|
||||||
<!--[[[end]]]-->
|
<!--[[[end]]]-->
|
||||||
|
|
|
@ -100,7 +100,7 @@ aider --analytics-log filename.jsonl --no-analytics
|
||||||
If you have concerns about any of the analytics that aider is collecting
|
If you have concerns about any of the analytics that aider is collecting
|
||||||
or our data practices
|
or our data practices
|
||||||
please contact us by opening a
|
please contact us by opening a
|
||||||
[GitHub Issue](https://github.com/paul-gauthier/aider/issues).
|
[GitHub Issue](https://github.com/aider-ai/aider/issues).
|
||||||
|
|
||||||
## Privacy policy
|
## Privacy policy
|
||||||
|
|
||||||
|
|
|
@ -57,6 +57,7 @@ cog.out(model_list)
|
||||||
]]]-->
|
]]]-->
|
||||||
- anthropic.claude-3-5-sonnet-20241022-v2:0
|
- anthropic.claude-3-5-sonnet-20241022-v2:0
|
||||||
- anthropic/claude-3-5-sonnet-20241022
|
- anthropic/claude-3-5-sonnet-20241022
|
||||||
|
- claude-3-5-haiku-20241022
|
||||||
- claude-3-5-sonnet-20240620
|
- claude-3-5-sonnet-20240620
|
||||||
- claude-3-5-sonnet-20241022
|
- claude-3-5-sonnet-20241022
|
||||||
- claude-3-haiku-20240307
|
- claude-3-haiku-20240307
|
||||||
|
@ -88,6 +89,7 @@ cog.out(model_list)
|
||||||
- mistral/pixtral-12b-2409
|
- mistral/pixtral-12b-2409
|
||||||
- openrouter/anthropic/claude-3.5-sonnet
|
- openrouter/anthropic/claude-3.5-sonnet
|
||||||
- us.anthropic.claude-3-5-sonnet-20241022-v2:0
|
- us.anthropic.claude-3-5-sonnet-20241022-v2:0
|
||||||
|
- vertex_ai/claude-3-5-haiku@20241022
|
||||||
- vertex_ai/claude-3-5-sonnet-v2@20241022
|
- vertex_ai/claude-3-5-sonnet-v2@20241022
|
||||||
- vertex_ai/claude-3-5-sonnet@20240620
|
- vertex_ai/claude-3-5-sonnet@20240620
|
||||||
- vertex_ai/claude-3-haiku@20240307
|
- vertex_ai/claude-3-haiku@20240307
|
||||||
|
|
|
@ -112,11 +112,34 @@ def comment_and_close_duplicate(issue, oldest_issue):
|
||||||
print(f" - Commented and closed issue #{issue['number']}")
|
print(f" - Commented and closed issue #{issue['number']}")
|
||||||
|
|
||||||
|
|
||||||
|
def find_unlabeled_with_paul_comments(issues):
|
||||||
|
unlabeled_issues = []
|
||||||
|
for issue in issues:
|
||||||
|
if not issue["labels"] and issue["state"] == "open":
|
||||||
|
# Get comments for this issue
|
||||||
|
comments_url = (
|
||||||
|
f"{GITHUB_API_URL}/repos/{REPO_OWNER}/{REPO_NAME}/issues/{issue['number']}/comments"
|
||||||
|
)
|
||||||
|
response = requests.get(comments_url, headers=headers)
|
||||||
|
response.raise_for_status()
|
||||||
|
comments = response.json()
|
||||||
|
|
||||||
|
# Check if paul-gauthier has commented
|
||||||
|
if any(comment["user"]["login"] == "paul-gauthier" for comment in comments):
|
||||||
|
unlabeled_issues.append(issue)
|
||||||
|
return unlabeled_issues
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
parser = argparse.ArgumentParser(description="Handle duplicate GitHub issues")
|
parser = argparse.ArgumentParser(description="Handle duplicate GitHub issues")
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--yes", action="store_true", help="Automatically close duplicates without prompting"
|
"--yes", action="store_true", help="Automatically close duplicates without prompting"
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--find-unlabeled",
|
||||||
|
action="store_true",
|
||||||
|
help="Find unlabeled issues with paul-gauthier comments",
|
||||||
|
)
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
if not TOKEN:
|
if not TOKEN:
|
||||||
|
@ -124,6 +147,32 @@ def main():
|
||||||
return
|
return
|
||||||
|
|
||||||
all_issues = get_issues("all")
|
all_issues = get_issues("all")
|
||||||
|
|
||||||
|
if args.find_unlabeled:
|
||||||
|
print("\nFinding unlabeled issues with paul-gauthier comments...")
|
||||||
|
unlabeled_issues = find_unlabeled_with_paul_comments(all_issues)
|
||||||
|
|
||||||
|
if not unlabeled_issues:
|
||||||
|
print("No unlabeled issues with paul-gauthier comments found.")
|
||||||
|
return
|
||||||
|
|
||||||
|
print(f"\nFound {len(unlabeled_issues)} unlabeled issues with paul-gauthier comments:")
|
||||||
|
for issue in unlabeled_issues:
|
||||||
|
print(f" - #{issue['number']}: {issue['title']} {issue['html_url']}")
|
||||||
|
|
||||||
|
if not args.yes:
|
||||||
|
confirm = input("\nDo you want to add the 'question' label to these issues? (y/n): ")
|
||||||
|
if confirm.lower() != "y":
|
||||||
|
print("Skipping labeling.")
|
||||||
|
return
|
||||||
|
|
||||||
|
print("\nAdding 'question' label to issues...")
|
||||||
|
for issue in unlabeled_issues:
|
||||||
|
url = f"{GITHUB_API_URL}/repos/{REPO_OWNER}/{REPO_NAME}/issues/{issue['number']}"
|
||||||
|
response = requests.patch(url, headers=headers, json={"labels": ["question"]})
|
||||||
|
response.raise_for_status()
|
||||||
|
print(f" - Added 'question' label to #{issue['number']}")
|
||||||
|
return
|
||||||
open_issues = [issue for issue in all_issues if issue["state"] == "open"]
|
open_issues = [issue for issue in all_issues if issue["state"] == "open"]
|
||||||
grouped_open_issues = group_issues_by_subject(open_issues)
|
grouped_open_issues = group_issues_by_subject(open_issues)
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue