gennady 0.5.1-next.3 → 0.6.0

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.
Files changed (191) hide show
  1. package/README.md +145 -108
  2. package/{.ai → dist/.ai}/agents/agent-review-verifier.xml +44 -21
  3. package/dist/assistant/music/music-filter.d.ts +7 -0
  4. package/dist/chunks/agent/agent-keywords-prompt.md +3 -0
  5. package/{src/prompts → dist/chunks}/commit/commit-changeset-prompt.md +5 -1
  6. package/{src/prompts → dist/chunks}/commit/commit-message-prompt.md +5 -1
  7. package/dist/chunks/help.cmd-CWasx25o.js +24 -0
  8. package/dist/chunks/index-5xIgwwKx.js +97 -0
  9. package/dist/chunks/index-B4m0-PAT.js +159 -0
  10. package/dist/chunks/index-B5bA2T7A.js +119 -0
  11. package/dist/chunks/index-B63fYXL2.js +7 -0
  12. package/dist/chunks/index-C0andxna.js +7 -0
  13. package/dist/chunks/index-CNbmXK8M.js +3548 -0
  14. package/dist/chunks/index-Dqe1TdW4.js +265 -0
  15. package/dist/chunks/index-iqg0w_pE.js +109 -0
  16. package/{src/prompts → dist/chunks}/review/review-base-prompt.md +15 -5
  17. package/dist/chunks/run-review-command.logic-a_M3CkeZ.js +267 -0
  18. package/dist/chunks/services-Sb7TwLxt.js +122 -0
  19. package/dist/chunks/shared-BgLzFWMH.js +577 -0
  20. package/dist/cli/cmd/_shared/prompt/io/load-agent-template.io.d.ts +7 -0
  21. package/dist/cli/cmd/_shared/prompt/logic/build-ai-first-knowledge-block.logic.d.ts +7 -0
  22. package/dist/cli/cmd/_shared/prompt/logic/build-ai-verify-placeholders.logic.d.ts +16 -0
  23. package/dist/cli/cmd/_shared/prompt/logic/verify-commands/resolve-verify-commands.logic.d.ts +1 -0
  24. package/dist/cli/cmd/cat/cat.cmd.d.ts +2 -0
  25. package/dist/cli/cmd/cat/index.d.ts +1 -0
  26. package/dist/cli/cmd/commit/commit.cmd.d.ts +2 -0
  27. package/dist/cli/cmd/commit/index.d.ts +1 -0
  28. package/dist/cli/cmd/help/help.cmd.d.ts +1 -0
  29. package/dist/cli/cmd/resolve-conflicts/_core/io/resolve-conflicts-template-load.io.d.ts +6 -0
  30. package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-args-parse.logic.d.ts +8 -0
  31. package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-run.logic.d.ts +9 -0
  32. package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-context-git-build.logic.d.ts +10 -0
  33. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-artifact.type.d.ts +9 -0
  34. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-args.type.d.ts +8 -0
  35. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-result.type.d.ts +11 -0
  36. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-context-git.type.d.ts +29 -0
  37. package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-artifact-build.xml.d.ts +16 -0
  38. package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-render.xml.d.ts +8 -0
  39. package/dist/cli/cmd/resolve-conflicts/index.d.ts +1 -0
  40. package/dist/cli/cmd/resolve-conflicts/resolve-conflicts.cmd.d.ts +2 -0
  41. package/dist/cli/cmd/review/_core/io/load-review-verify-template.io.d.ts +6 -0
  42. package/dist/cli/cmd/review/_core/logic/build-ai-first-knowledge-block.logic.d.ts +1 -0
  43. package/dist/cli/cmd/review/_core/logic/build-ai-verify-placeholders.logic.d.ts +2 -0
  44. package/dist/cli/cmd/review/_core/logic/build-review-context-git.logic.d.ts +8 -0
  45. package/dist/cli/cmd/review/_core/logic/build-review-context-vcs.logic.d.ts +9 -0
  46. package/dist/cli/cmd/review/_core/logic/load-review-context-mr.logic.d.ts +17 -0
  47. package/dist/cli/cmd/review/_core/logic/parse-review-command-args.logic.d.ts +8 -0
  48. package/dist/cli/cmd/review/_core/logic/resolve-review-intent.logic.d.ts +9 -0
  49. package/dist/cli/cmd/review/_core/logic/run-review-command.logic.d.ts +9 -0
  50. package/dist/cli/cmd/review/_core/logic/verify-commands/resolve-verify-commands.logic.d.ts +1 -0
  51. package/dist/cli/cmd/review/_core/types/review-artifact.type.d.ts +11 -0
  52. package/dist/cli/cmd/review/_core/types/review-command-args.type.d.ts +12 -0
  53. package/dist/cli/cmd/review/_core/types/review-command-mode.type.d.ts +5 -0
  54. package/dist/cli/cmd/review/_core/types/review-command-options.type.d.ts +10 -0
  55. package/dist/cli/cmd/review/_core/types/review-command-result.type.d.ts +11 -0
  56. package/dist/cli/cmd/review/_core/types/review-context-git.type.d.ts +9 -0
  57. package/dist/cli/cmd/review/_core/types/review-context-mr.type.d.ts +51 -0
  58. package/dist/cli/cmd/review/_core/types/review-context-vcs.type.d.ts +10 -0
  59. package/dist/cli/cmd/review/_core/types/review-intent.type.d.ts +17 -0
  60. package/dist/cli/cmd/review/_core/xml/build-review-artifact.xml.d.ts +20 -0
  61. package/dist/cli/cmd/review/_core/xml/render-review-issues.xml.d.ts +7 -0
  62. package/dist/cli/cmd/review/_core/xml/render-review-verify.xml.d.ts +8 -0
  63. package/dist/cli/cmd/review/index.d.ts +1 -0
  64. package/dist/cli/cmd/review/review-issues.cmd.d.ts +2 -0
  65. package/dist/cli/cmd/review/review-verify.cmd.d.ts +2 -0
  66. package/dist/cli/cmd/review/review.cmd.d.ts +2 -0
  67. package/dist/cli/cmd/review-issues/index.d.ts +1 -0
  68. package/dist/cli/cmd/review-verify/index.d.ts +1 -0
  69. package/dist/cli/cmd/vcs-reply/index.d.ts +1 -0
  70. package/dist/cli/cmd/vcs-reply/vcs-reply.cmd.d.ts +33 -0
  71. package/dist/cli/gennady.d.ts +2 -0
  72. package/dist/cli/index.d.ts +1 -0
  73. package/dist/cli/utils/ai-legacy/ai-legacy-agent.d.ts +23 -0
  74. package/dist/cli/utils/ai-legacy/ai-legacy-core.d.ts +57 -0
  75. package/dist/cli/utils/ai-legacy/ai-legacy-model.d.ts +60 -0
  76. package/dist/cli/utils/cat-gen/cat-gen.d.ts +32 -0
  77. package/dist/cli/utils/commit-gen/commit-gen.d.ts +55 -0
  78. package/dist/cli/utils/prompts/index.d.ts +14 -0
  79. package/dist/cli/utils/review-gen/review-gen.d.ts +50 -0
  80. package/dist/gennady.js +28 -0
  81. package/dist/index.d.ts +5 -0
  82. package/dist/index.js +163 -0
  83. package/dist/services/ai-client/ai-client.d.ts +1 -0
  84. package/dist/services/ai-client/providers/ai-model.type.d.ts +33 -0
  85. package/dist/services/ai-client/providers/open-router/open-router-model.type.d.ts +29 -0
  86. package/dist/services/ai-client/providers/open-router/open-router-provider.d.ts +9 -0
  87. package/dist/services/ai-client/providers/openai-like-provider.d.ts +2 -0
  88. package/dist/services/data-ore/telegram/telegram-data-ore.d.ts +11 -0
  89. package/dist/services/data-ore/telegram/telegram-data-ore.types.d.ts +5 -0
  90. package/dist/services/data-ore/telegram/telegram-demo-music-helper.d.ts +9 -0
  91. package/dist/services/data-ore/telegram/telegram-demo.d.ts +2 -0
  92. package/dist/services/dbc/parser/dbc-parser.types.d.ts +65 -0
  93. package/dist/services/dbc/parser/implementations/jsdoc/dbc-jsdoc-parser.d.ts +79 -0
  94. package/dist/services/logger/logger.d.ts +16 -0
  95. package/dist/services/vcs-client/abstract/vcs-client-merge-discussions.d.ts +51 -0
  96. package/dist/services/vcs-client/abstract/vcs-client-merge-requests.d.ts +45 -0
  97. package/dist/services/vcs-client/abstract/vcs-client.d.ts +13 -0
  98. package/dist/services/vcs-client/entities/vcs-user.type.d.ts +4 -0
  99. package/dist/services/vcs-client/gitlab/vcs-gitlab-client.d.ts +24 -0
  100. package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-discussions.d.ts +30 -0
  101. package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-requests.d.ts +27 -0
  102. package/dist/shared/backend/git/git-core.d.ts +61 -0
  103. package/dist/shared/backend/git/git-diff.d.ts +34 -0
  104. package/dist/shared/backend/rc/rc-config.d.ts +51 -0
  105. package/{src/utils/exec.js → dist/shared/common/exec.d.ts} +3 -13
  106. package/{src/utils/files.js → dist/shared/common/files.d.ts} +1 -4
  107. package/dist/shared/common/language.d.ts +14 -0
  108. package/dist/shared/common/logger.d.ts +6 -0
  109. package/dist/shared/common/parse-args.d.ts +10 -0
  110. package/dist/shared/common/style.d.ts +11 -0
  111. package/dist/shared/common/think.d.ts +6 -0
  112. package/dist/shared/common/tokens.d.ts +6 -0
  113. package/dist/shared/common/unguard.d.ts +14 -0
  114. package/dist/shared/common/xml.d.ts +40 -0
  115. package/package.json +36 -12
  116. package/.ai/agents/architecture.xml +0 -8
  117. package/.ai/agents/discovery.xml +0 -12
  118. package/.ai/agents/qacoder.xml +0 -8
  119. package/.ai/docs/README.md +0 -10
  120. package/.ai/docs/ai-icl.md +0 -604
  121. package/.ai/docs/ai-priming.md +0 -614
  122. package/.ai/docs/ai-protocol-structural-prompting-v1.md +0 -225
  123. package/.ai/fw/v1/architecture/blueprint-factory.xml +0 -77
  124. package/.ai/fw/v1/core/mental-model.xml +0 -50
  125. package/.ai/fw/v1/discovery/intent-reactor.xml +0 -92
  126. package/.ai/fw/v1/production/swarm-protocol.xml +0 -122
  127. package/.ai/fw/v1/review/quality-pipeline.xml +0 -102
  128. package/.ai/fw-draft/README.md +0 -78
  129. package/.ai/fw-draft/bin/discovery.sh +0 -116
  130. package/.ai/fw-draft/gennady.xml +0 -58
  131. package/.ai/fw-draft/provider/claude.xml +0 -16
  132. package/.ai/fw-draft/provider/cursor.xml +0 -23
  133. package/.ai/fw-draft/provider/default.xml +0 -12
  134. package/.ai/fw-draft/roles/developer.xml +0 -18
  135. package/.ai/fw-draft/router.xml +0 -39
  136. package/.ai/fw-draft/routes/development.xml +0 -32
  137. package/.ai/fw-draft/routes/universal.xml +0 -58
  138. package/.ai/fw-draft/rules/dev/base/file-structure-rules.xml +0 -89
  139. package/.ai/fw-draft/rules/dev/typescript/contacts.xml +0 -198
  140. package/.nvmrc +0 -1
  141. package/AGENTS.md +0 -63
  142. package/cli/cmd/agent.js +0 -27
  143. package/cli/cmd/cat.js +0 -84
  144. package/cli/cmd/commit.js +0 -77
  145. package/cli/cmd/review-verify/index.js +0 -1
  146. package/cli/cmd/review-verify/review-verify.cmd.js +0 -123
  147. package/cli/cmd/review-verify/review-verify.xml.js +0 -157
  148. package/cli/cmd/review.js +0 -58
  149. package/cli/cmd/vcs-reply/index.js +0 -16
  150. package/cli/cmd/vcs-reply/vcs-reply.cmd.js +0 -143
  151. package/cli/gennady.js +0 -37
  152. package/index.d.ts +0 -3
  153. package/index.js +0 -8
  154. package/scripts/publish-next.js +0 -250
  155. package/src/ai/ai-agent.js +0 -49
  156. package/src/ai/ai-agent.test.js +0 -25
  157. package/src/ai/ai-core.js +0 -125
  158. package/src/ai/ai-model.d.ts +0 -37
  159. package/src/ai/ai-model.js +0 -266
  160. package/src/ai/ai-model.test.js +0 -113
  161. package/src/cat-gen/cat-gen.js +0 -103
  162. package/src/commit-gen/commit-gen.js +0 -141
  163. package/src/git/git-core.js +0 -124
  164. package/src/git/git-diff.js +0 -175
  165. package/src/prompts/emoji/emoji.md +0 -9
  166. package/src/prompts/index.js +0 -13
  167. package/src/rc/rc-config.d.ts +0 -30
  168. package/src/rc/rc-config.js +0 -122
  169. package/src/rc/rc-config.test.js +0 -61
  170. package/src/review-gen/__fixture__/review-gen-fixture.md +0 -110
  171. package/src/review-gen/review-gen.js +0 -119
  172. package/src/review-gen/review-gen.test.js +0 -79
  173. package/src/review-verifier/README.arch.md +0 -61
  174. package/src/utils/language.js +0 -43
  175. package/src/utils/parse-args.js +0 -32
  176. package/src/utils/style.js +0 -84
  177. package/src/utils/think.js +0 -11
  178. package/src/utils/tokens.js +0 -4
  179. package/src/utils/unguard.d.ts +0 -9
  180. package/src/utils/unguard.js +0 -56
  181. package/src/utils/xml.js +0 -108
  182. package/src/vcs-client/gitlab/vcs-gitlab-client.js +0 -35
  183. package/src/vcs-client/gitlab/vcs-merge-discussions.js +0 -76
  184. package/src/vcs-client/gitlab/vcs-merge-requests.js +0 -42
  185. package/tsconfig.json +0 -39
  186. /package/{src/review-gen → dist/chunks}/specs/js/Function.prototype.json +0 -0
  187. /package/{src/review-gen → dist/chunks}/specs/js/Global.json +0 -0
  188. /package/{src/review-gen → dist/chunks}/specs/js/JSON.json +0 -0
  189. /package/{src/review-gen → dist/chunks}/specs/js/Object.json +0 -0
  190. /package/{src/review-gen → dist/chunks}/specs/js/Object.prototype.json +0 -0
  191. /package/{src/review-gen → dist/chunks}/specs/js/Storage.json +0 -0
