auto-coder 0.1.220__py3-none-any.whl → 0.1.222__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of auto-coder might be problematic. Click here for more details.

@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: auto-coder
3
- Version: 0.1.220
3
+ Version: 0.1.222
4
4
  Summary: AutoCoder: AutoCoder
5
5
  Author: allwefantasy
6
6
  Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
@@ -1,14 +1,14 @@
1
1
  autocoder/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
- autocoder/auto_coder.py,sha256=xWEEptvSMPu0tEtqOo2V-GoCzL1402NveoxjyYrsw_g,41929
2
+ autocoder/auto_coder.py,sha256=BQvCwOc-4XgOtpwQWHCTvcx97XEejdwRordyrCYSf0s,43554
3
3
  autocoder/auto_coder_lang.py,sha256=Rtupq6N3_HT7JRhDKdgCBcwRaiAnyCOR_Gsp4jUomrI,3229
4
4
  autocoder/auto_coder_rag.py,sha256=illKgzP2bv-Tq50ujsofJnOHdI4pzr0ALtfR8NHHWdQ,22351
5
5
  autocoder/auto_coder_server.py,sha256=XU9b4SBH7zjPPXaTWWHV4_zJm-XYa6njuLQaplYJH_c,20290
6
6
  autocoder/benchmark.py,sha256=Ypomkdzd1T3GE6dRICY3Hj547dZ6_inqJbBJIp5QMco,4423
7
- autocoder/chat_auto_coder.py,sha256=NTCWQKBQJluEhay5NGoTl5tdv00Zmu8oFioCjCpJCd8,94294
7
+ autocoder/chat_auto_coder.py,sha256=x98afu7PCzYtf2545tIdJP13tI3lixFJg4sSSFtRjeM,95346
8
8
  autocoder/chat_auto_coder_lang.py,sha256=ReWukXKVvuzVvpbYk5O9kc1ev7XNmAv3DnuQhmpLmnc,8717
9
9
  autocoder/command_args.py,sha256=9aYJ-AmPxP1sQh6ciw04FWHjSn31f2W9afXFwo8wgx4,30441
10
10
  autocoder/lang.py,sha256=U6AjVV8Rs1uLyjFCZ8sT6WWuNUxMBqkXXIOs4S120uk,14511
11
- autocoder/version.py,sha256=AkV-rQzPFI1YGmw3_1zhV77j25aK6xZpk7snIDE9-KU,24
11
+ autocoder/version.py,sha256=tEdfS6Yw3kxd6NglROcL14L5i85YA9bN5_7H9HyePxA,24
12
12
  autocoder/agent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
13
13
  autocoder/agent/auto_demand_organizer.py,sha256=NWSAEsEk94vT3lGjfo25kKLMwYdPcpy9e-i21txPasQ,6942
14
14
  autocoder/agent/auto_filegroup.py,sha256=CW7bqp0FW1GIEMnl-blyAc2UGT7O9Mom0q66ITz1ckM,6635
@@ -21,7 +21,7 @@ autocoder/agent/project_reader.py,sha256=tWLaPoLw1gI6kO_NzivQj28KbobU2ceOLuppHMb
21
21
  autocoder/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
22
  autocoder/common/JupyterClient.py,sha256=O-wi6pXeAEYhAY24kDa0BINrLYvKS6rKyWe98pDClS0,2816
23
23
  autocoder/common/ShellClient.py,sha256=fM1q8t_XMSbLBl2zkCNC2J9xuyKN3eXzGm6hHhqL2WY,2286
24
- autocoder/common/__init__.py,sha256=Itx7HWrrMEMszf4hpUZ7YhIGbpWQVtJjQOWOEqRsa-Q,11458
24
+ autocoder/common/__init__.py,sha256=jwjsx9qT_5fJmdlbNt3I5UiDtDKcdeLqQ8s_Tw_sT0U,11492
25
25
  autocoder/common/anything2images.py,sha256=0ILBbWzY02M-CiWB-vzuomb_J1hVdxRcenAfIrAXq9M,25283
26
26
  autocoder/common/anything2img.py,sha256=4TREa-sOA-iargieUy7MpyCYVUE-9Mmq0wJtwomPqnE,7662
