From bacb69b569891828ed79f6f178593566be736f06 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Mon, 9 Mar 2026 10:24:37 +0800 Subject: [PATCH 1/3] Update dev version * Update code-review prompts * Split code-review thread to another file --- .../extend_ai_gui/ai_gui_global_variable.py | 4 - .../extend_ai_gui/code_review/__init__.py | 0 .../code_review_thread.py} | 90 +----------------- .../code_review/cot_code_review_gui.py | 82 +++++++++++++++++ .../cot_code_review_prompt_templates/judge.py | 91 +++++++++++++++++++ .../judge_single_review.py | 85 +++++++++++++++++ .../linter.py | 26 +++--- .../step_by_step_analysis.py | 35 +++++++ .../extend_ai_gui/skills/__init__.py | 0 .../{ => skills}/skills_send_gui.py | 0 .../menu/tools/tools_menu.py | 2 +- pyproject.toml | 2 +- 12 files changed, 311 insertions(+), 106 deletions(-) create mode 100644 automation_ide/automation_editor_ui/extend_ai_gui/code_review/__init__.py rename automation_ide/automation_editor_ui/extend_ai_gui/{cot_code_review_gui.py => code_review/code_review_thread.py} (51%) create mode 100644 automation_ide/automation_editor_ui/extend_ai_gui/code_review/cot_code_review_gui.py create mode 100644 automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py create mode 100644 automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py create mode 100644 automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py create mode 100644 automation_ide/automation_editor_ui/extend_ai_gui/skills/__init__.py rename automation_ide/automation_editor_ui/extend_ai_gui/{ => skills}/skills_send_gui.py (100%) diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py b/automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py index 1fff991..158817e 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py +++ b/automation_ide/automation_editor_ui/extend_ai_gui/ai_gui_global_variable.py @@ -4,8 +4,6 @@ FIRST_CODE_REVIEW_TEMPLATE from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.first_summary_prompt import \ FIRST_SUMMARY_TEMPLATE -from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.global_rule import \ - GLOBAL_RULE_TEMPLATE from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.linter import \ LINTER_TEMPLATE from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.total_summary import \ @@ -16,7 +14,6 @@ CODE_REVIEW_SKILL_TEMPLATE COT_TEMPLATE_FILES = [ - "global_rule.md", "first_summary_prompt.md", "first_code_review.md", "linter.md", @@ -25,7 +22,6 @@ ] COT_TEMPLATE_RELATION = { - "global_rule.md": GLOBAL_RULE_TEMPLATE, "first_summary_prompt.md": FIRST_SUMMARY_TEMPLATE, "first_code_review.md": FIRST_CODE_REVIEW_TEMPLATE, "linter.md": LINTER_TEMPLATE, diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/code_review/__init__.py b/automation_ide/automation_editor_ui/extend_ai_gui/code_review/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/cot_code_review_gui.py b/automation_ide/automation_editor_ui/extend_ai_gui/code_review/code_review_thread.py similarity index 51% rename from automation_ide/automation_editor_ui/extend_ai_gui/cot_code_review_gui.py rename to automation_ide/automation_editor_ui/extend_ai_gui/code_review/code_review_thread.py index 014dde5..62b07af 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/cot_code_review_gui.py +++ b/automation_ide/automation_editor_ui/extend_ai_gui/code_review/code_review_thread.py @@ -1,21 +1,13 @@ -import sys - +# Worker Thread 負責傳送資料 import requests from PySide6.QtCore import QThread, Signal -from PySide6.QtWidgets import ( - QApplication, QWidget, QVBoxLayout, QHBoxLayout, - QPushButton, QTextEdit, QLabel, QLineEdit, QComboBox, QMessageBox -) from je_editor import language_wrapper -from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_FILES, \ - COT_TEMPLATE_RELATION +from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_RELATION from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_code_review_prompt_templates.global_rule import \ build_global_rule_template -from automation_ide.automation_editor_ui.extend_multi_language.update_language_dict import update_language_dict -# Worker Thread 負責傳送資料 class SenderThread(QThread): update_response = Signal(str, str) # (filename, response) @@ -86,80 +78,4 @@ def run(self): reply_text = f"{language_wrapper.language_word_dict.get("cot_gui_error_sending")} {file} {e}" # 發送訊號更新 UI - self.update_response.emit(file, reply_text) - - -class CoTCodeReviewGUI(QWidget): - def __init__(self): - super().__init__() - self.setWindowTitle(language_wrapper.language_word_dict.get("cot_gui_window_title")) - - # 檔案清單 - self.files = COT_TEMPLATE_FILES - - # UI 元件 - layout = QVBoxLayout() - - # URL 輸入框 - url_layout = QHBoxLayout() - url_layout.addWidget(QLabel(language_wrapper.language_word_dict.get("cot_gui_label_api_url"))) - self.url_input = QLineEdit() - self.url_input.setPlaceholderText(language_wrapper.language_word_dict.get("cot_gui_placeholder_api_url")) - url_layout.addWidget(self.url_input) - layout.addLayout(url_layout) - - # 傳送資料區域 - self.code_paste_area = QTextEdit() - self.code_paste_area.setPlaceholderText( - language_wrapper.language_word_dict.get("cot_gui_placeholder_code_paste_area")) - layout.addWidget(QLabel(language_wrapper.language_word_dict.get("cot_gui_label_prompt_area"))) - layout.addWidget(self.code_paste_area) - - # 回傳區域 - self.response_selector = QComboBox() # 改用 ComboBox - self.response_view = QTextEdit() - self.response_view.setReadOnly(True) # 可複製但不可編輯 - - hbox_layout = QHBoxLayout() - hbox_layout.addWidget(self.response_selector, 2) - hbox_layout.addWidget(self.response_view, 5) - - layout.addWidget(QLabel(language_wrapper.language_word_dict.get("cot_gui_label_response_area"))) - layout.addLayout(hbox_layout) - - # 傳送按鈕 - self.send_button = QPushButton(language_wrapper.language_word_dict.get("cot_gui_button_send")) - layout.addWidget(self.send_button) - - self.setLayout(layout) - - # 綁定事件 - self.response_selector.currentTextChanged.connect(self.show_response) - self.send_button.clicked.connect(self.start_sending) - - # 儲存回覆 - self.responses = {} - - def show_response(self, filename): - if filename in self.responses: - self.response_view.setPlainText(self.responses[filename]) - - def start_sending(self): - # 取得 URL - url = self.url_input.text().strip() - if not url: - message_box = QMessageBox() - message_box.warning(self, "Warning", language_wrapper.language_word_dict.get("cot_gui_error_no_url")) - message_box.exec_() - return - - # 啟動傳送 Thread - self.thread = SenderThread(files=self.files, code=self.code_paste_area.toPlainText(), url=url) - self.thread.update_response.connect(self.handle_response) - self.thread.start() - - def handle_response(self, filename, response): - self.responses[filename] = response - self.response_selector.addItem(filename) # 加入 ComboBox - # 自動顯示最新回覆 - self.response_selector.setCurrentText(filename) + self.update_response.emit(file, reply_text) \ No newline at end of file diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/code_review/cot_code_review_gui.py b/automation_ide/automation_editor_ui/extend_ai_gui/code_review/cot_code_review_gui.py new file mode 100644 index 0000000..947e5ea --- /dev/null +++ b/automation_ide/automation_editor_ui/extend_ai_gui/code_review/cot_code_review_gui.py @@ -0,0 +1,82 @@ +from PySide6.QtWidgets import QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QTextEdit, QComboBox, QPushButton, \ + QMessageBox +from je_editor import language_wrapper + +from automation_ide.automation_editor_ui.extend_ai_gui.ai_gui_global_variable import COT_TEMPLATE_FILES +from automation_ide.automation_editor_ui.extend_ai_gui.code_review.code_review_thread import SenderThread + + +class CoTCodeReviewGUI(QWidget): + def __init__(self): + super().__init__() + self.setWindowTitle(language_wrapper.language_word_dict.get("cot_gui_window_title")) + + # 檔案清單 + self.files = COT_TEMPLATE_FILES + + # UI 元件 + layout = QVBoxLayout() + + # URL 輸入框 + url_layout = QHBoxLayout() + url_layout.addWidget(QLabel(language_wrapper.language_word_dict.get("cot_gui_label_api_url"))) + self.url_input = QLineEdit() + self.url_input.setPlaceholderText(language_wrapper.language_word_dict.get("cot_gui_placeholder_api_url")) + url_layout.addWidget(self.url_input) + layout.addLayout(url_layout) + + # 傳送資料區域 + self.code_paste_area = QTextEdit() + self.code_paste_area.setPlaceholderText( + language_wrapper.language_word_dict.get("cot_gui_placeholder_code_paste_area")) + layout.addWidget(QLabel(language_wrapper.language_word_dict.get("cot_gui_label_prompt_area"))) + layout.addWidget(self.code_paste_area) + + # 回傳區域 + self.response_selector = QComboBox() # 改用 ComboBox + self.response_view = QTextEdit() + self.response_view.setReadOnly(True) # 可複製但不可編輯 + + hbox_layout = QHBoxLayout() + hbox_layout.addWidget(self.response_selector, 2) + hbox_layout.addWidget(self.response_view, 5) + + layout.addWidget(QLabel(language_wrapper.language_word_dict.get("cot_gui_label_response_area"))) + layout.addLayout(hbox_layout) + + # 傳送按鈕 + self.send_button = QPushButton(language_wrapper.language_word_dict.get("cot_gui_button_send")) + layout.addWidget(self.send_button) + + self.setLayout(layout) + + # 綁定事件 + self.response_selector.currentTextChanged.connect(self.show_response) + self.send_button.clicked.connect(self.start_sending) + + # 儲存回覆 + self.responses = {} + + def show_response(self, filename): + if filename in self.responses: + self.response_view.setPlainText(self.responses[filename]) + + def start_sending(self): + # 取得 URL + url = self.url_input.text().strip() + if not url: + message_box = QMessageBox() + message_box.warning(self, "Warning", language_wrapper.language_word_dict.get("cot_gui_error_no_url")) + message_box.exec_() + return + + # 啟動傳送 Thread + self.thread = SenderThread(files=self.files, code=self.code_paste_area.toPlainText(), url=url) + self.thread.update_response.connect(self.handle_response) + self.thread.start() + + def handle_response(self, filename, response): + self.responses[filename] = response + self.response_selector.addItem(filename) # 加入 ComboBox + # 自動顯示最新回覆 + self.response_selector.setCurrentText(filename) diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py new file mode 100644 index 0000000..a536c06 --- /dev/null +++ b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge.py @@ -0,0 +1,91 @@ +JUDGE_TEMPLATE = """ +# Code Review Comment Evaluation Template (Enhanced) + +Please evaluate the review comments focusing on how well they address important issues in the code, especially leveraging code smell and linter messages. +The input may contain multiple independent review reports. + +Score range: 1–100 + +Five evaluation dimensions: +### 1. Readability + - 1–20: Comments are very hard to understand, poorly structured, confusing language. + - 21–40: Some parts are readable, but many unclear sections remain. + - 41–60: Comments are generally clear, but structure or phrasing needs improvement. + - 61–80: Comments are well-structured, consistent, and easy to follow. + - 81–100: Comments are highly readable, elegantly phrased, and well-organized. + +### 2. Constructiveness (Maintainability) + - 1–20: Comments lack constructive suggestions, no improvement direction. + - 21–40: Comments provide partial suggestions, but vague or impractical. + - 41–60: Comments offer basic improvement ideas, somewhat helpful. + - 61–80: Comments are specific and actionable, clearly guiding improvements. + - 81–100: Comments are highly constructive, offering clear and practical improvement paths. + +### 3. Correctness + - 1–20: Comments contain errors or misleading advice. + - 21–40: Mostly correct, but important issues are overlooked. + - 41–60: Largely correct, with only minor gaps. + - 61–80: Correct and reasonable, with small room for refinement. + - 81–100: Fully correct, logically sound, and precise in identifying issues. + +### 4. Multi-Review Coverage, Structural Independence & Extractability + + > Evaluate how well the comments cover important issues across multiple review reports, and whether each comment block is structurally independent, self-contained, and understandable on its own. + + #### Scoring Criteria + + - **1–20** + Rarely addresses important issues; structure is disorganized; comments heavily depend on surrounding context; blocks cannot be read independently; unclear linkage to specific code smells or linter messages. + + - **21–40** + Addresses some issues but misses many key points; unclear boundaries between sections; frequent cross-references required for understanding; difficult to isolate specific issue blocks. + + - **41–60** + Covers many important issues; basic structure is present; some blocks can be read independently, but certain sections still rely on context or lack completeness. + + - **61–80** + Most key issues are addressed; comment blocks are clearly structured with defined themes; most sections can be independently read and understood (problem + reasoning + suggestion); code smell / linter-related blocks are reasonably extractable. + + - **81–100** + Thoroughly addresses key issues; each comment block is **independent, complete, and self-contained** (including problem description, impact explanation, and actionable improvement suggestions); + clearly segmented structure; any block can be extracted without losing meaning; + strongly aligned with specific code smells or linter messages; highly readable and maintainable. + --- + ### Additional Evaluation Criteria + + When scoring this dimension, explicitly check whether each comment block: + - Has a clear title or thematic focus + - Clearly identifies the issue source (e.g., specific code smell or linter message) + - Explains impact or risk + - Provides concrete and actionable improvement suggestions + - Does not rely on other sections for comprehension + + Also assess whether: + - A single comment block can be extracted and shared independently without losing clarity + - Code smell or linter-related sections can be isolated for structured analysis + - Summary sections and detailed comments are clearly distinguished + +### 5. Comprehensiveness + - 1–20: Comments fail to address any code smells or linter findings. + - 21–40: Comments mention at least one code smell or linter warning. + - 41–60: Comments cover some code smells or linter findings. + - 61–80: Comments cover most code smells and linter findings. + - 81–100: Comments comprehensively address all code smells and linter findings, with improvement suggestions. + +Reviewers should: +- Assign a score (1–100) for each dimension. +- Provide brief reasoning for each score. +- Conclude with an average score and overall recommendation. + +## Review Comment: +{review_comment} + +## Code Smells: +{code_smell_detector_messages} + +## Linter Messages: +{linter_messages} + +## Origin code +{code_diff} +""" \ No newline at end of file diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py new file mode 100644 index 0000000..4e8ed8f --- /dev/null +++ b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/judge_single_review.py @@ -0,0 +1,85 @@ +JUDGE_SINGLE_REVIEW_TEMPLATE = """ +# Code Review Comment Evaluation Template (Enhanced) + +Please evaluate the review comments focusing on how well they address important issues in the code, especially leveraging code smell and linter messages. +The input may contain multiple independent review reports. + +Score range: 1–100 + +Five evaluation dimensions: +### 1. Readability + - 1–20: Comments are very hard to understand, poorly structured, confusing language. + - 21–40: Some parts are readable, but many unclear sections remain. + - 41–60: Comments are generally clear, but structure or phrasing needs improvement. + - 61–80: Comments are well-structured, consistent, and easy to follow. + - 81–100: Comments are highly readable, elegantly phrased, and well-organized. + +### 2. Constructiveness (Maintainability) + - 1–20: Comments lack constructive suggestions, no improvement direction. + - 21–40: Comments provide partial suggestions, but vague or impractical. + - 41–60: Comments offer basic improvement ideas, somewhat helpful. + - 61–80: Comments are specific and actionable, clearly guiding improvements. + - 81–100: Comments are highly constructive, offering clear and practical improvement paths. + +### 3. Correctness + - 1–20: Comments contain errors or misleading advice. + - 21–40: Mostly correct, but important issues are overlooked. + - 41–60: Largely correct, with only minor gaps. + - 61–80: Correct and reasonable, with small room for refinement. + - 81–100: Fully correct, logically sound, and precise in identifying issues. + +### 4. Multi-Review Coverage, Structural Independence & Extractability + + > Evaluate how well the comments cover important issues across multiple review reports, and whether each comment block is structurally independent, self-contained, and understandable on its own. + + #### Scoring Criteria + + - **1–20** + Rarely addresses important issues; structure is disorganized; comments heavily depend on surrounding context; blocks cannot be read independently; unclear linkage to specific code smells or linter messages. + + - **21–40** + Addresses some issues but misses many key points; unclear boundaries between sections; frequent cross-references required for understanding; difficult to isolate specific issue blocks. + + - **41–60** + Covers many important issues; basic structure is present; some blocks can be read independently, but certain sections still rely on context or lack completeness. + + - **61–80** + Most key issues are addressed; comment blocks are clearly structured with defined themes; most sections can be independently read and understood (problem + reasoning + suggestion); code smell / linter-related blocks are reasonably extractable. + + - **81–100** + Thoroughly addresses key issues; each comment block is **independent, complete, and self-contained** (including problem description, impact explanation, and actionable improvement suggestions); + clearly segmented structure; any block can be extracted without losing meaning; + strongly aligned with specific code smells or linter messages; highly readable and maintainable. + --- + ### Additional Evaluation Criteria + + When scoring this dimension, explicitly check whether each comment block: + - Has a clear title or thematic focus + - Clearly identifies the issue source (e.g., specific code smell or linter message) + - Explains impact or risk + - Provides concrete and actionable improvement suggestions + - Does not rely on other sections for comprehension + + Also assess whether: + - A single comment block can be extracted and shared independently without losing clarity + - Code smell or linter-related sections can be isolated for structured analysis + - Summary sections and detailed comments are clearly distinguished + +### 5. Comprehensiveness + - 1–20: Comments fail to address any code smells or linter findings. + - 21–40: Comments mention at least one code smell or linter warning. + - 41–60: Comments cover some code smells or linter findings. + - 61–80: Comments cover most code smells and linter findings. + - 81–100: Comments comprehensively address all code smells and linter findings, with improvement suggestions. + +Reviewers should: +- Assign a score (1–100) for each dimension. +- Provide brief reasoning for each score. +- Conclude with an average score and overall recommendation. + +## Review Comment: +{review_comment} + +## Origin code +{code_diff} +""" \ No newline at end of file diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py index 182539c..863794f 100644 --- a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py +++ b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/linter.py @@ -1,17 +1,17 @@ LINTER_TEMPLATE = """ -You are a strict code linter. -Your task is to analyze the given source code and produce structured linter_messages. -Follow these rules: + You are a strict code linter. + Your task is to analyze the given source code and produce structured linter_messages. + Follow these rules: -1. Do not rewrite or fix the code — only report issues. -2. Each linter_message must include: - - rule_id: A short identifier for the rule violated (e.g., "no-unused-vars"). - - severity: One of ["error", "warning", "info"]. - - message: A clear explanation of the issue. - - line: The line number where the issue occurs. - - suggestion: A concise recommendation for improvement. -3. If no issues are found, return an empty list. + 1. Do not rewrite or fix the code — only report issues. + 2. Each linter_message must include: + - rule_id: A short identifier for the rule violated (e.g., "no-unused-vars"). + - severity: One of ["error", "warning", "info"]. + - message: A clear explanation of the issue. + - line: The line number where the issue occurs. + - suggestion: A concise recommendation for improvement. + 3. If no issues are found, return an empty list. -Now analyze the following code: -{code_diff} + Now analyze the following code: + {code_diff} """ \ No newline at end of file diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py new file mode 100644 index 0000000..51f18c5 --- /dev/null +++ b/automation_ide/automation_editor_ui/extend_ai_gui/prompt_edit_gui/cot_code_review_prompt_templates/step_by_step_analysis.py @@ -0,0 +1,35 @@ +STEP_BY_STEP_ANALYSIS_TEMPLATE = """ +You are a code quality reviewer. +Analyze the code smell, and linter message step by step. + +Instructions: +1. **Identify the Issue** + - Restate the code smell or lint message in plain English. + - Explain what it means in the context of software engineering. + +2. **Root Cause Analysis** + - Describe why this issue occurs. + - Point out the underlying coding practice or design flaw. + +3. **Impact Assessment** + - Explain the potential risks (e.g., maintainability, readability, performance, security). + - Clarify how severe the issue is. + +4. **Suggested Fix** + - Provide a concise, actionable recommendation. + - If relevant, show a short code snippet with the corrected approach. + +5. **Best Practice Note** + - Mention a general guideline or principle (e.g., SOLID, DRY, naming conventions) that helps prevent similar issues. + +## Linter Result +{linter_result} + +## Code Smell Result +{code_smell_result} + +Output Format: +- Use numbered steps for each lint message or code smell. +- Keep explanations simple but professional. +- Provide examples where helpful. +""" diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/skills/__init__.py b/automation_ide/automation_editor_ui/extend_ai_gui/skills/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/automation_ide/automation_editor_ui/extend_ai_gui/skills_send_gui.py b/automation_ide/automation_editor_ui/extend_ai_gui/skills/skills_send_gui.py similarity index 100% rename from automation_ide/automation_editor_ui/extend_ai_gui/skills_send_gui.py rename to automation_ide/automation_editor_ui/extend_ai_gui/skills/skills_send_gui.py diff --git a/automation_ide/automation_editor_ui/menu/tools/tools_menu.py b/automation_ide/automation_editor_ui/menu/tools/tools_menu.py index b71ea7f..ea96aab 100644 --- a/automation_ide/automation_editor_ui/menu/tools/tools_menu.py +++ b/automation_ide/automation_editor_ui/menu/tools/tools_menu.py @@ -12,7 +12,7 @@ from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.cot_prompt_editor_widget import CoTPromptEditor from automation_ide.automation_editor_ui.extend_ai_gui.prompt_edit_gui.skills_prompt_editor_widget import \ SkillPromptEditor -from automation_ide.automation_editor_ui.extend_ai_gui.skills_send_gui import SkillsSendGUI +from automation_ide.automation_editor_ui.extend_ai_gui.skills.skills_send_gui import SkillsSendGUI if TYPE_CHECKING: from automation_ide.automation_editor_ui.editor_main.main_ui import AutomationEditor diff --git a/pyproject.toml b/pyproject.toml index 37c7fc5..1f6f46b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" [project] name = "automation_ide_dev" -version = "1.0.3" +version = "1.0.4" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] From 28675e0898999a34c62bfdce0e504b42f8dfe8ef Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Mon, 9 Mar 2026 14:16:42 +0800 Subject: [PATCH 2/3] Update stable version Update stable version --- stable.toml => dev.toml | 11 ++++++----- pyproject.toml | 9 ++++----- 2 files changed, 10 insertions(+), 10 deletions(-) rename stable.toml => dev.toml (86%) diff --git a/stable.toml b/dev.toml similarity index 86% rename from stable.toml rename to dev.toml index 9d6a392..1f6f46b 100644 --- a/stable.toml +++ b/dev.toml @@ -1,12 +1,12 @@ -# Rename to build stable version -# This is stable version +# Rename to dev version +# This is dev version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide" -version = "1.0.3" +name = "automation_ide_dev" +version = "1.0.4" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je-editor", "je_auto_control", "je_web_runner", + "je_editor_dev", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.2", "test_pioneer", "paramiko" ] @@ -35,5 +35,6 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" + [tool.setuptools.packages] find = { namespaces = false } diff --git a/pyproject.toml b/pyproject.toml index 1f6f46b..225c070 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,11 @@ -# Rename to dev version -# This is dev version +# Rename to build stable version +# This is stable version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide_dev" +name = "automation_ide" version = "1.0.4" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je_editor_dev", "je_auto_control", "je_web_runner", + "je-editor", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.2", "test_pioneer", "paramiko" ] @@ -35,6 +35,5 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" - [tool.setuptools.packages] find = { namespaces = false } From c4231a59326f9095dbd0ad63fd5b397f91d2b02a Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Fri, 13 Mar 2026 18:26:37 +0800 Subject: [PATCH 3/3] Update both version Update both version --- pyproject.toml | 9 +++++---- dev.toml => stable.toml | 9 ++++----- 2 files changed, 9 insertions(+), 9 deletions(-) rename dev.toml => stable.toml (88%) diff --git a/pyproject.toml b/pyproject.toml index 225c070..e3e3fda 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,11 +1,11 @@ -# Rename to build stable version -# This is stable version +# Rename to dev version +# This is dev version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide" +name = "PyBreeze_dev" version = "1.0.4" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je-editor", "je_auto_control", "je_web_runner", + "je_editor_dev", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.2", "test_pioneer", "paramiko" ] @@ -35,5 +35,6 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" + [tool.setuptools.packages] find = { namespaces = false } diff --git a/dev.toml b/stable.toml similarity index 88% rename from dev.toml rename to stable.toml index 1f6f46b..f38781a 100644 --- a/dev.toml +++ b/stable.toml @@ -1,11 +1,11 @@ -# Rename to dev version -# This is dev version +# Rename to build stable version +# This is stable version [build-system] requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "automation_ide_dev" +name = "PyBreeze" version = "1.0.4" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, @@ -14,7 +14,7 @@ description = "AutomationEditor for multi automation" requires-python = ">=3.10" license-files = ["LICENSE"] dependencies = [ - "je_editor_dev", "je_auto_control", "je_web_runner", + "je-editor", "je_auto_control", "je_web_runner", "je_load_density", "je_api_testka", "je-mail-thunder", "automation-file", "PySide6==6.10.2", "test_pioneer", "paramiko" ] @@ -35,6 +35,5 @@ Code = "https://github.com/Intergration-Automation-Testing/AutomationEditor" file = "README.md" content-type = "text/markdown" - [tool.setuptools.packages] find = { namespaces = false }