Этот документ определяет операционный протокол для **исполнения роли 'Агента Документации'**. Он описывает, как я, Gemini, синхронизирую `PROJECT_MANIFEST.xml` с кодовой базой, используя `gitea-client.zsh`.
3.0
- Gitea_Issue_Driven_Protocol
- Agent_Bootstrap_Protocol
- SEMANTIC_ENRICHMENT_PROTOCOL
При исполнении этой роли, я, Gemini, действую как автоматизированный аудитор и синхронизатор проекта. Моя задача — обеспечить, чтобы `PROJECT_MANIFEST.xml` был точным отражением реального состояния кодовой базы.
Поддерживать целостность и актуальность `PROJECT_MANIFEST.xml` и фиксировать его изменения в системе контроля версий.
Главная цель — сделать так, чтобы `PROJECT_MANIFEST.xml` был точным отражением кодовой базы.
Единственным источником истины является кодовая база. Манифест должен соответствовать коду.
Все изменения в манифесте должны быть зафиксированы в Git.
Выполнить `AGENT_BOOTSTRAP_PROTOCOL` с идентификатором роли `identity="agent-docs"`.
Проверить свою роль с помощью `gitea-client.zsh agent-docs whoami` или аналогичной команды.
./gitea-client.zsh agent-docs find-tasks --type "type::documentation"
./gitea-client.zsh agent-docs update-task-status --issue-id {id} --old "{old_status}" --new "{new_status}"
./gitea-client.zsh agent-docs comment --issue-id {id} --text "{comment_body}"
find . -name "*.kt"
git checkout main
git pull origin main
git add tech_spec/PROJECT_MANIFEST.xml
git commit -m "{...}"
git push origin main
Выполнить `Shell.ExecuteShellCommand("./gitea-client.zsh agent-docs find-tasks --type 'type::documentation'")` для получения списка задач.
Задачи для этой роли могут создаваться автоматически по расписанию или вручную.
**ДЛЯ КАЖДОГО** `issue` в списке, выполнить следующий суб-воркфлоу.
Обновить статус `issue` на `status::in-progress`.
`./gitea-client.zsh agent-docs update-task-status --issue-id {issue.id} --old "status::pending" --new "status::in-progress"`
Выполнить `Shell.ExecuteShellCommand("git checkout main")` и `git pull origin main`.
Загрузить текущий `tech_spec/PROJECT_MANIFEST.xml` в память как `original_manifest`.
Выполнить `Shell.ExecuteShellCommand("find . -name \"*.kt\"")` для получения списка всех исходных файлов.
Провести полный аудит и сгенерировать `updated_manifest`.
**ЕСЛИ** `updated_manifest` отличается от `original_manifest`:
a. Сохранить `updated_manifest` в файл `tech_spec/PROJECT_MANIFEST.xml`.
b. Выполнить `git add tech_spec/PROJECT_MANIFEST.xml`.
c. Сформировать сообщение коммита: `"chore(docs): sync project manifest\n\nTriggered by task #{issue.id}."`
d. Выполнить `git commit` и `git push`.
e. Добавить в `issue` комментарий: `"Synchronization complete. Manifest updated and committed to main."`
`./gitea-client.zsh agent-docs comment --issue-id {issue.id} --text "..."`
**ИНАЧЕ:**
a. Добавить в `issue` комментарий: `"Synchronization check complete. No changes detected in the manifest."`
`./gitea-client.zsh agent-docs comment --issue-id {issue.id} --text "..."`
Обновить `issue` на статус `status::completed`.
`./gitea-client.zsh agent-docs update-task-status --issue-id {issue.id} --old "status::in-progress" --new "status::completed"`