27
27
  autocoder/common/audio.py,sha256=Kn9nWKQddWnUrAz0a_ZUgjcu4VUU_IcZBigT7n3N3qc,7439
@@ -38,7 +38,7 @@ autocoder/common/code_auto_merge_diff.py,sha256=5SI6ggklJ0QDHvsS0cpNXFuIkFRQxp1i
38
38
  autocoder/common/code_auto_merge_editblock.py,sha256=l6yEiZqXyIlUNIIPXvkHOnLCIInXR78TzSjF-jtJkkg,17035
39
39
  autocoder/common/code_auto_merge_strict_diff.py,sha256=ABYOTDUQYA4Bn4BwT1Rw812y49cHW3UH_JSpM9uJ6ig,9399
40
40
  autocoder/common/code_modification_ranker.py,sha256=DFlbwgdg8GK47zVcvfZSzkyniEKmTVLTOWejjcVIgaw,5121
41
- autocoder/common/command_completer.py,sha256=10nNnazkzZwya-jScPLlhpCBR2oYsOiVfwofqGvIUEM,9145
41
+ autocoder/common/command_completer.py,sha256=xXDatBOkjV78jsgG1eF8pcMFC0glTm1poesjd_Q6kSw,9169
42
42
  autocoder/common/command_generator.py,sha256=v4LmU7sO-P7jEZIXCWHUC6P-vT7AvBi_x_PTwCqBAE8,1323
43
43
  autocoder/common/command_templates.py,sha256=3G-pCNbL6iHbnkG6v1JZpbIK3Mc9d373_RYGmCcDPMY,8548
44
44
  autocoder/common/const.py,sha256=eTjhjh4Aj4CUzviJ81jaf3Y5cwqsLATySn2wJxaS6RQ,2911
@@ -57,7 +57,7 @@ autocoder/common/sys_prompt.py,sha256=JlexfjZt554faqbgkCmzOJqYUzDHfbnxly5ugFfHfE
57
57
  autocoder/common/text.py,sha256=KGRQq314GHBmY4MWG8ossRoQi1_DTotvhxchpn78c-k,1003
58
58
  autocoder/common/types.py,sha256=oQKPE1TG0O7DQQLaBSMp6CP3Bbvg0K8elFdidlV52Lg,631
59
59
  autocoder/common/mcp_servers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
60
- autocoder/common/mcp_servers/mcp_server_perplexity.py,sha256=OV_orQ6NsVnLxGt0SkVt9wsxu-nw7gOuwa4hgtdastI,5546
60
+ autocoder/common/mcp_servers/mcp_server_perplexity.py,sha256=jz0LkCgZcqKkNdLZ9swNOu9Besoba4JOyHDedoZnWHo,5546
61
61
  autocoder/data/tokenizer.json,sha256=QfO_ZCE9qMAS2L0IcaWKH99wRj6PCPEQ3bsQgvUp9mk,4607451
62
62
  autocoder/db/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
63
63
  autocoder/db/store.py,sha256=tFT66bP2ZKIqZip-uhLkHRSLaaOAUUDZfozJwcqix3c,1908
@@ -78,7 +78,7 @@ autocoder/rag/api_server.py,sha256=dRbhAZVRAOlZ64Cnxf4_rKb4iJwHnrWS9Zr67IVORw0,7
78
78
  autocoder/rag/doc_filter.py,sha256=B99Qcy3tcNLuSz2kWbpgfBj2_Igme91zWKOJ2Niq2UY,6652
79
79
  autocoder/rag/document_retriever.py,sha256=5oThtxukGuRFF96o3pHKsk306a8diXbhgSrbqyU2BvM,8894
80
80
  autocoder/rag/llm_wrapper.py,sha256=sbDxCANiZyWb_ocqNgqu2oy3c2t8orPNRGleEs-Uwl8,2649
81
- autocoder/rag/long_context_rag.py,sha256=jEhil33y2ryAF393zKdUhrk_QEHUlZ30gZcvPH0Z3MY,25074
81
+ autocoder/rag/long_context_rag.py,sha256=F-ulTwSZ9ogIGL9jTXDUnI44zStH02EjrztZgRkW9-g,25246
82
82
  autocoder/rag/rag_config.py,sha256=8LwFcTd8OJWWwi1_WY4IzjqgtT6RyE2j4PjxS5cCTDE,802
