diff --git a/agent_promts/implementations/filesystem_task_channel.xml b/agent_promts/implementations/filesystem_task_channel.xml deleted file mode 100644 index dddb439..0000000 --- a/agent_promts/implementations/filesystem_task_channel.xml +++ /dev/null @@ -1,74 +0,0 @@ - - - - - - Реализует канал управления задачами через локальную файловую систему. - Задачи хранятся как файлы в директории `tasks/`. - - - - Сканировать директорию `tasks/`. - Найти первый файл, содержащий `status="pending"` и метку роли `{RoleName}`. - Если найден, вернуть содержимое файла. Иначе, вернуть `NULL`. - - - - Создать новый XML-файл в директории `tasks/`. - Имя файла: `{Timestamp}_{Title}.xml`. - Содержимое файла должно включать `Title`, `Body`, `Assignee`, `Labels` и `status="pending"`. - - - - Найти файл задачи по `{IssueID}` (имени файла). - Заменить в файле `status="{OldStatus}"` на `status="{NewStatus}"`. - - - - Найти файл задачи по `{IssueID}`. - Добавить в конец файла XML-блок `{CommentBody}`. - - - - - [FileSystemTaskChannel] INFO: Операция 'CreatePullRequest' не поддерживается файловым протоколом. Пропущено. - Title: {Title}, Head: {HeadBranch}, Base: {BaseBranch} - - - - - - [FileSystemTaskChannel] INFO: Операция 'MergeAndComplete' не поддерживается файловым протоколом. Пропущено. - IssueID: {IssueID}, PrID: {PrID} - - - - - - [FileSystemTaskChannel] INFO: Операция 'ReturnToDev' не поддерживается файловым протоколом. Пропущено. - IssueID: {IssueID}, PrID: {PrID} - - - - - - [FileSystemTaskChannel] INFO: Операция 'CommitChanges' не поддерживается файловым протоколом. Пропущено. - Commit Message: {CommitMessage} - - - - - - [FileSystemTaskChannel] INFO: Операция 'CreateBranch' не поддерживается файловым протоколом. Пропущено. - Branch Name: {BranchName} - - - - - - [FileSystemTaskChannel] INFO: Операция 'CommitChanges' не поддерживается файловым протоколом. Пропущено. - Commit Message: {CommitMessage} - - - - diff --git a/agent_promts/implementations/gitea_task_channel.xml b/agent_promts/implementations/gitea_task_channel.xml deleted file mode 100644 index 5842fcf..0000000 --- a/agent_promts/implementations/gitea_task_channel.xml +++ /dev/null @@ -1,69 +0,0 @@ - - - - - - - Реализует канал управления задачами через Gitea, используя `gitea-client.zsh`. - - - - - Выполнить команду `./gitea-client.zsh {RoleName} find-tasks --type "{TaskType}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} create-task --title "{Title}" --body "{Body}" --assignee "{Assignee}" --labels "{Labels}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} update-task-status --issue-id {IssueID} --old "{OldStatus}" --new "{NewStatus}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} create-pr --title "{Title}" --body "{Body}" --head "{HeadBranch}" --base "{BaseBranch}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} merge-and-complete --issue-id {IssueID} --pr-id {PrID} --branch "{BranchToDelete}"`. - - - - - - Выполнить команду `./gitea-client.zsh {RoleName} return-to-dev --issue-id {IssueID} --pr-id {PrID} --report "{DefectReport}"`. - - - - - - - - ACTION: AddComment. Issue: {IssueID}, Body: {CommentBody} - - - - - Выполнить `git add .`. - Выполнить `git commit -m "{CommitMessage}"`. - Выполнить `git push origin {CurrentBranch}`. - - - - Выполнить `git checkout -b {BranchName}`. - - - - Выполнить `git add .`. - Выполнить `git commit -m "{CommitMessage}"`. - Выполнить `git push origin {CurrentBranch}`. - - diff --git a/agent_promts/implementations/xml_file_log_sink.xml b/agent_promts/implementations/xml_file_log_sink.xml deleted file mode 100644 index 88ac553..0000000 --- a/agent_promts/implementations/xml_file_log_sink.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Реализует канал логирования путем дозаписи в файл 'logs/communication_log.xml'. - - - - LogMessage - - Сформировать XML-блок `` на основе `LogMessage`. - - - Добавить (append) сформированный блок в файл `/home/busya/dev/homebox_lens/logs/communication_log.xml`. - - - diff --git a/agent_promts/implementations/xml_file_metrics_sink.xml b/agent_promts/implementations/xml_file_metrics_sink.xml deleted file mode 100644 index d84765d..0000000 --- a/agent_promts/implementations/xml_file_metrics_sink.xml +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Реализует канал для метрик путем дозаписи в файл 'logs/metrics_log.xml'. - - - - MetricsBundle - - Сформировать XML-блок `` на основе `MetricsBundle`. - - - Добавить (append) сформированный блок в файл `/home/busya/dev/homebox_lens/logs/metrics_log.xml`. - - - diff --git a/agent_promts/interfaces/log_sink_interface.xml b/agent_promts/interfaces/log_sink_interface.xml deleted file mode 100644 index 1f7b0dc..0000000 --- a/agent_promts/interfaces/log_sink_interface.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/agent_promts/interfaces/metrics_sink_interface.xml b/agent_promts/interfaces/metrics_sink_interface.xml deleted file mode 100644 index 9199991..0000000 --- a/agent_promts/interfaces/metrics_sink_interface.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - diff --git a/agent_promts/interfaces/task_channel_interface.xml b/agent_promts/interfaces/task_channel_interface.xml deleted file mode 100644 index 6059f1f..0000000 --- a/agent_promts/interfaces/task_channel_interface.xml +++ /dev/null @@ -1,43 +0,0 @@ - - - - Абстрактный контракт для канала взаимодействия с системой управления задачами. - Определяет все необходимые операции для полного жизненного цикла задачи. - - - - Находит следующую доступную задачу для указанной роли и типа. - - - - Создает новую задачу. - - - - Атомарно изменяет статус задачи. - - - - Создает Pull Request. - - - - Атомарно сливает PR, удаляет ветку и закрывает связанную задачу. - - - - Отклоняет PR и возвращает задачу разработчику с отчетом о дефектах. - - - - Добавляет комментарий к задаче. - - - - Создает новую ветку в системе контроля версий. - - - - Фиксирует все текущие изменения в рабочей директории. - - diff --git a/agent_promts/knowledge_base/ai_friendly_logging.xml b/agent_promts/knowledge_base/ai_friendly_logging.xml deleted file mode 100644 index 78fae1b..0000000 --- a/agent_promts/knowledge_base/ai_friendly_logging.xml +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - Каждая значимая операция, проверка контракта или изменение состояния ДОЛЖНЫ - сопровождаться структурированной записью в лог для обеспечения полной - трассируемости и отлаживаемости. - - - Структурированные логи превращают поток выполнения программы из "черного ящика" - в машиночитаемый и анализируемый артефакт, связывая рантайм-поведение - со статическим кодом через якоря. - - - - - - - Все вызовы логгера должны соответствовать формату [LEVEL][ANCHOR][STATE]... - - Нарушен структурный формат лога. Ожидается: [LEVEL][ANCHOR][STATE] message. - - - - - Данные должны передаваться как аргументы, а не через строковую интерполяцию (запрещено использовать '$' в строке лога). - - Обнаружена строковая интерполяция ('$') в сообщении лога. Передавайте данные как аргументы. - - - - - Прямые вызовы логгера (logger.*, Timber.*) запрещены в модуле :domain. - - Обнаружен прямой вызов логгера в модуле :domain, что нарушает принципы чистой архитектуры. - - - - \ No newline at end of file diff --git a/agent_promts/knowledge_base/design_by_contract.xml b/agent_promts/knowledge_base/design_by_contract.xml deleted file mode 100644 index 6324852..0000000 --- a/agent_promts/knowledge_base/design_by_contract.xml +++ /dev/null @@ -1,55 +0,0 @@ - - - - - - Каждая публичная сущность должна иметь формальный KDoc-контракт, а предусловия - и постусловия должны быть реализованы в коде через require/check. - - - Это устраняет двусмысленность, предотвращает ошибки по принципу 'Fail-Fast' - и делает код самодокументируемым и предсказуемым. - - - - - - - Публичные функции и классы должны иметь полный KDoc-контракт. - - - - - - - - - - Отсутствует обязательный KDoc-тег контракта. - - - - - Предусловия, описанные в @param, должны проверяться через require(). - - Предусловие (@param) задекларировано в KDoc, но не проверяется с помощью require() в коде. - - - - - Постусловия, описанные в @return, должны проверяться через check(). - - Постусловие (@return) задекларировано в KDoc, но не проверяется с помощью check() в коде. - - - - - \ No newline at end of file diff --git a/agent_promts/knowledge_base/graphrag_optimization.xml b/agent_promts/knowledge_base/graphrag_optimization.xml deleted file mode 100644 index 039cc2c..0000000 --- a/agent_promts/knowledge_base/graphrag_optimization.xml +++ /dev/null @@ -1,55 +0,0 @@ - - Код должен содержать явный, машиночитаемый граф знаний в виде семантических якорей [ENTITY] и [RELATION]. - Это делает архитектуру, зависимости и потоки данных очевидными и запрашиваемыми без необходимости в сложных инструментах статического анализа. - - - - - Блок семантической разметки ([ENTITY]/[RELATION]) должен предшествовать KDoc-контракту. - - - Нарушен порядок блоков: блок разметки ([ENTITY]/[RELATION]) должен быть определен ПЕРЕД KDoc-контрактом. - - - - - Тип сущности в якоре [ENTITY] должен принадлежать к предопределенной таксономии. - - ModuleClassInterfaceObject - DataClassSealedInterfaceEnumClassFunction - UseCaseViewModelRepositoryDataStructure - DatabaseTableApiEndpoint - - Использован невалидный тип сущности в якоре [ENTITY]. - - - - - Якоря [RELATION] должны соответствовать формату семантического триплета и использовать валидные типы связей. - \w+)'\('(?P.*?)'\)\s*->\s*\[(?P\w+)\]\s*->\s*\['(?P\w+)'\('(?P.*?)'\)\]]]> - - CALLSCREATES_INSTANCE_OFINHERITS_FROMIMPLEMENTS - READS_FROMWRITES_TOMODIFIES_STATE_OFDEPENDS_ON - DISPATCHES_EVENTOBSERVESTRIGGERSEMITS_STATECONSUMES_STATE - - Якорь [RELATION] имеет неверный формат или использует невалидный тип связи. - - - - - Вся семантическая разметка ([ENTITY] и [RELATION]) для одной сущности должна быть сгруппирована в единый непрерывный блок комментариев. - Нарушена целостность блока разметки: обнаружены строки кода или пустые строки между якорями [ENTITY] и [RELATION]. - - - - \ No newline at end of file diff --git a/agent_promts/knowledge_base/kotlin/comments_and_kdoc.md b/agent_promts/knowledge_base/kotlin/comments_and_kdoc.md deleted file mode 100644 index e69de29..0000000 diff --git a/agent_promts/knowledge_base/kotlin/naming_conventions.md b/agent_promts/knowledge_base/kotlin/naming_conventions.md deleted file mode 100644 index 27d5cfa..0000000 --- a/agent_promts/knowledge_base/kotlin/naming_conventions.md +++ /dev/null @@ -1,82 +0,0 @@ -# Соглашения об именовании в Kotlin для AI - -Этот документ определяет соглашения об именовании для написания кода на Kotlin. Четкие и описательные имена критически важны для того, чтобы AI мог понять назначение элементов кода без необходимости в обширных комментариях или анализе. - -## 1. Общий принцип: Ясность и Описательность - -**Правило:** Имена ДОЛЖНЫ быть описательными и четко сообщать о назначении переменной, функции, класса или другой конструкции. Избегай однобуквенных имен (за исключением простых счетчиков циклов или параметров лямбда-выражений) и сокращений. - -**Действие:** -- **Хорошо:** `val userProfile = getUserProfile()` -- **Плохо:** `val u = getUP()` -- **Хорошо:** `fun sendEmailToPrimarySubscriber()` -- **Плохо:** `fun email()` - -**Обоснование:** AI в значительной степени полагается на имена для вывода смысла и назначения кода. Описательные имена предоставляют сильные семантические сигналы, уменьшая двусмысленность и вероятность неверной интерпретации. - -## 2. Имена пакетов - -**Правило:** Имена пакетов ДОЛЖНЫ быть в `lowercase` и не должны использовать подчеркивания (`_`) или другие специальные символы. Несколько слов должны быть соединены вместе. - -**Действие:** -- **Хорошо:** `com.homebox.lens.user.profile` -- **Плохо:** `com.homebox.lens.user_profile` - -**Обоснование:** Это стандартное соглашение в мире Java и Kotlin. Его соблюдение обеспечивает консистентность. - -## 3. Имена классов и интерфейсов - -**Правило:** Имена классов и интерфейсов ДОЛЖНЫ быть в `PascalCase`. - -**Действие:** -- **Хорошо:** `class UserProfile` -- **Хорошо:** `interface UserRepository` -- **Плохо:** `class user_profile` - -**Обоснование:** `PascalCase` является стандартом для типов. Это позволяет AI немедленно отличать типы от переменных или функций. - -## 4. Имена функций - -**Правило:** Имена функций ДОЛЖНЫ быть в `camelCase`. Обычно они должны быть глаголами или глагольными фразами. - -**Действие:** -- **Хорошо:** `fun getUserProfile()` -- **Хорошо:** `fun calculateTotalPrice()` -- **Плохо:** `fun UserProfile()` -- **Плохо:** `fun total_price()` - -**Обоснование:** `camelCase` является стандартом для функций. Использование глаголов помогает AI понять, что функция выполняет действие. - -## 5. Имена переменных и свойств - -**Правило:** Имена переменных и свойств ДОЛЖНЫ быть в `camelCase`. - -**Действие:** -- **Хорошо:** `val userName: String` -- **Хорошо:** `var isVisible: Boolean` -- **Плохо:** `val UserName: String` -- **Плохо:** `val is_visible: Boolean` - -**Обоснование:** Консистентность с именами функций. - -## 6. Имена для Boolean - -**Правило:** Имена для `Boolean` переменных или функций, возвращающих `Boolean`, ДОЛЖНЫ начинаться с глаголов "is", "has" или "should". - -**Действие:** -- **Хорошо:** `val isVisible: Boolean` -- **Хорошо:** `fun hasPendingChanges(): Boolean` -- **Плохо:** `val visible: Boolean` -- **Плохо:** `fun pendingChanges(): Boolean` - -**Обоснование:** Это соглашение делает булеву логику намного яснее и менее двусмысленной для AI. Имя читается как вопрос, чем, по сути, и является булево условие. - -## 7. Имена констант - -**Правило:** Константы (свойства, определенные в `companion object` или свойства верхнего уровня с `const val`) ДОЛЖНЫ быть в `UPPER_SNAKE_CASE`. - -**Действие:** -- **Хорошо:** `const val MAX_RETRIES = 3` -- **Плохо:** `const val maxRetries = 3` - -**Обоснование:** Это сильное и общепризнанное соглашение, сигнализирующее о том, что значение является константой. diff --git a/agent_promts/knowledge_base/kotlin/style_and_formatting.md b/agent_promts/knowledge_base/kotlin/style_and_formatting.md deleted file mode 100644 index e69de29..0000000 diff --git a/agent_promts/knowledge_base/semantic_linting.xml b/agent_promts/knowledge_base/semantic_linting.xml deleted file mode 100644 index a71ace5..0000000 --- a/agent_promts/knowledge_base/semantic_linting.xml +++ /dev/null @@ -1,133 +0,0 @@ - - - - Этот документ является единственным источником истины для правил, которые должны - соблюдаться в кодовой базе. Он используется как для автоматизированной валидации - (Python-скриптом), так и в качестве инструкции для LLM-агентов. - - - - - Каждый `.kt` файл ДОЛЖЕН начинаться со стандартного заголовка из трех якорей, за которым следует объявление package. - Заголовок служит 'паспортом' файла, позволяя инструментам мгновенно понять его расположение, имя и назначение. - - - .*?)\n//\s*\[FILE\]\s*(?P.*?)\n//\s*\[SEMANTICS\]\s*(?P.*)]]> - - - - - Содержимое якоря [SEMANTICS] ДОЛЖНО состоять из ключевых слов, выбранных из предопределенного списка (таксономии). - Устраняет неоднозначность и обеспечивает консистентность тегирования по всему проекту. - - - - uidomaindatapresentation - - - viewmodelusecaserepositoryservicescreencomponentdialogmodelentityactivityapplicationnav_hostcontrollernavigation_drawerscaffolddashboarditemlabellocationsetupthemedependenciescustom_fieldstatisticsimageattachmentitem_creationitem_detaileditem_summaryitem_updatesummaryupdate - - - networkingdatabasecachingauthenticationvalidationparsingstate_managementnavigationditestingentrypointhilttimbercomposeactionsroutescommoncolor_selectionloadinglistdetailseditlabel_managementlabels_listdialog_managementlocationssealed_stateparallel_data_loadingtimber_loggingdialogcolortypographybuilddata_transfer_objectdtoapiitem_creationitem_detaileditem_summaryitem_updatecreatemappercountuser_setupauthentication_flow - - - sealed_classsealed_interface - - - ui_logicui_statedata_modelimmutable - - - - - - Каждая ключевая сущность (class, interface, fun и т.д.) ДОЛЖНА быть обернута в парные якоря [ENTITY]...[END_ENTITY]. - Превращает плоский текстовый файл в иерархическое дерево семантических узлов для надежного парсинга AI-инструментами. - - - \w+)\('(?P.*?)'\)\]]]> - - - ) : LabelsListUiState -// [END_ENTITY: DataClass('Success')] - ]]> - - - Крупные, не относящиеся к конкретной сущности блоки файла, также должны быть обернуты в парные якоря. - Четко разграничивает секции файла, позволяя инструментам работать с ними изолированно (например, 'добавить новый импорт в блок IMPORTS'). - - - // [IMPORTS]// [END_IMPORTS] - // [CONTRACT]// [END_CONTRACT] - - - - - - - Каждый файл должен заканчиваться специальным закрывающим якорем, который сигнализирует о его полном завершении. - Служит надежным маркером конца файла, защищая от случайного усечения и упрощая парсинг. - - - - - - - - Традиционные, 'человеческие' комментарии (`// ...` или `/* ... */`) КАТЕГОРИЧЕСКИ ЗАПРЕЩЕНЫ. - Такие комментарии являются 'семантическим шумом' для AI, неструктурированы и не могут быть использованы для автоматического анализа. - - - - - - - - Единственным исключением из правила 'NoStrayComments' является специальный, структурированный якорь для заметок между AI-агентами. - Позволяет оставлять пояснения к сложным архитектурным решениям в машиночитаемом формате. - - - - - - - - \ No newline at end of file diff --git a/agent_promts/protocols/semantic_enrichment_protocol.md b/agent_promts/protocols/semantic_enrichment_protocol.md new file mode 100644 index 0000000..29b88d6 --- /dev/null +++ b/agent_promts/protocols/semantic_enrichment_protocol.md @@ -0,0 +1,111 @@ +# Протокол Семантического Обогащения (Semantic Enrichment Protocol) +**Версия: 1.1** + +## Описание +Этот документ является единственным источником истины для правил, которые должны соблюдаться в кодовой базе. Он используется как для автоматизированной валидации, так и в качестве инструкции для LLM-агентов. + +--- + +## Правила + +### 1. Целостность Заголовка Файла (`FileHeaderIntegrity`) +Каждый `.kt` файл ДОЛЖЕН начинаться со стандартного заголовка из двух якорей, за которым следует объявление `package`. Заголовок служит 'паспортом' файла. + +**Пример:** +```kotlin +// [FILE] YourFileName.kt +// [SEMANTICS] ui, viewmodel, state_management + +package com.example.your.package.name +``` + +### 2. Таксономия Семантических Ключевых Слов (`SemanticKeywordTaxonomy`) +Содержимое якоря `[SEMANTICS]` ДОЛЖНО состоять из ключевых слов, выбранных из предопределенного списка (таксономии). + +**Допустимые значения:** +* **Layer:** `ui`, `domain`, `data`, `presentation` +* **Component:** `viewmodel`, `usecase`, `repository`, `service`, `screen`, `component`, `dialog`, `model`, `entity`, `activity`, `application`, `nav_host`, `controller`, `navigation_drawer`, `scaffold`, `dashboard`, `item`, `label`, `location`, `setup`, `theme`, `dependencies`, `custom_field`, `statistics`, `image`, `attachment`, `item_creation`, `item_detailed`, `item_summary`, `item_update`, `summary`, `update` +* **Concern:** `networking`, `database`, `caching`, `authentication`, `validation`, `parsing`, `state_management`, `navigation`, `di`, `testing`, `entrypoint`, `hilt`, `timber`, `compose`, `actions`, `routes`, `common`, `color_selection`, `loading`, `list`, `details`, `edit`, `label_management`, `labels_list`, `dialog_management`, `locations`, `sealed_state`, `parallel_data_loading`, `timber_logging`, `dialog`, `color`, `typography`, `build`, `data_transfer_object`, `dto`, `api`, `item_creation`, `item_detailed`, `item_summary`, `item_update`, `create`, `mapper`, `count`, `user_setup`, `authentication_flow` +* **LanguageConstruct:** `sealed_class`, `sealed_interface` +* **Pattern:** `ui_logic`, `ui_state`, `data_model`, `immutable` + +### 3. Якоря Сущностей (`Anchors`) +Каждая ключевая сущность (class, interface, fun и т.д.) ДОЛЖНА быть обернута в парные якоря для навигации и консолидации семантики. + +**Синтаксис:** +- **Открывающий якорь:** `// [ANCHOR:id:type]` +- **Закрывающий якорь:** `// [END_ANCHOR:id]` + +**Пример:** +```kotlin +// [ANCHOR:Success:DataClass] +/** + * @summary Состояние успеха... + */ +data class Success(val labels: List