From ce50b2d51d8c39a034161d5cecc4764ce03323fc Mon Sep 17 00:00:00 2001 From: hnipun Date: Sun, 26 Oct 2025 11:20:07 +0530 Subject: [PATCH 1/7] added modify extension --- chat/notbadai_chat/__init__.py | 88 ++++++++++++---------------------- 1 file changed, 31 insertions(+), 57 deletions(-) diff --git a/chat/notbadai_chat/__init__.py b/chat/notbadai_chat/__init__.py index 201cd10..9f3419d 100644 --- a/chat/notbadai_chat/__init__.py +++ b/chat/notbadai_chat/__init__.py @@ -1,70 +1,44 @@ from string import Template from pathlib import Path -from notbadai_ide import api, START_METADATA, END_METADATA +from notbadai_ide import api from .common.llm import call_llm -from .common.utils import parse_prompt -from .common.prompt import build_context - -module_dir = Path(__file__).parent +from .common.formatting import markdown_section, markdown_code_block def get_prompt_template(template_path: str, **kwargs) -> str: - path = module_dir / f'{template_path}.md' - with open(str(path)) as f: - template = Template(f.read()) - - return template.substitute(kwargs) + with open(Path(__file__).parent / f'{template_path}.md') as f: + return Template(f.read()).substitute(kwargs) def start(): """Main extension function that handles chat interactions with the AI assistant.""" - command, model, prompt = parse_prompt() + current_file = api.get_current_file() selection = api.get_selection() - chat_history = api.get_chat_history() - prompt = api.get_prompt() - - api.chat(f'{START_METADATA}model: {model}, command: {command}{END_METADATA}') - - if command == '': - api.chat(f'{START_METADATA}Without context{END_METADATA}') - messages = [ - {'role': 'system', 'content': get_prompt_template('chat.system', model=model)}, - *[m.to_dict() for m in chat_history], - {'role': 'user', 'content': prompt}, - ] - elif command == 'here': - context = build_context() - - api.chat(f'{START_METADATA}With context: {len(context) :,} characters,' - f' selection: {bool(selection)}{END_METADATA}') - api.log(context) - messages = [ - {'role': 'system', 'content': get_prompt_template('chat.system', model=model)}, - {'role': 'user', 'content': context}, - *[m.to_dict() for m in chat_history], - {'role': 'user', 'content': prompt}, - ] - elif command == 'context': - context = build_context() - - api.chat(f'{START_METADATA}With context: {len(context) :,} characters,' - f' selection: {bool(selection)}{END_METADATA}') - # api.log(context) - messages = [ - {'role': 'system', 'content': get_prompt_template('chat.system', model=model)}, - {'role': 'user', 'content': context}, - *[m.to_dict() for m in chat_history], - {'role': 'user', 'content': prompt}, - ] - else: - raise ValueError(f'Unknown command: {command}') - - api.log(f'messages {len(messages)}') - api.log(f'prompt {prompt}') - # api.log(context) - - content = call_llm(model, messages) - - api.log(content) + terminal = api.get_current_terminal().get_snapshot() + model = 'qwen' + + context = [] + + open_files = [f for f in api.get_repo_files() if f.is_open] + if open_files: + context.append(markdown_section("Relevant files", "\n\n".join( + f'Path: `{f.path}`\n\n{markdown_code_block(f.get_content())}' for f in open_files))) + if current_file: + context.append(markdown_section("Current File", + f"Path: `{current_file.path}`\n\n{markdown_code_block(current_file.get_content())}")) + if terminal: + context.append(markdown_section("Terminal output", markdown_code_block(terminal[-40000:]))) + + if selection and selection.strip(): + context.append(markdown_section("Selection", + f"This is the code snippet that I'm referring to\n\n{markdown_code_block(selection)}")) + + messages = [ + {'role': 'system', 'content': get_prompt_template('chat.system', model=model)}, + {'role': 'user', 'content': "\n\n".join(context)}, + {'role': 'user', 'content': api.get_prompt()}, + ] + + call_llm(model, messages) From ac07208fbec5562ecc17d0c74a0d95845c155477 Mon Sep 17 00:00:00 2001 From: hnipun Date: Sun, 26 Oct 2025 11:40:02 +0530 Subject: [PATCH 2/7] added modify extension --- chat/notbadai_chat/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/chat/notbadai_chat/__init__.py b/chat/notbadai_chat/__init__.py index 9f3419d..0e8eaab 100644 --- a/chat/notbadai_chat/__init__.py +++ b/chat/notbadai_chat/__init__.py @@ -30,11 +30,9 @@ def start(): f"Path: `{current_file.path}`\n\n{markdown_code_block(current_file.get_content())}")) if terminal: context.append(markdown_section("Terminal output", markdown_code_block(terminal[-40000:]))) - if selection and selection.strip(): context.append(markdown_section("Selection", f"This is the code snippet that I'm referring to\n\n{markdown_code_block(selection)}")) - messages = [ {'role': 'system', 'content': get_prompt_template('chat.system', model=model)}, {'role': 'user', 'content': "\n\n".join(context)}, From aa7726fb5e2f4a828edb3746f3904668d5bd24fb Mon Sep 17 00:00:00 2001 From: hnipun Date: Sun, 26 Oct 2025 12:23:55 +0530 Subject: [PATCH 3/7] added modify extension --- chat/notbadai_chat/__init__.py | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) diff --git a/chat/notbadai_chat/__init__.py b/chat/notbadai_chat/__init__.py index 0e8eaab..c38a52c 100644 --- a/chat/notbadai_chat/__init__.py +++ b/chat/notbadai_chat/__init__.py @@ -7,36 +7,35 @@ from .common.formatting import markdown_section, markdown_code_block -def get_prompt_template(template_path: str, **kwargs) -> str: - with open(Path(__file__).parent / f'{template_path}.md') as f: - return Template(f.read()).substitute(kwargs) - - def start(): """Main extension function that handles chat interactions with the AI assistant.""" - current_file = api.get_current_file() - selection = api.get_selection() - terminal = api.get_current_terminal().get_snapshot() model = 'qwen' - context = [] open_files = [f for f in api.get_repo_files() if f.is_open] if open_files: context.append(markdown_section("Relevant files", "\n\n".join( f'Path: `{f.path}`\n\n{markdown_code_block(f.get_content())}' for f in open_files))) - if current_file: + + if current_file := api.get_current_file(): context.append(markdown_section("Current File", f"Path: `{current_file.path}`\n\n{markdown_code_block(current_file.get_content())}")) - if terminal: + + if terminal := api.get_current_terminal().get_snapshot(): context.append(markdown_section("Terminal output", markdown_code_block(terminal[-40000:]))) - if selection and selection.strip(): - context.append(markdown_section("Selection", - f"This is the code snippet that I'm referring to\n\n{markdown_code_block(selection)}")) + + if selection := api.get_selection(): + if selection.strip(): + context.append(markdown_section("Selection", + f"This is the code snippet that I'm referring to\n\n{markdown_code_block(selection)}")) + + with open(Path(__file__).parent / 'chat.system.md') as f: + system_prompt = Template(f.read()).substitute(model=model) + messages = [ - {'role': 'system', 'content': get_prompt_template('chat.system', model=model)}, + {'role': 'system', 'content': system_prompt}, {'role': 'user', 'content': "\n\n".join(context)}, {'role': 'user', 'content': api.get_prompt()}, ] - call_llm(model, messages) + call_llm(model, messages) \ No newline at end of file From 3c6d2122a679cf6162145ce094eaf600926b637c Mon Sep 17 00:00:00 2001 From: hnipun Date: Sun, 26 Oct 2025 12:28:11 +0530 Subject: [PATCH 4/7] added modify extension --- chat/notbadai_chat/__init__.py | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/chat/notbadai_chat/__init__.py b/chat/notbadai_chat/__init__.py index c38a52c..161f94c 100644 --- a/chat/notbadai_chat/__init__.py +++ b/chat/notbadai_chat/__init__.py @@ -18,16 +18,15 @@ def start(): f'Path: `{f.path}`\n\n{markdown_code_block(f.get_content())}' for f in open_files))) if current_file := api.get_current_file(): - context.append(markdown_section("Current File", - f"Path: `{current_file.path}`\n\n{markdown_code_block(current_file.get_content())}")) + file_content = markdown_code_block(current_file.get_content()) + context.append(markdown_section("Current File", f"Path: `{current_file.path}`\n\n{file_content}")) if terminal := api.get_current_terminal().get_snapshot(): context.append(markdown_section("Terminal output", markdown_code_block(terminal[-40000:]))) - if selection := api.get_selection(): - if selection.strip(): - context.append(markdown_section("Selection", - f"This is the code snippet that I'm referring to\n\n{markdown_code_block(selection)}")) + if selection := api.get_selection().strip(): + selection_content = markdown_code_block(selection) + context.append(markdown_section("Selection", f"This is the code snippet that I'm referring to\n\n{selection_content}")) with open(Path(__file__).parent / 'chat.system.md') as f: system_prompt = Template(f.read()).substitute(model=model) From a1e6674af85e3a8812ba330075e125b3be9a6b39 Mon Sep 17 00:00:00 2001 From: hnipun Date: Sun, 26 Oct 2025 12:30:35 +0530 Subject: [PATCH 5/7] added modify extension --- chat/notbadai_chat/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/chat/notbadai_chat/__init__.py b/chat/notbadai_chat/__init__.py index 161f94c..0dab592 100644 --- a/chat/notbadai_chat/__init__.py +++ b/chat/notbadai_chat/__init__.py @@ -26,7 +26,8 @@ def start(): if selection := api.get_selection().strip(): selection_content = markdown_code_block(selection) - context.append(markdown_section("Selection", f"This is the code snippet that I'm referring to\n\n{selection_content}")) + section_content = f"This is the code snippet that I'm referring to\n\n{selection_content}" + context.append(markdown_section("Selection", section_content)) with open(Path(__file__).parent / 'chat.system.md') as f: system_prompt = Template(f.read()).substitute(model=model) @@ -36,5 +37,4 @@ def start(): {'role': 'user', 'content': "\n\n".join(context)}, {'role': 'user', 'content': api.get_prompt()}, ] - call_llm(model, messages) \ No newline at end of file From 0793b50bafcc162959ed9e63bd47f0375b7249a3 Mon Sep 17 00:00:00 2001 From: hnipun Date: Sun, 26 Oct 2025 12:30:42 +0530 Subject: [PATCH 6/7] added modify extension --- chat/notbadai_chat/__init__.py | 3 --- 1 file changed, 3 deletions(-) diff --git a/chat/notbadai_chat/__init__.py b/chat/notbadai_chat/__init__.py index 0dab592..0f9b071 100644 --- a/chat/notbadai_chat/__init__.py +++ b/chat/notbadai_chat/__init__.py @@ -1,12 +1,9 @@ from string import Template from pathlib import Path - from notbadai_ide import api - from .common.llm import call_llm from .common.formatting import markdown_section, markdown_code_block - def start(): """Main extension function that handles chat interactions with the AI assistant.""" model = 'qwen' From af5e682a0f1b83d2b8696d1caf9832f518604591 Mon Sep 17 00:00:00 2001 From: hnipun Date: Sun, 26 Oct 2025 12:33:03 +0530 Subject: [PATCH 7/7] added modify extension --- chat/notbadai_chat/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/chat/notbadai_chat/__init__.py b/chat/notbadai_chat/__init__.py index 0f9b071..a7bde2f 100644 --- a/chat/notbadai_chat/__init__.py +++ b/chat/notbadai_chat/__init__.py @@ -4,6 +4,7 @@ from .common.llm import call_llm from .common.formatting import markdown_section, markdown_code_block + def start(): """Main extension function that handles chat interactions with the AI assistant.""" model = 'qwen' @@ -22,9 +23,8 @@ def start(): context.append(markdown_section("Terminal output", markdown_code_block(terminal[-40000:]))) if selection := api.get_selection().strip(): - selection_content = markdown_code_block(selection) - section_content = f"This is the code snippet that I'm referring to\n\n{selection_content}" - context.append(markdown_section("Selection", section_content)) + context.append(markdown_section("Selection", f"This is the code snippet " + f"that I'm referring to\n\n{markdown_code_block(selection)}")) with open(Path(__file__).parent / 'chat.system.md') as f: system_prompt = Template(f.read()).substitute(model=model) @@ -34,4 +34,4 @@ def start(): {'role': 'user', 'content': "\n\n".join(context)}, {'role': 'user', 'content': api.get_prompt()}, ] - call_llm(model, messages) \ No newline at end of file + call_llm(model, messages)