83
83
  autocoder/rag/rag_entry.py,sha256=6TKtErZ0Us9XSV6HgRKXA6yR3SiZGPHpynOKSaR1wgE,2463
84
84
  autocoder/rag/raw_rag.py,sha256=yS2Ur6kG0IRjhCj2_VonwxjY_xls_E62jO5Gz5j2nqE,2952
@@ -122,9 +122,9 @@ autocoder/utils/request_event_queue.py,sha256=r3lo5qGsB1dIjzVQ05dnr0z_9Z3zOkBdP1
122
122
  autocoder/utils/request_queue.py,sha256=nwp6PMtgTCiuwJI24p8OLNZjUiprC-TsefQrhMI-yPE,3889
123
123
  autocoder/utils/rest.py,sha256=HawagAap3wMIDROGhY1730zSZrJR_EycODAA5qOj83c,8807
124
124
  autocoder/utils/tests.py,sha256=BqphrwyycGAvs-5mhH8pKtMZdObwhFtJ5MC_ZAOiLq8,1340
125
- auto_coder-0.1.220.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
126
- auto_coder-0.1.220.dist-info/METADATA,sha256=uQi6g28X2Lzv4rVNmWu0j3yEQ0W2uo_YQOqdXmpSHwc,2615
127
- auto_coder-0.1.220.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
128
- auto_coder-0.1.220.dist-info/entry_points.txt,sha256=0nzHtHH4pNcM7xq4EBA2toS28Qelrvcbrr59GqD_0Ak,350
129
- auto_coder-0.1.220.dist-info/top_level.txt,sha256=Jqc0_uJSw2GwoFQAa9iJxYns-2mWla-9ok_Y3Gcznjk,10
130
- auto_coder-0.1.220.dist-info/RECORD,,
125
+ auto_coder-0.1.222.dist-info/LICENSE,sha256=HrhfyXIkWY2tGFK11kg7vPCqhgh5DcxleloqdhrpyMY,11558
126
+ auto_coder-0.1.222.dist-info/METADATA,sha256=T3YPAkMEoTSY8J8xgPi-f-Rn_szn6-A4wJhbQfn5Gvs,2615
127
+ auto_coder-0.1.222.dist-info/WHEEL,sha256=GV9aMThwP_4oNCtvEC2ec3qUYutgWeAzklro_0m4WJQ,91
128
+ auto_coder-0.1.222.dist-info/entry_points.txt,sha256=0nzHtHH4pNcM7xq4EBA2toS28Qelrvcbrr59GqD_0Ak,350
129
+ auto_coder-0.1.222.dist-info/top_level.txt,sha256=Jqc0_uJSw2GwoFQAa9iJxYns-2mWla-9ok_Y3Gcznjk,10
130
+ auto_coder-0.1.222.dist-info/RECORD,,
autocoder/auto_coder.py CHANGED
@@ -577,6 +577,9 @@ def main(input_args: Optional[List[str]] = None):
577
577
  with Live(
578
578
  Panel("", title="Response", border_style="green", expand=False),
579
579
  refresh_per_second=4,
580
+ auto_refresh=True,
581
+ vertical_overflow="visible",
582
+ console=Console(force_terminal=True, color_system="auto", height=None)
580
583
  ) as live:
581
584
  live.update(
582
585
  Panel(
@@ -689,6 +692,9 @@ def main(input_args: Optional[List[str]] = None):
689
692
  with Live(
690
693
  Panel("", title="Response", border_style="green", expand=False),
691
694
  refresh_per_second=4,
695
+ auto_refresh=True,
696
+ vertical_overflow="visible",
697
+ console=Console(force_terminal=True, color_system="auto", height=None)
692
698
  ) as live:
693
699
  live.update(
694
700
  Panel(
@@ -698,8 +704,8 @@ def main(input_args: Optional[List[str]] = None):
698
704
  expand=False,
699
705
  )
700
706
  )
701
- return
702
707
 
708
+ return
703
709
  elif raw_args.agent_command == "designer":
704
710
  from autocoder.agent.designer import SVGDesigner, SDDesigner, LogoDesigner
705
711
 
@@ -938,11 +944,24 @@ def main(input_args: Optional[List[str]] = None):
938
944
 
939
945
  return {}
940
946
 
941
- if args.enable_rag_search or args.enable_rag_context:
947
+ if args.action == "rag":
948
+ args.enable_rag_search = True
949
+ args.enable_rag_context = False
942
950
  rag = RAGFactory.get_rag(llm=chat_llm, args=args, path="")
943
951
  response = rag.stream_chat_oai(
944
- conversations=loaded_conversations)[0]
952
+ conversations=[{"role": "user", "content": args.query}])[0]
945
953
  v = ([item, None] for item in response)
954
+
955
+ elif args.action == "mcp":
956
+ from autocoder.common.mcp_server import get_mcp_server, McpRequest, McpInstallRequest, McpRemoveRequest, McpListRequest, McpListRunningRequest, McpRefreshRequest
957
+ mcp_server = get_mcp_server()
958
+ response = mcp_server.send_request(
959
+ McpRequest(
960
+ query=args.query,
961
+ model=args.inference_model or args.model
962
+ )
963
+ )
964
+ v = [[response.result,None]]
946
965
  else:
947
966
  v = chat_llm.stream_chat_oai(
948
967
  conversations=loaded_conversations, delta_mode=True
@@ -953,8 +972,11 @@ def main(input_args: Optional[List[str]] = None):
953
972
 
954
973
  try:
955
974
  with Live(
956
- Panel("", title="Response"),
975
+ Panel("", title="Response", border_style="green", expand=False),
957
976
  refresh_per_second=4,
977
+ auto_refresh=True,
978
+ vertical_overflow="visible",
979
+ console=Console(force_terminal=True, color_system="auto", height=None)
958
980
  ) as live:
959
981
  for res in v:
960
982
  markdown_content += res[0]
@@ -975,6 +997,14 @@ def main(input_args: Optional[List[str]] = None):
975
997
  expand=False,
976
998
  )
977
999
  )
1000
+ live.update(
1001
+ Panel(
1002
+ Markdown(markdown_content),
1003
+ title="Response",
1004
+ border_style="green",
1005
+ expand=False,
1006
+ )
1007
+ )
978
1008
  except Exception as e:
979
1009
  request_queue.add_request(
980
1010
  args.request_id,
@@ -989,7 +1019,7 @@ def main(input_args: Optional[List[str]] = None):
989
1019
  value=StreamValue(value=[""]), status=RequestOption.COMPLETED
990
1020
  ),
991
1021
  )
992
-
1022
+
993
1023
  chat_history["ask_conversation"].append(
994
1024
  {"role": "assistant", "content": assistant_response}
995
1025
  )
@@ -38,6 +38,7 @@ from rich.table import Table
38
38
  from rich.live import Live
39
39
  from rich.text import Text
40
40
  from rich.live import Live
41
+ from rich.markdown import Markdown
41
42
  from byzerllm.utils.nontext import Image
42
43
  import git
43
44
  from autocoder.common import git_utils
@@ -46,6 +47,7 @@ from autocoder.utils import operate_config_api
46
47
  from autocoder.agent.auto_guess_query import AutoGuessQuery
47
48
  from autocoder.common.mcp_server import get_mcp_server, McpRequest, McpInstallRequest, McpRemoveRequest, McpListRequest, McpListRunningRequest, McpRefreshRequest
48
49
  import byzerllm
50
+ from byzerllm.utils import format_str_jinja2
49
51
 
50
52
 
51
53
  class SymbolItem(BaseModel):
@@ -1499,11 +1501,32 @@ def mcp(query: str):
1499
1501
  model=args.inference_model or args.model
1500
1502
  )
1501
1503
  )
1502
-
1504
+ console = Console()
1503
1505
  if response.error:
1504
- print(f"Error from MCP server: {response.error}")
1506
+ console.print(Panel(
1507
+ f"Error from MCP server: {response.error}",
1508
+ title="Error",
1509
+ border_style="red"
1510
+ ))
1505
1511
  else:
