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.
- package/README.md +145 -108
- package/{.ai → dist/.ai}/agents/agent-review-verifier.xml +44 -21
- package/dist/assistant/music/music-filter.d.ts +7 -0
- package/dist/chunks/agent/agent-keywords-prompt.md +3 -0
- package/{src/prompts → dist/chunks}/commit/commit-changeset-prompt.md +5 -1
- package/{src/prompts → dist/chunks}/commit/commit-message-prompt.md +5 -1
- package/dist/chunks/help.cmd-CWasx25o.js +24 -0
- package/dist/chunks/index-5xIgwwKx.js +97 -0
- package/dist/chunks/index-B4m0-PAT.js +159 -0
- package/dist/chunks/index-B5bA2T7A.js +119 -0
- package/dist/chunks/index-B63fYXL2.js +7 -0
- package/dist/chunks/index-C0andxna.js +7 -0
- package/dist/chunks/index-CNbmXK8M.js +3548 -0
- package/dist/chunks/index-Dqe1TdW4.js +265 -0
- package/dist/chunks/index-iqg0w_pE.js +109 -0
- package/{src/prompts → dist/chunks}/review/review-base-prompt.md +15 -5
- package/dist/chunks/run-review-command.logic-a_M3CkeZ.js +267 -0
- package/dist/chunks/services-Sb7TwLxt.js +122 -0
- package/dist/chunks/shared-BgLzFWMH.js +577 -0
- package/dist/cli/cmd/_shared/prompt/io/load-agent-template.io.d.ts +7 -0
- package/dist/cli/cmd/_shared/prompt/logic/build-ai-first-knowledge-block.logic.d.ts +7 -0
- package/dist/cli/cmd/_shared/prompt/logic/build-ai-verify-placeholders.logic.d.ts +16 -0
- package/dist/cli/cmd/_shared/prompt/logic/verify-commands/resolve-verify-commands.logic.d.ts +1 -0
- package/dist/cli/cmd/cat/cat.cmd.d.ts +2 -0
- package/dist/cli/cmd/cat/index.d.ts +1 -0
- package/dist/cli/cmd/commit/commit.cmd.d.ts +2 -0
- package/dist/cli/cmd/commit/index.d.ts +1 -0
- package/dist/cli/cmd/help/help.cmd.d.ts +1 -0
- package/dist/cli/cmd/resolve-conflicts/_core/io/resolve-conflicts-template-load.io.d.ts +6 -0
- package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-args-parse.logic.d.ts +8 -0
- package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-run.logic.d.ts +9 -0
- package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-context-git-build.logic.d.ts +10 -0
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-artifact.type.d.ts +9 -0
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-args.type.d.ts +8 -0
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-result.type.d.ts +11 -0
- package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-context-git.type.d.ts +29 -0
- package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-artifact-build.xml.d.ts +16 -0
- package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-render.xml.d.ts +8 -0
- package/dist/cli/cmd/resolve-conflicts/index.d.ts +1 -0
- package/dist/cli/cmd/resolve-conflicts/resolve-conflicts.cmd.d.ts +2 -0
- package/dist/cli/cmd/review/_core/io/load-review-verify-template.io.d.ts +6 -0
- package/dist/cli/cmd/review/_core/logic/build-ai-first-knowledge-block.logic.d.ts +1 -0
- package/dist/cli/cmd/review/_core/logic/build-ai-verify-placeholders.logic.d.ts +2 -0
- package/dist/cli/cmd/review/_core/logic/build-review-context-git.logic.d.ts +8 -0
- package/dist/cli/cmd/review/_core/logic/build-review-context-vcs.logic.d.ts +9 -0
- package/dist/cli/cmd/review/_core/logic/load-review-context-mr.logic.d.ts +17 -0
- package/dist/cli/cmd/review/_core/logic/parse-review-command-args.logic.d.ts +8 -0
- package/dist/cli/cmd/review/_core/logic/resolve-review-intent.logic.d.ts +9 -0
- package/dist/cli/cmd/review/_core/logic/run-review-command.logic.d.ts +9 -0
- package/dist/cli/cmd/review/_core/logic/verify-commands/resolve-verify-commands.logic.d.ts +1 -0
- package/dist/cli/cmd/review/_core/types/review-artifact.type.d.ts +11 -0
- package/dist/cli/cmd/review/_core/types/review-command-args.type.d.ts +12 -0
- package/dist/cli/cmd/review/_core/types/review-command-mode.type.d.ts +5 -0
- package/dist/cli/cmd/review/_core/types/review-command-options.type.d.ts +10 -0
- package/dist/cli/cmd/review/_core/types/review-command-result.type.d.ts +11 -0
- package/dist/cli/cmd/review/_core/types/review-context-git.type.d.ts +9 -0
- package/dist/cli/cmd/review/_core/types/review-context-mr.type.d.ts +51 -0
- package/dist/cli/cmd/review/_core/types/review-context-vcs.type.d.ts +10 -0
- package/dist/cli/cmd/review/_core/types/review-intent.type.d.ts +17 -0
- package/dist/cli/cmd/review/_core/xml/build-review-artifact.xml.d.ts +20 -0
- package/dist/cli/cmd/review/_core/xml/render-review-issues.xml.d.ts +7 -0
- package/dist/cli/cmd/review/_core/xml/render-review-verify.xml.d.ts +8 -0
- package/dist/cli/cmd/review/index.d.ts +1 -0
- package/dist/cli/cmd/review/review-issues.cmd.d.ts +2 -0
- package/dist/cli/cmd/review/review-verify.cmd.d.ts +2 -0
- package/dist/cli/cmd/review/review.cmd.d.ts +2 -0
- package/dist/cli/cmd/review-issues/index.d.ts +1 -0
- package/dist/cli/cmd/review-verify/index.d.ts +1 -0
- package/dist/cli/cmd/vcs-reply/index.d.ts +1 -0
- package/dist/cli/cmd/vcs-reply/vcs-reply.cmd.d.ts +33 -0
- package/dist/cli/gennady.d.ts +2 -0
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/utils/ai-legacy/ai-legacy-agent.d.ts +23 -0
- package/dist/cli/utils/ai-legacy/ai-legacy-core.d.ts +57 -0
- package/dist/cli/utils/ai-legacy/ai-legacy-model.d.ts +60 -0
- package/dist/cli/utils/cat-gen/cat-gen.d.ts +32 -0
- package/dist/cli/utils/commit-gen/commit-gen.d.ts +55 -0
- package/dist/cli/utils/prompts/index.d.ts +14 -0
- package/dist/cli/utils/review-gen/review-gen.d.ts +50 -0
- package/dist/gennady.js +28 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +163 -0
- package/dist/services/ai-client/ai-client.d.ts +1 -0
- package/dist/services/ai-client/providers/ai-model.type.d.ts +33 -0
- package/dist/services/ai-client/providers/open-router/open-router-model.type.d.ts +29 -0
- package/dist/services/ai-client/providers/open-router/open-router-provider.d.ts +9 -0
- package/dist/services/ai-client/providers/openai-like-provider.d.ts +2 -0
- package/dist/services/data-ore/telegram/telegram-data-ore.d.ts +11 -0
- package/dist/services/data-ore/telegram/telegram-data-ore.types.d.ts +5 -0
- package/dist/services/data-ore/telegram/telegram-demo-music-helper.d.ts +9 -0
- package/dist/services/data-ore/telegram/telegram-demo.d.ts +2 -0
- package/dist/services/dbc/parser/dbc-parser.types.d.ts +65 -0
- package/dist/services/dbc/parser/implementations/jsdoc/dbc-jsdoc-parser.d.ts +79 -0
- package/dist/services/logger/logger.d.ts +16 -0
- package/dist/services/vcs-client/abstract/vcs-client-merge-discussions.d.ts +51 -0
- package/dist/services/vcs-client/abstract/vcs-client-merge-requests.d.ts +45 -0
- package/dist/services/vcs-client/abstract/vcs-client.d.ts +13 -0
- package/dist/services/vcs-client/entities/vcs-user.type.d.ts +4 -0
- package/dist/services/vcs-client/gitlab/vcs-gitlab-client.d.ts +24 -0
- package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-discussions.d.ts +30 -0
- package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-requests.d.ts +27 -0
- package/dist/shared/backend/git/git-core.d.ts +61 -0
- package/dist/shared/backend/git/git-diff.d.ts +34 -0
- package/dist/shared/backend/rc/rc-config.d.ts +51 -0
- package/{src/utils/exec.js → dist/shared/common/exec.d.ts} +3 -13
- package/{src/utils/files.js → dist/shared/common/files.d.ts} +1 -4
- package/dist/shared/common/language.d.ts +14 -0
- package/dist/shared/common/logger.d.ts +6 -0
- package/dist/shared/common/parse-args.d.ts +10 -0
- package/dist/shared/common/style.d.ts +11 -0
- package/dist/shared/common/think.d.ts +6 -0
- package/dist/shared/common/tokens.d.ts +6 -0
- package/dist/shared/common/unguard.d.ts +14 -0
- package/dist/shared/common/xml.d.ts +40 -0
- package/package.json +36 -12
- package/.ai/agents/architecture.xml +0 -8
- package/.ai/agents/discovery.xml +0 -12
- package/.ai/agents/qacoder.xml +0 -8
- package/.ai/docs/README.md +0 -10
- package/.ai/docs/ai-icl.md +0 -604
- package/.ai/docs/ai-priming.md +0 -614
- package/.ai/docs/ai-protocol-structural-prompting-v1.md +0 -225
- package/.ai/fw/v1/architecture/blueprint-factory.xml +0 -77
- package/.ai/fw/v1/core/mental-model.xml +0 -50
- package/.ai/fw/v1/discovery/intent-reactor.xml +0 -92
- package/.ai/fw/v1/production/swarm-protocol.xml +0 -122
- package/.ai/fw/v1/review/quality-pipeline.xml +0 -102
- package/.ai/fw-draft/README.md +0 -78
- package/.ai/fw-draft/bin/discovery.sh +0 -116
- package/.ai/fw-draft/gennady.xml +0 -58
- package/.ai/fw-draft/provider/claude.xml +0 -16
- package/.ai/fw-draft/provider/cursor.xml +0 -23
- package/.ai/fw-draft/provider/default.xml +0 -12
- package/.ai/fw-draft/roles/developer.xml +0 -18
- package/.ai/fw-draft/router.xml +0 -39
- package/.ai/fw-draft/routes/development.xml +0 -32
- package/.ai/fw-draft/routes/universal.xml +0 -58
- package/.ai/fw-draft/rules/dev/base/file-structure-rules.xml +0 -89
- package/.ai/fw-draft/rules/dev/typescript/contacts.xml +0 -198
- package/.nvmrc +0 -1
- package/AGENTS.md +0 -63
- package/cli/cmd/agent.js +0 -27
- package/cli/cmd/cat.js +0 -84
- package/cli/cmd/commit.js +0 -77
- package/cli/cmd/review-verify/index.js +0 -1
- package/cli/cmd/review-verify/review-verify.cmd.js +0 -123
- package/cli/cmd/review-verify/review-verify.xml.js +0 -157
- package/cli/cmd/review.js +0 -58
- package/cli/cmd/vcs-reply/index.js +0 -16
- package/cli/cmd/vcs-reply/vcs-reply.cmd.js +0 -143
- package/cli/gennady.js +0 -37
- package/index.d.ts +0 -3
- package/index.js +0 -8
- package/scripts/publish-next.js +0 -250
- package/src/ai/ai-agent.js +0 -49
- package/src/ai/ai-agent.test.js +0 -25
- package/src/ai/ai-core.js +0 -125
- package/src/ai/ai-model.d.ts +0 -37
- package/src/ai/ai-model.js +0 -266
- package/src/ai/ai-model.test.js +0 -113
- package/src/cat-gen/cat-gen.js +0 -103
- package/src/commit-gen/commit-gen.js +0 -141
- package/src/git/git-core.js +0 -124
- package/src/git/git-diff.js +0 -175
- package/src/prompts/emoji/emoji.md +0 -9
- package/src/prompts/index.js +0 -13
- package/src/rc/rc-config.d.ts +0 -30
- package/src/rc/rc-config.js +0 -122
- package/src/rc/rc-config.test.js +0 -61
- package/src/review-gen/__fixture__/review-gen-fixture.md +0 -110
- package/src/review-gen/review-gen.js +0 -119
- package/src/review-gen/review-gen.test.js +0 -79
- package/src/review-verifier/README.arch.md +0 -61
- package/src/utils/language.js +0 -43
- package/src/utils/parse-args.js +0 -32
- package/src/utils/style.js +0 -84
- package/src/utils/think.js +0 -11
- package/src/utils/tokens.js +0 -4
- package/src/utils/unguard.d.ts +0 -9
- package/src/utils/unguard.js +0 -56
- package/src/utils/xml.js +0 -108
- package/src/vcs-client/gitlab/vcs-gitlab-client.js +0 -35
- package/src/vcs-client/gitlab/vcs-merge-discussions.js +0 -76
- package/src/vcs-client/gitlab/vcs-merge-requests.js +0 -42
- package/tsconfig.json +0 -39
- /package/{src/review-gen → dist/chunks}/specs/js/Function.prototype.json +0 -0
- /package/{src/review-gen → dist/chunks}/specs/js/Global.json +0 -0
- /package/{src/review-gen → dist/chunks}/specs/js/JSON.json +0 -0
- /package/{src/review-gen → dist/chunks}/specs/js/Object.json +0 -0
- /package/{src/review-gen → dist/chunks}/specs/js/Object.prototype.json +0 -0
- /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
|
-
#
|
|
7
|
-
npx gennady
|
|
12
|
+
# Справка
|
|
13
|
+
npx gennady help
|
|
8
14
|
|
|
9
|
-
#
|
|
10
|
-
npx gennady
|
|
15
|
+
# По умолчанию показывается справка
|
|
16
|
+
npx gennady
|
|
11
17
|
|
|
12
|
-
#
|
|
13
|
-
npx gennady
|
|
18
|
+
# Commit запускается только явно
|
|
19
|
+
npx gennady commit
|
|
14
20
|
```
|
|
15
21
|
|
|
16
22
|
---
|
|
17
23
|
|
|
18
|
-
|
|
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
|
-
|
|
30
|
+
```bash
|
|
31
|
+
# Обязательно для review-verify / review-issues / vcs-reply (live)
|
|
32
|
+
export GITLAB_PERSONAL_TOKEN="<token>"
|
|
27
33
|
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
##
|
|
36
|
-
|
|
37
|
-
```sh
|
|
38
|
-
# Basic usage
|
|
39
|
-
npx gennady
|
|
40
|
+
## 🧭 Команды CLI
|
|
40
41
|
|
|
41
|
-
|
|
42
|
-
npx gennady --mode=oneline
|
|
42
|
+
### 📝 `commit`
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
npx gennady --mode=detailed
|
|
44
|
+
Генерация commit message из staged-изменений.
|
|
46
45
|
|
|
47
|
-
|
|
48
|
-
npx gennady
|
|
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
|
-
|
|
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
|
-
|
|
62
|
-
-
|
|
63
|
-
-
|
|
64
|
-
-
|
|
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
|
-
|
|
68
|
+
Проверка staged-изменений на критичные проблемы.
|
|
70
69
|
|
|
71
|
-
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
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
|
-
|
|
86
|
-
-
|
|
87
|
-
-
|
|
88
|
-
-
|
|
93
|
+
- `--output`, `-o`: `xml` (по умолчанию) или `md`
|
|
94
|
+
- `--plain`: без ANSI-цветов
|
|
95
|
+
- `--exclude`, `-e`: исключить паттерны
|
|
96
|
+
- `--ext`: фильтр по расширениям
|
|
89
97
|
|
|
90
98
|
---
|
|
91
99
|
|
|
92
|
-
|
|
100
|
+
### ✅ `review-verify`
|
|
93
101
|
|
|
94
|
-
|
|
102
|
+
Собирает prompt для верификации discussion-тредов Merge Request (GitLab).
|
|
95
103
|
|
|
96
|
-
```
|
|
97
|
-
|
|
104
|
+
```bash
|
|
105
|
+
# Автоопределение MR по текущей ветке
|
|
106
|
+
npx gennady review-verify
|
|
98
107
|
|
|
99
|
-
#
|
|
100
|
-
npx gennady
|
|
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
|
-
#
|
|
103
|
-
npx gennady
|
|
112
|
+
# По ref
|
|
113
|
+
npx gennady review-verify group/project!123
|
|
114
|
+
npx gennady review-verify --ref=group/project!123
|
|
104
115
|
|
|
105
|
-
#
|
|
106
|
-
npx gennady
|
|
116
|
+
# Явно project + iid
|
|
117
|
+
npx gennady review-verify --project=group/project --iid=123
|
|
107
118
|
```
|
|
108
119
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
-
|
|
133
|
+
### 📄 `review-issues`
|
|
120
134
|
|
|
121
|
-
|
|
135
|
+
Как `review-verify`, но возвращает только XML-артефакт issues.
|
|
122
136
|
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
###
|
|
146
|
+
### 🧠 `resolve-conflicts`
|
|
132
147
|
|
|
133
|
-
|
|
148
|
+
Собирает prompt для AI-разрешения merge-конфликтов с ветвлением по confidence (auto-resolve или диалог с оператором).
|
|
134
149
|
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
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
|
-
|
|
160
|
+
- `--branch`, `-b`: override для current branch label
|
|
161
|
+
- `--incoming`: override для incoming branch label
|
|
154
162
|
|
|
155
|
-
|
|
163
|
+
Важно: команда **не делает** `git commit`, она печатает prompt.
|
|
156
164
|
|
|
157
|
-
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
### 💬 `vcs-reply`
|
|
168
|
+
|
|
169
|
+
Постинг ответов в GitLab MR discussions из JSON-массива через `stdin`.
|
|
158
170
|
|
|
159
171
|
```bash
|
|
160
|
-
|
|
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
|
-
|
|
181
|
+
**Опции:**
|
|
182
|
+
|
|
183
|
+
- `--project`: путь GitLab-проекта
|
|
184
|
+
- `--iid`: IID merge request
|
|
185
|
+
- `--dry-run`, `--dry`: не отправлять, только показать dry-run вывод
|
|
164
186
|
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
187
|
+
**Формат stdin:**
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
[{ "discussionId": "<discussion-id>", "body": "<reply markdown>" }]
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
168
194
|
|
|
169
|
-
|
|
195
|
+
## 🛠️ Типовые сценарии
|
|
170
196
|
|
|
171
|
-
|
|
197
|
+
### 1. Верификация MR
|
|
172
198
|
|
|
173
|
-
|
|
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. Нет тестов? Не городи огород, используй
|
|
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. Нужно выполнить специфическую команду (
|
|
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
|
-
|
|
56
|
-
|
|
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:**
|
|
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
|
-
# 📝 План Верификации для
|
|
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
|
-
|
|
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:**
|
|
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. Если пользователь сказал "
|
|
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
|
-
Сформируй черновики ответов для КАЖДОГО
|
|
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.
|
|
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
|
-
|
|
153
|
-
`echo '<JSON_ARRAY>' | npx gennady@next vcs-reply --host=<VCS_HOST> --project=<
|
|
154
|
-
|
|
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;
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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');
|