package/README.md CHANGED
@@ -1,173 +1,210 @@
1
- 🤖 Gennadyᵇᵉᵗᵃ 🗯️
2
- -----------------
1
+ ## 🤖 Gennadyᵇᵉᵗᵃ 🗯️
2
+
3
3
  **GEN**eral **E**xtensible **N**eural **N**etwork **A**daptive **D**ata **Y**ntelligence.
4
4
 
5
+ CLI-инструмент для работы с git-изменениями, merge-конфликтами и GitLab review-пайплайном.
6
+
7
+ ---
8
+
9
+ ## ⚡ Быстрый старт
10
+
5
11
  ```bash
6
- # Generate commit message
7
- npx gennady
12
+ # Справка
13
+ npx gennady help
8
14
 
9
- # Code review for staged changes
10
- npx gennady review
15
+ # По умолчанию показывается справка
16
+ npx gennady
11
17
 
12
- # Display file contents
13
- npx gennady cat <path1> <path2> ...
18
+ # Commit запускается только явно
19
+ npx gennady commit
14
20
  ```
15
21
 
16
22
  ---
17
23
 
18
- ### Features
19
-
20
- - 🤖 [**Commit Message**](#-commit-messages): Generate clear, descriptive git commit messages from staged changes
21
- - 📝 [**Code Review**](#-code-review): Review staged changes for critical issues (logic, runtime, security)
22
- - 🐱 [**cat**](#-cat): Display file contents with markdown/XML formatting
24
+ ## 🧩 Что нужно в окружении
23
25
 
24
- ---
26
+ - Node.js `22+`
27
+ - Git-репозиторий (для команд с git-контекстом)
28
+ - Для GitLab-команд: `GITLAB_PERSONAL_TOKEN`
25
29
 
26
- ## 🔖 Usage Overview
30
+ ```bash
31
+ # Обязательно для review-verify / review-issues / vcs-reply (live)
32
+ export GITLAB_PERSONAL_TOKEN="<token>"
27
33
 
28
- Gennady provides three main CLI commands:
29
- - `npx gennady` — Generate commit messages from staged git changes
30
- - `npx gennady review` — Review staged changes for critical issues
31
- - `npx gennady cat <path1> <path2> ...` — Display file contents
34
+ # Опционально (default: /api/v4)
35
+ export GITLAB_API_PATH="/api/v4"
36
+ ```
32
37
 
33
38
  ---
34
39
 
35
- ## 🤖 Commit Messages
36
-
37
- ```sh
38
- # Basic usage
39
- npx gennady
40
+ ## 🧭 Команды CLI
40
41
 
41
- # Generate oneline commit message
42
- npx gennady --mode=oneline
42
+ ### 📝 `commit`
43
43
 
44
- # Generate detailed commit message
45
- npx gennady --mode=detailed
44
+ Генерация commit message из staged-изменений.
46
45
 
47
- # Generate detailed commit message relative to the target branch
48
- npx gennady --branch=develop
46
+ ```bash
47
+ npx gennady commit
48
+ npx gennady commit --mode=oneline
49
+ npx gennady commit --branch=develop
50
+ npx gennady commit --task=MAILCORE-123
51
+ npx gennady commit --apply
49
52
  ```
50
53
 
51
- ### Options
52
- | Option | Alias(es) | Description |
53
- |-------------------|------------------|----------------------------------------------|
54
- | `--mode` | `-m` | Set the mode (`auto`, `oneline`, `detailed`) |
55
- | `--oneline` | `--short`, `-o` | Generate a one-line commit message |
56
- | `--model` | | Specify the AI model |
57
- | `--branch` | `-b` | Target branch for diff |
58
- | `--apply` | | Immediately apply the generated commit message to git |
59
-
54
+ **Опции:**
60
55
 
61
- #### What Happens?
62
- - Gennady analyzes your staged changes.
63
- - It generates a commit message.
64
- - If your system language isn't English, it translates the message for you.
56
+ - `--mode`, `-m`: `auto | oneline | detailed`
57
+ - `--oneline`, `--short`, `--one`, `-o`: форсировать one-line
58
+ - `--branch`, `-b`: target branch для diff
59
+ - `--task`, `-t`: добавить task id в subject
60
+ - `--model`: модель AI backend
61
+ - `--api`, `--apiUrl`: URL AI API
62
+ - `--apply`: сразу выполнить `git commit` с сгенерированным текстом
65
63
 
66
64
  ---
67
65
 
66
+ ### 🔍 `review`
68
67
 
69
- ## 📝 Code Review
68
+ Проверка staged-изменений на критичные проблемы.
70
69
 
71
- Review staged changes for critical issues.
72
-
73
- ```sh
70
+ ```bash
74
71
  npx gennady review
75
-
76
- # Review relative to a specific branch
77
72
  npx gennady review --branch=develop
78
73
  ```
79
74
 
80
- #### Options
81
- | Option | Alias(es) | Description |
82
- |-----------|-----------|--------------------------|
83
- | `--branch` | `-b` | Target branch for diff |
75
+ **Опции:**
76
+
77
+ - `--branch`, `-b`: ветка для сравнения
78
+
79
+ ---
80
+
81
+ ### 🐱 `cat`
82
+
83
+ Вывод файлов в `XML` или `Markdown`.
84
+
85
+ ```bash
86
+ npx gennady cat ./src
87
+ npx gennady cat "./src/**/*.ts" --output=md
88
+ npx gennady cat ./src --plain
89
+ ```
90
+
91
+ **Опции:**
84
92
 
85
- #### What Happens?
86
- - Analyzes staged changes
87
- - Checks for critical issues in added/modified lines (logic, runtime, security)
88
- - Outputs `GOOD` if no issues found, or structured issue list
93
+ - `--output`, `-o`: `xml` (по умолчанию) или `md`
94
+ - `--plain`: без ANSI-цветов
95
+ - `--exclude`, `-e`: исключить паттерны
96
+ - `--ext`: фильтр по расширениям
89
97
 
90
98
  ---
91
99
 
92
- ## 🐱 cat
100
+ ### `review-verify`
93
101
 
94
- Display file contents with optional markdown or XML formatting.
102
+ Собирает prompt для верификации discussion-тредов Merge Request (GitLab).
95
103
 
96
- ```sh
97
- npx gennady cat ./src/
104
+ ```bash
105
+ # Автоопределение MR по текущей ветке
106
+ npx gennady review-verify
98
107
 
99
- # Output as markdown
100
- npx gennady cat ./src/ --output=md
108
+ # По URL
109
+ npx gennady review-verify "https://gitlab.example.com/group/project/-/merge_requests/123"
110
+ npx gennady review-verify --url="https://gitlab.example.com/group/project/-/merge_requests/123"
101
111
 
102
- # Output as XML
103
- npx gennady cat ./src/ --output=xml
112
+ # По ref
113
+ npx gennady review-verify group/project!123
114
+ npx gennady review-verify --ref=group/project!123
104
115
 
105
- # Copy without color codes
106
- npx gennady cat ./src/ --plain | pbcopy
116
+ # Явно project + iid
117
+ npx gennady review-verify --project=group/project --iid=123
107
118
  ```
108
119
 
109
- #### Options
110
- | Option | Alias(es) | Description |
111
- |---------------|---------------|--------------------------|
112
- | `--output` | `-o` | Format: `md` or `xml` |
113
- | `--plain` | | Output without colors |
114
- | `--exclude` | `-e` | Patterns to exclude |
115
- | `--ext` | | File extensions to include |
120
+ **Опции:**
121
+
122
+ - `--branch`, `-b`: branch-режим
123
+ - `--url`: URL merge request
124
+ - `--ref`: `<project>!<iid>`
125
+ - `--project`: путь GitLab-проекта
126
+ - `--iid`: IID merge request
127
+ - `--all`: включать resolved discussions
128
+
129
+ Примечание: поддерживается GitLab-host (`*gitlab*` в host).
116
130
 
117
131
  ---
118
132
 
119
- ## Setup LLM
133
+ ### 📄 `review-issues`
120
134
 
121
- ### Local
135
+ Как `review-verify`, но возвращает только XML-артефакт issues.
122
136
 
123
- ```sh
124
- brew install ollama
125
- ollama pull llama3:8b
126
- ollama serve
137
+ ```bash
138
+ npx gennady review-issues
139
+ npx gennady review-issues --ref=group/project!123
127
140
  ```
128
141
 
142
+ **Опции:** те же, что у `review-verify`.
143
+
129
144
  ---
130
145
 
131
- ### External
146
+ ### 🧠 `resolve-conflicts`
132
147
 
133
- Create `~/.gennadyrc` configuration file:
148
+ Собирает prompt для AI-разрешения merge-конфликтов с ветвлением по confidence (auto-resolve или диалог с оператором).
134
149
 
135
- ```json
136
- {
137
- "models": [
138
- {
139
- "model": "gpt-3.5-turbo-0125",
140
- "url": "https://api.openai.com/v1/chat/completions",
141
- "key": "...",
142
- },
143
- {
144
- "model": "llama3:8b",
145
- "url": "http://127.0.0.1:11434/api/generate",
146
- }
147
- ]
148
- }
150
+ ```bash
151
+ # Нужно активное merge-состояние и конфликтующие файлы
152
+ npx gennady resolve-conflicts
153
+
154
+ # Опциональные override-метки веток
155
+ npx gennady resolve-conflicts --branch=main --incoming=feature/refactor-x
149
156
  ```
150
157
 
151
- ---
158
+ **Опции:**
152
159
 
153
- ## 🔌 API
160
+ - `--branch`, `-b`: override для current branch label
161
+ - `--incoming`: override для incoming branch label
154
162
 
155
- Gennady provides a JavaScript/TypeScript API for programmatic use.
163
+ Важно: команда **не делает** `git commit`, она печатает prompt.
156
164
 
157
- ### Installation
165
+ ---
166
+
167
+ ### 💬 `vcs-reply`
168
+
169
+ Постинг ответов в GitLab MR discussions из JSON-массива через `stdin`.
158
170
 
159
171
  ```bash
160
- npm install gennady
172
+ echo '[{"discussionId":"123","body":"✅ Fixed"}]' | \
173
+ npx gennady vcs-reply --project=group/project --iid=123
174
+
175
+ # Проверка без отправки
176
+
177
+ echo '[{"discussionId":"123","body":"✅ Fixed"}]' | \
178
+ npx gennady vcs-reply --project=group/project --iid=123 --dry-run
161
179
  ```
162
180
 
163
- ### Exports
181
+ **Опции:**
182
+
183
+ - `--project`: путь GitLab-проекта
184
+ - `--iid`: IID merge request
185
+ - `--dry-run`, `--dry`: не отправлять, только показать dry-run вывод
164
186
 
165
- - `AiModel`: Core AI model interface
166
- - `GennadyRc`: Configuration management
167
- - `unguard`: Error handling utilities
187
+ **Формат stdin:**
188
+
189
+ ```json
190
+ [{ "discussionId": "<discussion-id>", "body": "<reply markdown>" }]
191
+ ```
192
+
193
+ ---
168
194
 
169
- See source code for detailed JSDoc documentation.
195
+ ## 🛠️ Типовые сценарии
170
196
 
171
- ## 🎉 Happy Coding with Gennady!
197
+ ### 1. Верификация MR
172
198
 
173
- > Made with 🤖 by Konstantin Lebedev
199
+ ```bash
200
+ export GITLAB_PERSONAL_TOKEN="<token>"
201
+ npx gennady review-verify --ref=group/project!123
202
+ ```
203
+
204
+ ### 2. Разрешение merge-конфликтов
205
+
206
+ ```bash
207
+ git merge feature/some-branch
208
+ # если есть конфликты
209
+ npx gennady resolve-conflicts
210
+ ```
@@ -20,11 +20,10 @@
20
20
  <Axiom id="AX_TRUST_VERIFY">**Trust, but Verify.** Ревьюер дает гипотезу. Код дает факты. Верь только коду.</Axiom>
21
21
  <Axiom id="AX_CONTEXT_KING">**Context is King.** Ошибка в вакууме может быть фичей в контексте бизнес-логики.</Axiom>
22
22
  <Axiom id="AX_EVIDENCE">**Evidence over Opinion.** Любое решение требует ссылки на доку, стандарт или код.</Axiom>
23
- <Axiom id="AX_PRAGMATIC_TDD">**Pragmatic TDD.** Есть тесты? Сначала Red, потом Green. Нет тестов? Не городи огород, используй `npm run check`.</Axiom>
23
+ <Axiom id="AX_PRAGMATIC_TDD">**Pragmatic TDD.** Есть тесты? Сначала Red, потом Green. Нет тестов? Не городи огород, используй <!--ai:verify-axiom-hint-->.</Axiom>
24
24
  <Axiom id="AX_CLARITY">**Clarity is Product.** Твой продукт — это понятный план, который я могу утвердить или отвергнуть.</Axiom>
25
+ <Axiom id="AX_OPERATOR_LANGUAGE">Все сообщения оператору (план, вопросы, отчёты, ответы) формулируй на русском языке. Английский допустим только для кода, команд, идентификаторов и терминов.</Axiom>
25
26
  </Belief_State>
26
- <Thinking_Protocol>
27
- </Thinking_Protocol>
28
27
  <Tool_Usage_Policy>
29
28
  <Tool_Agnosticism>
30
29
  Ты работаешь в среде с богатым инструментарием (Cursor, Claude Code, IDE).
@@ -37,7 +36,7 @@
37
36
  <Secondary_Tools>
38
37
  **Terminal / Bash.** Используй терминал (`ls`, `grep`, `find`, `cat`) в двух случаях:
39
38
  1. Нативные инструменты не дали результата или недоступны.
40
- 2. Нужно выполнить специфическую команду (`npm run test`, `git commit`, `npx gennady`).
39
+ 2. Нужно выполнить специфическую команду (<!--ai:verify-tools-example-->).
41
40
  </Secondary_Tools>
42
41
  <Verification_Tools>
43
42
  **Web Search.** Используй для проверки документации, если внутренней базы знаний недостаточно.
@@ -52,28 +51,33 @@
52
51
  <Step id="STEP_1_INGESTION">
53
52
  <Goal>Загрузить контекст задачи.</Goal>
54
53
  <Action>
55
- Проанализируй `<Review_Audit_Artifact>` в разделе данных.
56
- Составь внутренний реестр дискуссий (Discussion Vectors).
54
+ <!--ai:first-->
55
+ Проанализируй `<MR_Audit_Context>` в разделе данных.
56
+ Сфокусируйся на тегах `<Review_Threads>` и вложенных `<Thread>`.
57
+ Для каждого `<Thread>` зафиксируй:
58
+ - атрибуты `id`, `file`, `line`;
59
+ - последовательность сообщений `<Author uid="...">` и `<Reviewer uid="...">`.
57
60
  </Action>
58
61
  </Step>
59
62
  <Step id="STEP_2_DEEP_DIVE_INVESTIGATION">
60
63
  <Goal>Собрать доказательную базу (Evidence).</Goal>
61
64
  <Action>
62
- Для КАЖДОГО вектора дискуссии:
63
- 1. **Locate & Read:** Используй нативные инструменты (`read_file`) или терминал, чтобы получить содержимое файла из `<Code_Locus>`.
64
- 2. **Context Expansion:** Если код ссылается на неизвестные функции/типы — используй `search_codebase` (или `grep`), чтобы найти их определения. Не гадай по именам!
65
+ Для КАЖДОГО `<Thread>`:
66
+ 1. **Locate & Read:** Открой файл из атрибута `file` и используй `line` как опорную строку.
67
+ 2. **Context Expansion:** Если код ссылается на неизвестные функции/типы — используй `search_codebase` (или `grep`), чтобы найти их определения.
65
68
  3. **Test Discovery:** Найди тесты (`*.test.ts`) через поиск файлов. Прочитай их, чтобы понять текущее покрытие.
66
69
  4. **External Verify:** Если проблема касается поведения библиотеки или стандарта — используй `web_search` для подтверждения фактов.
67
70
  </Action>
68
71
  </Step>
69
72
  <Step id="STEP_3_PLANNING_AND_NEGOTIATION">
73
+ <Precondition>STEP_2_DEEP_DIVE_INVESTIGATION завершён, по каждому `<Thread>` собраны проверяемые факты.</Precondition>
70
74
  <Goal>Согласовать действия с пользователем.</Goal>
71
75
  <Action>
72
76
  Сформируй **План Верификации** в формате Markdown.
73
77
 
74
78
  **ФОРМАТ ОТЧЕТА (Строго соблюдай):**
75
79
 
76
- # 📝 План Верификации для [MR_ID]
80
+ # 📝 План Верификации для `<MR_PROJECT_PATH>!<MR_IID>` (ver_<num>)
77
81
 
78
82
  ## ⭕ Отклонённые замечания (No Action Required)
79
83
  ### ⭕ **[SHORT_ID]**: Краткое название
@@ -95,36 +99,53 @@
95
99
 
96
100
  ---
97
101
 
98
- **СТОП-ФАКТОР:**
99
- Выведи этот план и **ОСТАНОВИСЬ**.
100
- Напиши: "Жду вашего решения. Вы можете написать 'ОК' для старта или указать ID для изменения статуса (например: '[SHORT_ID] - отклонить, это не баг')."
102
+ **СТОП после плана (обязательно):**
103
+ 1. Выведи отчёт целиком и **остановись** — не переходи к коду и не к черновикам ответов без явного выбора пользователя.
104
+ 2. Определи, какой **Case** в следующем блоке Switch соответствует твоему отчёту (ровно один). В конце отчёта перечисли **только** варианты из этого Case — простыми формулировками, без лишних синонимов команд.
105
+
106
+ <Switch exclusive="true" purpose="Ветвление ответа пользователя после Плана Верификации">
107
+ <Case when="В секции «План исправлений» есть хотя бы один пункт">
108
+ - **Согласен, делай по плану** → `OK` / `Confirm` / `Run` или явная фраза «выполняй план». Переход: STEP_4.
109
+ - **Поправить план** → пользователь указывает `[SHORT_ID]` и желаемое изменение (например: не баг — убрать из исправлений; наоборот баг — перенести в исправления; уточнить шаги). Пересобери план и снова остановись на STEP_3.
110
+ </Case>
111
+ <Case when="Исправлений нет: все замечания в «Отклонённые» и секция «План исправлений» пуста">
112
+ - **Оспорить NOFIX** → `[SHORT_ID]`: всё-таки баг или улучшение, взять в работу. Обнови классификацию; при появлении исправлений — новый план и снова STOP на STEP_3.
113
+ - **Отвечать без кода** → явный запрос на черновики ответов (например: «к ответам», «формируй ответы», `Draft`). Зафиксируй: коммита не будет. Переход: STEP_6, **минуя** STEP_4–5.
114
+ </Case>
115
+ </Switch>
116
+
117
+ В конце сообщения пользователю — **короткий нумерованный список** «что написать дальше»; пункты только из выбранного Case.
101
118
  </Action>
102
119
  </Step>
103
120
  <Step id="STEP_4_CODING_AND_VERIFICATION">
121
+ <Precondition>STEP_3_PLANNING_AND_NEGOTIATION завершён, пользователь согласовал выполнение плана (`OK` / `Confirm` / `Run` или эквивалент), и в плане есть пункты к исправлению.</Precondition>
104
122
  <Trigger>Получено согласие пользователя на План.</Trigger>
105
123
  <Goal>Внести изменения и проверить их, но НЕ фиксировать.</Goal>
106
124
  <Action>
107
125
  1. **Edit:** Используй нативные инструменты (`edit_file`) для внесения изменений согласно плану.
108
- 2. **Verify:** Запусти локальные проверки (`npm run test`, `npm run lint`, `npm run check`).
126
+ 2. **Verify:** <!--ai:verify-step-commands-->
109
127
  3. **Report:** Сообщи пользователю: "Изменения внесены. Результаты тестов: [PASS/FAIL]".
110
128
  4. **Propose Commit:** Предложи текст коммита (Conventional Commits), например: `fix(logger): mask sensitive data in logs`.
111
129
  5. **STOP:** Жди команды на коммит.
112
130
  </Action>
113
131
  </Step>
114
132
  <Step id="STEP_5_COMMIT_NEGOTIATION">
133
+ <Precondition>STEP_4_CODING_AND_VERIFICATION завершён, изменения и результаты верификации представлены пользователю.</Precondition>
115
134
  <Trigger>Пользователь проверил код и одобрил текст коммита.</Trigger>
116
135
  <Goal>Зафиксировать изменения в git и отправить их в удаленный репозиторий.</Goal>
117
136
  <Action>
118
137
  1. Если пользователь попросил правки — вернись на шаг назад.
119
- 2. Если пользователь сказал "Коммить" — выполни `git commit -m "..."` через терминал.
138
+ 2. Если пользователь сказал "Commit" — выполни `git commit -m "..."` через терминал.
120
139
  3. Сразу после успешного коммита выполни `git push origin HEAD` через терминал.
121
140
  4. Сообщи: "Коммит создан и отправлен в удаленный репозиторий. Перехожу к подготовке ответов."
122
141
  </Action>
123
142
  </Step>
124
143
  <Step id="STEP_6_RESPONSE_DRAFTING">
144
+ <Precondition>STEP_5_COMMIT_NEGOTIATION завершён успешно либо зафиксировано, что изменений для коммита нет.</Precondition>
125
145
  <Goal>Подготовить и согласовать тексты для VCS (Gitlab/Github).</Goal>
126
146
  <Action>
127
- Сформируй черновики ответов для КАЖДОГО вектора (и FIXED, и NOFIX).
147
+ Сформируй черновики ответов для КАЖДОГО треда (и FIXED, и NOFIX).
148
+ Важно: это AI-to-AI коммуникация; формулируй объяснения через семантически насыщенные токены, передавай максимум релевантного смысла при минимальном количестве токенов.
128
149
 
129
150
  **Формат для согласования:**
130
151
 
@@ -134,14 +155,16 @@
134
155
  > **Draft for [SHORT_ID] (NOFIX):**
135
156
  > 🦾 ⭕️ **NOFIX**. Поведение прокси является ожидаемым для библиотеки `tessell`. См. документацию: [ссылка].
136
157
 
137
- **STOP:** Выведи эти тексты и жди подтверждения ("Отправляй" или правки текстов).
158
+ **STOP:** Выведи эти тексты и жди подтверждения ("Send" или правки текстов).
138
159
  </Action>
139
160
  </Step>
140
161
  <Step id="STEP_7_FINAL_TRANSMISSION">
141
162
  <Trigger>Пользователь утвердил тексты ответов.</Trigger>
142
163
  <Goal>Отправить данные в систему.</Goal>
143
164
  <Action>
144
- 1. Сформируй финальный JSON-массив.
165
+ 1. Выполни preflight-проверку: `git status --porcelain`.
166
+ - Если вывод не пустой и STEP_5_COMMIT_NEGOTIATION не подтверждён как успешный, остановись и сообщи пользователю, что нужен шаг STEP_5_COMMIT_NEGOTIATION.
167
+ 2. Сформируй финальный JSON-массив.
145
168
  Пример структуры:
146
169
  ```json
147
170
  [
@@ -149,9 +172,9 @@
149
172
  { "discussionId": "<FULL_ID>", "body": "🦾 ⭕️ **NOFIX**..." }
150
173
  ]
151
174
  ```
152
- 2. Выполни команду отправки:
153
- `echo '<JSON_ARRAY>' | npx gennady@next vcs-reply --host=<VCS_HOST> --project=<MR_PROJECT> --iid=<MR_IID>`
154
- 3. Заверши сессию.
175
+ 3. Выполни команду отправки (рекомендация используй escalation `sandbox_permissions=require_escalated` для избегания проблем с registry):
176
+ `echo '<JSON_ARRAY>' | npx --yes gennady@next vcs-reply --host=<VCS_HOST> --project=<MR_PROJECT_PATH> --iid=<MR_IID>`
177
+ 4. Выведи short summary о результатах работы и отправки. В самом конце — отдельной строкой полный URL на merge request (GitLab) или pull request (GitHub): определи VCS по `host`, возьми ссылку из `<Meta><URL>` в `<MR_Audit_Context>` или собери из `host` / `target_repo` / `iid` по обычным правилам этих платформ.
155
178
  </Action>
156
179
  </Step>
157
180
  </Execution_Plan>
@@ -0,0 +1,7 @@
1
+ /**
2
+ * @purpose Heuristic filter to detect whether free-form text is likely about music releases or sound.
3
+ * @param text Input text to analyse.
4
+ * @note Supports both Russian and English music-related heuristics.
5
+ * @returns True if the text is likely about music, false otherwise.
6
+ */
7
+ export declare function isLikelyAboutMusic(text: string): boolean;
@@ -0,0 +1,3 @@
1
+ # Keywords
2
+
3
+ Extract and suggest relevant keywords for the given context.
@@ -1,9 +1,11 @@
1
1
  ### DIFF TO ANALYZE:
2
+
2
3
  <diff langs="{languages}">
3
4
  {input}
4
5
  </diff>
5
6
 
6
7
  ### INSTRUCTIONS:
8
+
7
9
  - The entire response must be a single <changeset> tag.
8
10
  - Inside <changeset>, you must include one or more <change> tags.
9
11
  - Each <change> tag must have a 'type' attribute (one of: feat, fix, refactor, chore, docs, style, test, perf).
@@ -11,6 +13,7 @@
11
13
  - The output language must be English.
12
14
 
13
15
  ### EXAMPLE:
16
+
14
17
  <diff>
15
18
  - const unguard = (result) => {
16
19
  + export const unguard = (result) => {
@@ -25,4 +28,5 @@
25
28
  </output>
26
29
 
27
30
  ### TASK:
28
- Analyze the <diff/> and generate a list of changes. Your ONLY <output> MUST be a single XML block starting with <changeset> and ending with </changeset>. Do NOT output any other text, comments, or explanations.
31
+
32
+ Analyze the <diff/> and generate a list of changes. Your ONLY <output> MUST be a single XML block starting with <changeset> and ending with </changeset>. Do NOT output any other text, comments, or explanations.
@@ -1,9 +1,11 @@
1
1
  ### CHANGESET TO ANALYZE:
2
+
2
3
  <changeset>
3
4
  {input}
4
5
  </changeset>
5
6
 
6
7
  ### INSTRUCTIONS:
8
+
7
9
  - The entire response must be a single <message> tag.
8
10
  - The <message> tag must have two attributes: 'type' and 'icon'.
9
11
  - To determine the 'type' attribute, analyze all <change> tags and select the most significant type based on this exact priority hierarchy: feat > fix > perf > refactor > style > docs > test > chore.
@@ -21,6 +23,7 @@
21
23
  - The goal is to provide a meaningful overview of the impact, especially for large changesets.
22
24
 
23
25
  ### EXAMPLE:
26
+
24
27
  <changeset>
25
28
  <change type="feat">export unguard function</change>
26
29
  <change type="fix">replace SECRET_KEY with PUBLIC_KEY</change>
@@ -39,4 +42,5 @@
39
42
  </output>
40
43
 
41
44
  ### TASK:
42
- Analyze the <changeset/> and generate a summarized, high-level git commit message. Your ONLY <output> MUST be a single XML block starting with <message> and ending with </message>. Do NOT output any other text, comments, or explanations.
45
+
46
+ Analyze the <changeset/> and generate a summarized, high-level git commit message. Your ONLY <output> MUST be a single XML block starting with <message> and ending with </message>. Do NOT output any other text, comments, or explanations.
@@ -0,0 +1,24 @@
1
+ console.info("Gennady CLI");
2
+ console.info("");
3
+ console.info("Usage:");
4
+ console.info(" npx gennady [command] [options]");
5
+ console.info("");
6
+ console.info("Commands:");
7
+ console.info(" commit Generate commit message from staged changes");
8
+ console.info(" review Review staged changes for critical issues");
9
+ console.info(" cat Display file contents as XML or Markdown");
10
+ console.info(" agent Run AI agent request");
11
+ console.info(" vcs-reply Post replies to GitLab MR discussions from stdin");
12
+ console.info(" review-verify Build verification prompt from open GitLab MR or GitHub PR");
13
+ console.info(
14
+ " review-issues Build XML issues artifact from GitLab MR or GitHub PR discussions"
15
+ );
16
+ console.info(
17
+ " resolve-conflicts Build confidence-aware merge-conflict resolution prompt from active git merge"
18
+ );
19
+ console.info("");
20
+ console.info("Examples:");
21
+ console.info(" npx gennady");
22
+ console.info(" npx gennady commit");
23
+ console.info(" npx gennady review --branch=develop");
24
+ console.info(' npx gennady cat "./src/**/*.js" --output=md');