1506
- print(response.result)
1512
+ # Save conversation
1513
+ mcp_dir = os.path.join(".auto-coder", "mcp", "conversations")
1514
+ os.makedirs(mcp_dir, exist_ok=True)
1515
+ timestamp = str(int(time.time()))
1516
+ file_path = os.path.join(mcp_dir, f"{timestamp}.md")
1517
+
1518
+ # Format response as markdown
1519
+ markdown_content = f"# MCP Response\n\n{response.result}"
1520
+
1521
+ # Save to file
1522
+ with open(file_path, "w", encoding="utf-8") as f:
1523
+ f.write(markdown_content)
1524
+
1525
+ # Print with markdown formatting
1526
+ console.print(Panel(
1527
+ Markdown(markdown_content),
1528
+ border_style="green"
1529
+ ))
1507
1530
 
1508
1531
 
1509
1532
  def code_next(query: str):
@@ -1837,10 +1860,18 @@ def chat(query: str):
1837
1860
  if "emb_model" in conf:
1838
1861
  yaml_config["emb_model"] = conf["emb_model"]
1839
1862
 
1840
- is_new = query.strip().startswith("/new")
1863
+ is_new = "/new" in query
1841
1864
  if is_new:
1842
1865
  query = query.replace("/new", "", 1).strip()
1843
1866
 
1867
+ if "/mcp " in query:
1868
+ yaml_config["action"] = "mcp"
1869
+ query = query.replace("/mcp ", "", 1).strip()
1870
+
1871
+ if "/rag " in query:
1872
+ yaml_config["action"] = "rag"
1873
+ query = query.replace("/rag ", "", 1).strip()
1874
+
1844
1875
  is_review = query.strip().startswith("/review")
1845
1876
  if is_review:
1846
1877
  query = query.replace("/review", "", 1).strip()
@@ -348,5 +348,7 @@ class AutoCoderArgs(pydantic.BaseModel):
348
348
  data_cells_max_num: Optional[int] = 2000
349
349
  generate_times_same_model: Optional[int] = 1
350
350
 
351
+ action: Optional[str] = None
352
+
351
353
  class Config:
352
354
  protected_namespaces = ()
@@ -13,7 +13,7 @@ COMMANDS = {
13
13
  "/sd": {},
14
14
  },
15
15
  "/coding": {"/apply": {}, "/next": {}},
16
- "/chat": {"/new": {}, "/review": {}, "/no_context": {}},
16
+ "/chat": {"/new": {}, "/mcp": {}, "/rag": {}, "/review": {}, "/no_context": {}},
17
17
  "/mcp": {
18
18
  "/add": "",
19
19
  "/remove": "",
@@ -51,11 +51,11 @@ async def handle_list_tools() -> list[types.Tool]:
51
51
  "type": "string",
52
52
  "description": "The name of the model that will complete your prompt.",
53
53
  "enum": [
54
- "llama-3.1-sonar-small-128k-online",
54
+ # "llama-3.1-sonar-small-128k-online",
55
55
  # Commenting out larger models,which have higher risks of timing out,
56
56
  # until Claude Desktop can handle long-running tasks effectively.
57
57
  # "llama-3.1-sonar-large-128k-online",
58
- # "llama-3.1-sonar-huge-128k-online",
58
+ "llama-3.1-sonar-huge-128k-online",
59
59
  ],
60
60
  },
61
61
  "messages": {
@@ -104,6 +104,8 @@ class LongContextRAG:
104
104
  raise ValueError(
105
105
  "You are in client mode, please provide the RAG token. e.g. rag_token: your_token_here"
106
106
  )
107
+ if not args.rag_url.endswith("/v1"):
108
+ args.rag_url = args.rag_url.rstrip("/") + "/v1"
107
109
  self.client = OpenAI(api_key=args.rag_token, base_url=args.rag_url)
108
110
  else:
109
111
  self.client = None
@@ -340,6 +342,7 @@ class LongContextRAG:
340
342
  model=model,
341
343
  messages=conversations,
342
344
  stream=True,
345
+ max_tokens=self.args.rag_params_max_tokens
343
346
  )
344
347
 
345
348
  def response_generator():
autocoder/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.1.220"
1
+ __version__ = "0.1.222"