gennady 0.6.0 → 0.7.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 (319) hide show
  1. package/README.md +2 -15
  2. package/ai/agents/agent-resolve-conflicts.xml +6 -0
  3. package/ai/agents/agent-review-verifier.xml +6 -0
  4. package/ai/directives/architecture/README.md +21 -0
  5. package/ai/directives/coding/README.md +23 -0
  6. package/ai/directives/coding/result-conventions.xml +55 -0
  7. package/ai/directives/coding/svelte5-runes.xml +248 -0
  8. package/ai/directives/coding/sveltekit-rules.xml +247 -0
  9. package/ai/directives/coding/typescript-rules.xml +589 -0
  10. package/ai/directives/coding/uikit-component-storybook.xml +347 -0
  11. package/ai/directives/coding/uikit-component-svelte.xml +344 -0
  12. package/ai/directives/coding/uikit-spec-drafting.xml +243 -0
  13. package/ai/directives/dbc-audit.directive.xml +131 -0
  14. package/ai/directives/dev-review.directive.xml +148 -0
  15. package/ai/directives/infra/README.md +11 -0
  16. package/ai/directives/infra/eslint-setup.xml +467 -0
  17. package/ai/directives/infra/git-setup.xml +261 -0
  18. package/ai/directives/infra/nodejs-npm-setup.xml +354 -0
  19. package/ai/directives/infra/storybook-setup.xml +153 -0
  20. package/ai/directives/knowledge.xml +206 -0
  21. package/ai/directives/perf-auditor/perf-auditor.directive.xml +75 -0
  22. package/ai/directives/perf-auditor/rules/async-latency.xml +101 -0
  23. package/ai/directives/perf-auditor/rules/data-structures.xml +103 -0
  24. package/ai/directives/perf-auditor/rules/iteration-fusion.xml +96 -0
  25. package/ai/directives/perf-auditor/rules/memory-gc.xml +102 -0
  26. package/ai/directives/sdd/README.md +49 -0
  27. package/ai/directives/sdd/audit.directive.xml +543 -0
  28. package/ai/directives/sdd/discovery.directive.xml +824 -0
  29. package/ai/directives/sdd/fix.directive.xml +249 -0
  30. package/ai/directives/sdd/module-decomposition.directive.xml +666 -0
  31. package/ai/directives/sdd/phase-execution-protocol.xml +339 -0
  32. package/ai/directives/sdd/scaffold.directive.xml +717 -0
  33. package/ai/directives/sdd/setup.directive.xml +213 -0
  34. package/ai/directives/sdd/svelte-ui-discovery.directive.xml +263 -0
  35. package/ai/directives/semantic-change-extractor.directive.xml +99 -0
  36. package/ai/directives/testing/README.md +25 -0
  37. package/ai/directives/testing/common.xml +234 -0
  38. package/ai/directives/testing/node-test.xml +288 -0
  39. package/ai/directives/testing/playwright-cli.xml +199 -0
  40. package/ai/directives/testing/playwright-e2e.xml +292 -0
  41. package/ai/directives/testing/storybook-usage.xml +173 -0
  42. package/ai/directives/testing/svelte-testing.xml +237 -0
  43. package/ai/directives/testing/vitest-rules.xml +326 -0
  44. package/ai/docs/README.md +17 -0
  45. package/ai/docs/ai-icl.md +538 -0
  46. package/ai/docs/ai-priming.md +548 -0
  47. package/ai/docs/ai-prompt-formats.md +406 -0
  48. package/ai/docs/ai-promting.md +572 -0
  49. package/ai/drafts/DRAFT.md +120 -0
  50. package/ai/drafts/agent-devgen-class-from-description.rules.xml +123 -0
  51. package/ai/drafts/agent-typescript-devgen.v1.xml +303 -0
  52. package/ai/drafts/d.md +65 -0
  53. package/ai/drafts/music-posts.md +105 -0
  54. package/ai/fw/v1/architecture/blueprint-factory.xml +77 -0
  55. package/ai/fw/v1/core/mental-model.xml +50 -0
  56. package/ai/fw/v1/discovery/intent-reactor.xml +92 -0
  57. package/ai/fw/v1/production/swarm-protocol.xml +122 -0
  58. package/ai/fw/v1/review/quality-pipeline.xml +102 -0
  59. package/ai/fw/v2/arch-universal.xml +73 -0
  60. package/ai/fw-draft/README.md +79 -0
  61. package/ai/fw-draft/bin/discovery.sh +116 -0
  62. package/ai/fw-draft/gennady.xml +58 -0
  63. package/ai/fw-draft/provider/claude.xml +16 -0
  64. package/ai/fw-draft/provider/cursor.xml +23 -0
  65. package/ai/fw-draft/provider/default.xml +12 -0
  66. package/ai/fw-draft/roles/developer.xml +18 -0
  67. package/ai/fw-draft/router.xml +39 -0
  68. package/ai/fw-draft/routes/development.xml +32 -0
  69. package/ai/fw-draft/routes/universal.xml +58 -0
  70. package/ai/fw-draft/rules/dev/base/file-structure-rules.xml +89 -0
  71. package/ai/fw-draft/rules/dev/typescript/contacts.xml +194 -0
  72. package/dist/ai/agents/agent-resolve-conflicts.xml +6 -0
  73. package/dist/ai/agents/agent-review-verifier.xml +6 -0
  74. package/dist/ai/directives/architecture/README.md +21 -0
  75. package/dist/ai/directives/coding/README.md +23 -0
  76. package/dist/ai/directives/coding/result-conventions.xml +55 -0
  77. package/dist/ai/directives/coding/svelte5-runes.xml +248 -0
  78. package/dist/ai/directives/coding/sveltekit-rules.xml +247 -0
  79. package/dist/ai/directives/coding/typescript-rules.xml +589 -0
  80. package/dist/ai/directives/coding/uikit-component-storybook.xml +347 -0
  81. package/dist/ai/directives/coding/uikit-component-svelte.xml +344 -0
  82. package/dist/ai/directives/coding/uikit-spec-drafting.xml +243 -0
  83. package/dist/ai/directives/dbc-audit.directive.xml +131 -0
  84. package/dist/ai/directives/dev-review.directive.xml +148 -0
  85. package/dist/ai/directives/infra/README.md +11 -0
  86. package/dist/ai/directives/infra/eslint-setup.xml +467 -0
  87. package/dist/ai/directives/infra/git-setup.xml +261 -0
  88. package/dist/ai/directives/infra/nodejs-npm-setup.xml +354 -0
  89. package/dist/ai/directives/infra/storybook-setup.xml +153 -0
  90. package/dist/ai/directives/knowledge.xml +206 -0
  91. package/dist/ai/directives/perf-auditor/perf-auditor.directive.xml +75 -0
  92. package/dist/ai/directives/perf-auditor/rules/async-latency.xml +101 -0
  93. package/dist/ai/directives/perf-auditor/rules/data-structures.xml +103 -0
  94. package/dist/ai/directives/perf-auditor/rules/iteration-fusion.xml +96 -0
  95. package/dist/ai/directives/perf-auditor/rules/memory-gc.xml +102 -0
  96. package/dist/ai/directives/sdd/README.md +49 -0
  97. package/dist/ai/directives/sdd/audit.directive.xml +543 -0
  98. package/dist/ai/directives/sdd/discovery.directive.xml +824 -0
  99. package/dist/ai/directives/sdd/fix.directive.xml +249 -0
  100. package/dist/ai/directives/sdd/module-decomposition.directive.xml +666 -0
  101. package/dist/ai/directives/sdd/phase-execution-protocol.xml +339 -0
  102. package/dist/ai/directives/sdd/scaffold.directive.xml +717 -0
  103. package/dist/ai/directives/sdd/setup.directive.xml +213 -0
  104. package/dist/ai/directives/sdd/svelte-ui-discovery.directive.xml +263 -0
  105. package/dist/ai/directives/semantic-change-extractor.directive.xml +99 -0
  106. package/dist/ai/directives/testing/README.md +25 -0
  107. package/dist/ai/directives/testing/common.xml +234 -0
  108. package/dist/ai/directives/testing/node-test.xml +288 -0
  109. package/dist/ai/directives/testing/playwright-cli.xml +199 -0
  110. package/dist/ai/directives/testing/playwright-e2e.xml +292 -0
  111. package/dist/ai/directives/testing/storybook-usage.xml +173 -0
  112. package/dist/ai/directives/testing/svelte-testing.xml +237 -0
  113. package/dist/ai/directives/testing/vitest-rules.xml +326 -0
  114. package/dist/ai/docs/README.md +17 -0
  115. package/dist/ai/docs/ai-icl.md +538 -0
  116. package/dist/ai/docs/ai-priming.md +548 -0
  117. package/dist/ai/docs/ai-prompt-formats.md +406 -0
  118. package/dist/ai/docs/ai-promting.md +572 -0
  119. package/dist/ai/drafts/DRAFT.md +120 -0
  120. package/dist/ai/drafts/agent-devgen-class-from-description.rules.xml +123 -0
  121. package/dist/ai/drafts/agent-typescript-devgen.v1.xml +303 -0
  122. package/dist/ai/drafts/d.md +65 -0
  123. package/dist/ai/drafts/music-posts.md +105 -0
  124. package/dist/ai/fw/v1/architecture/blueprint-factory.xml +77 -0
  125. package/dist/ai/fw/v1/core/mental-model.xml +50 -0
  126. package/dist/ai/fw/v1/discovery/intent-reactor.xml +92 -0
  127. package/dist/ai/fw/v1/production/swarm-protocol.xml +122 -0
  128. package/dist/ai/fw/v1/review/quality-pipeline.xml +102 -0
  129. package/dist/ai/fw/v2/arch-universal.xml +73 -0
  130. package/dist/ai/fw-draft/README.md +79 -0
  131. package/dist/ai/fw-draft/bin/discovery.sh +116 -0
  132. package/dist/ai/fw-draft/gennady.xml +58 -0
  133. package/dist/ai/fw-draft/provider/claude.xml +16 -0
  134. package/dist/ai/fw-draft/provider/cursor.xml +23 -0
  135. package/dist/ai/fw-draft/provider/default.xml +12 -0
  136. package/dist/ai/fw-draft/roles/developer.xml +18 -0
  137. package/dist/ai/fw-draft/router.xml +39 -0
  138. package/dist/ai/fw-draft/routes/development.xml +32 -0
  139. package/dist/ai/fw-draft/routes/universal.xml +58 -0
  140. package/dist/ai/fw-draft/rules/dev/base/file-structure-rules.xml +89 -0
  141. package/dist/ai/fw-draft/rules/dev/typescript/contacts.xml +194 -0
  142. package/dist/chunks/devtools-B-7ugZhF.js +79 -0
  143. package/dist/chunks/{help.cmd-CWasx25o.js → help.cmd-B_G7EWzF.js} +9 -2
  144. package/dist/chunks/{index-B63fYXL2.js → index-BeL1Zcbg.js} +1 -1
  145. package/dist/chunks/index-CVR66voe.js +26963 -0
  146. package/dist/chunks/index-CXuhZzS3.js +16979 -0
  147. package/dist/chunks/{index-B5bA2T7A.js → index-CaahtXiM.js} +33 -9
  148. package/dist/chunks/{index-iqg0w_pE.js → index-CiEM-8nJ.js} +35 -19
  149. package/dist/chunks/{index-B4m0-PAT.js → index-D1qsi0Uc.js} +57 -33
  150. package/dist/chunks/index-D9ceRUyB.js +443 -0
  151. package/dist/chunks/index-DJpVmyp2.js +176 -0
  152. package/dist/chunks/{index-C0andxna.js → index-DU6jD7SS.js} +1 -1
  153. package/dist/chunks/index-KxSZKmZn.js +540 -0
  154. package/dist/chunks/{index-Dqe1TdW4.js → index-UbHoePfr.js} +12 -12
  155. package/dist/chunks/{index-5xIgwwKx.js → index-g1LXlp77.js} +2 -2
  156. package/dist/chunks/index-zBnnuvLA.js +3788 -0
  157. package/dist/chunks/{run-review-command.logic-a_M3CkeZ.js → run-review-command.logic-DpkRoEi8.js} +2 -2
  158. package/dist/chunks/services-CaLOhuLV.js +2889 -0
  159. package/dist/chunks/shared-Bjy30TeM.js +665 -0
  160. package/dist/cli/cmd/_shared/prompt/io/load-agent-template.io.d.ts +3 -3
  161. package/dist/cli/cmd/_shared/prompt/logic/build-ai-first-knowledge-block.logic.d.ts +3 -3
  162. package/dist/cli/cmd/_shared/prompt/logic/build-ai-verify-placeholders.logic.d.ts +7 -4
  163. package/dist/cli/cmd/_shared/prompt/logic/verify-commands/resolve-verify-commands.logic.d.ts +5 -0
  164. package/dist/cli/cmd/_shared/update-check-worker.d.ts +1 -0
  165. package/dist/cli/cmd/_shared/update-check.d.ts +38 -0
  166. package/dist/cli/cmd/agent-mon/cmd/create-providers.d.ts +15 -0
  167. package/dist/cli/cmd/agent-mon/cmd/index.d.ts +1 -0
  168. package/dist/cli/cmd/agent-mon/cmd/run.d.ts +12 -0
  169. package/dist/cli/cmd/agent-mon/state/create-state-manager.d.ts +32 -0
  170. package/dist/cli/cmd/agent-mon/state/group-by-provider.d.ts +14 -0
  171. package/dist/cli/cmd/agent-mon/state/index.d.ts +5 -0
  172. package/dist/cli/cmd/agent-mon/state/is-waiting.d.ts +9 -0
  173. package/dist/cli/cmd/agent-mon/state/view-model.type.d.ts +74 -0
  174. package/dist/cli/cmd/agent-mon/ui/app.d.ts +16 -0
  175. package/dist/cli/cmd/agent-mon/ui/column-view.d.ts +14 -0
  176. package/dist/cli/cmd/agent-mon/ui/index.d.ts +10 -0
  177. package/dist/cli/cmd/agent-mon/ui/provider-column.d.ts +14 -0
  178. package/dist/cli/cmd/agent-mon/ui/session-card.d.ts +12 -0
  179. package/dist/cli/cmd/agent-mon/ui/status-badge.d.ts +10 -0
  180. package/dist/cli/cmd/alt-opinion/alt-opinion-parser.d.ts +18 -0
  181. package/dist/cli/cmd/alt-opinion/alt-opinion-runner.d.ts +32 -0
  182. package/dist/cli/cmd/alt-opinion/alt-opinion.cmd.d.ts +34 -0
  183. package/dist/cli/cmd/alt-opinion/alt-opinion.types.d.ts +88 -0
  184. package/dist/cli/cmd/alt-opinion/index.d.ts +1 -0
  185. package/dist/cli/cmd/cat/cat-url.fn.d.ts +19 -0
  186. package/dist/cli/cmd/lint/checks/anchor.check.d.ts +11 -0
  187. package/dist/cli/cmd/lint/checks/dbc-contract.check.d.ts +16 -0
  188. package/dist/cli/cmd/lint/checks/disables.check.d.ts +12 -0
  189. package/dist/cli/cmd/lint/checks/file-header.check.d.ts +10 -0
  190. package/dist/cli/cmd/lint/checks/language.check.d.ts +11 -0
  191. package/dist/cli/cmd/lint/index.d.ts +1 -0
  192. package/dist/cli/cmd/lint/lint.cmd.d.ts +18 -0
  193. package/dist/cli/cmd/lint/lint.types.d.ts +72 -0
  194. package/dist/cli/cmd/lint/utils/resolve-references.fn.d.ts +32 -0
  195. package/dist/cli/cmd/remote-console/index.d.ts +2 -0
  196. package/dist/cli/cmd/remote-console/remote-console.cmd.d.ts +55 -0
  197. package/dist/cli/cmd/resolve-conflicts/_core/io/resolve-conflicts-template-load.io.d.ts +2 -2
  198. package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-args-parse.logic.d.ts +3 -3
  199. package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-command-run.logic.d.ts +3 -3
  200. package/dist/cli/cmd/resolve-conflicts/_core/logic/resolve-conflicts-context-git-build.logic.d.ts +4 -4
  201. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-artifact.type.d.ts +3 -1
  202. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-args.type.d.ts +3 -1
  203. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-command-result.type.d.ts +5 -1
  204. package/dist/cli/cmd/resolve-conflicts/_core/types/resolve-conflicts-context-git.type.d.ts +18 -2
  205. package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-artifact-build.xml.d.ts +6 -6
  206. package/dist/cli/cmd/resolve-conflicts/_core/xml/resolve-conflicts-render.xml.d.ts +4 -4
  207. package/dist/cli/cmd/review/_core/io/load-review-verify-template.io.d.ts +2 -2
  208. package/dist/cli/cmd/review/_core/logic/build-review-context-git.logic.d.ts +3 -3
  209. package/dist/cli/cmd/review/_core/logic/build-review-context-vcs.logic.d.ts +2 -2
  210. package/dist/cli/cmd/review/_core/logic/load-review-context-mr.logic.d.ts +5 -5
  211. package/dist/cli/cmd/review/_core/logic/parse-review-command-args.logic.d.ts +3 -3
  212. package/dist/cli/cmd/review/_core/logic/resolve-review-intent.logic.d.ts +3 -3
  213. package/dist/cli/cmd/review/_core/logic/run-review-command.logic.d.ts +3 -3
  214. package/dist/cli/cmd/review/_core/types/review-artifact.type.d.ts +4 -1
  215. package/dist/cli/cmd/review/_core/types/review-command-args.type.d.ts +7 -1
  216. package/dist/cli/cmd/review/_core/types/review-command-mode.type.d.ts +1 -1
  217. package/dist/cli/cmd/review/_core/types/review-command-options.type.d.ts +3 -1
  218. package/dist/cli/cmd/review/_core/types/review-command-result.type.d.ts +5 -1
  219. package/dist/cli/cmd/review/_core/types/review-context-git.type.d.ts +3 -1
  220. package/dist/cli/cmd/review/_core/types/review-context-mr.type.d.ts +22 -3
  221. package/dist/cli/cmd/review/_core/types/review-context-vcs.type.d.ts +4 -1
  222. package/dist/cli/cmd/review/_core/types/review-intent.type.d.ts +1 -1
  223. package/dist/cli/cmd/review/_core/xml/build-review-artifact.xml.d.ts +10 -10
  224. package/dist/cli/cmd/review/_core/xml/render-review-issues.xml.d.ts +3 -3
  225. package/dist/cli/cmd/review/_core/xml/render-review-verify.xml.d.ts +4 -4
  226. package/dist/cli/cmd/sync/index.d.ts +1 -0
  227. package/dist/cli/cmd/sync/sync-core.d.ts +65 -0
  228. package/dist/cli/cmd/sync/sync-formatter.d.ts +12 -0
  229. package/dist/cli/cmd/sync/sync.cmd.d.ts +33 -0
  230. package/dist/cli/cmd/sync/sync.types.d.ts +50 -0
  231. package/dist/cli/cmd/vcs-reply/vcs-reply.cmd.d.ts +4 -4
  232. package/dist/cli/utils/ai-legacy/ai-legacy-agent.d.ts +12 -11
  233. package/dist/cli/utils/ai-legacy/ai-legacy-core.d.ts +33 -17
  234. package/dist/cli/utils/ai-legacy/ai-legacy-model.d.ts +42 -23
  235. package/dist/cli/utils/cat-gen/cat-gen.d.ts +19 -8
  236. package/dist/cli/utils/commit-gen/commit-gen.d.ts +39 -15
  237. package/dist/cli/utils/prompts/index.d.ts +6 -6
  238. package/dist/cli/utils/review-gen/review-gen.d.ts +33 -9
  239. package/dist/gennady.js +30 -10
  240. package/dist/index.d.ts +1 -0
  241. package/dist/index.js +44 -23
  242. package/dist/services/agent-mon/diff/diff.d.ts +9 -0
  243. package/dist/services/agent-mon/diff/index.d.ts +1 -0
  244. package/dist/services/agent-mon/index.d.ts +10 -0
  245. package/dist/services/agent-mon/model/agent-provider.type.d.ts +20 -0
  246. package/dist/services/agent-mon/model/agent-session.type.d.ts +49 -0
  247. package/dist/services/agent-mon/model/errors.d.ts +20 -0
  248. package/dist/services/agent-mon/model/index.d.ts +7 -0
  249. package/dist/services/agent-mon/model/observe-opts.type.d.ts +7 -0
  250. package/dist/services/agent-mon/model/scan-opts.type.d.ts +7 -0
  251. package/dist/services/agent-mon/model/session-changes.type.d.ts +10 -0
  252. package/dist/services/agent-mon/monitor/agent-monitor.d.ts +44 -0
  253. package/dist/services/agent-mon/monitor/create-monitor.d.ts +6 -0
  254. package/dist/services/agent-mon/monitor/index.d.ts +2 -0
  255. package/dist/services/agent-mon/observe/index.d.ts +1 -0
  256. package/dist/services/agent-mon/observe/observe.d.ts +12 -0
  257. package/dist/services/agent-mon/providers/claude/claude-provider.d.ts +50 -0
  258. package/dist/services/agent-mon/providers/claude/index.d.ts +5 -0
  259. package/dist/services/agent-mon/providers/claude/ps.d.ts +36 -0
  260. package/dist/services/agent-mon/providers/claude/session-json.d.ts +37 -0
  261. package/dist/services/agent-mon/providers/opencode/db.d.ts +41 -0
  262. package/dist/services/agent-mon/providers/opencode/index.d.ts +3 -0
  263. package/dist/services/agent-mon/providers/opencode/model-parser.d.ts +6 -0
  264. package/dist/services/agent-mon/providers/opencode/opencode-provider.d.ts +45 -0
  265. package/dist/services/ai-client/providers/ai-model.type.d.ts +14 -0
  266. package/dist/services/ai-client/providers/open-router/open-router-model.type.d.ts +1 -4
  267. package/dist/services/ai-client/providers/open-router/open-router-provider.d.ts +17 -0
  268. package/dist/services/ai-client/providers/openai-like-provider.d.ts +1 -0
  269. package/dist/services/data-ore/telegram/telegram-data-ore.d.ts +17 -0
  270. package/dist/services/data-ore/telegram/telegram-data-ore.types.d.ts +4 -0
  271. package/dist/services/data-ore/telegram/telegram-demo-music-helper.d.ts +1 -0
  272. package/dist/services/data-ore/telegram/telegram-demo.d.ts +1 -0
  273. package/dist/services/dbc/linter/dbc-ast-adapter.types.d.ts +82 -0
  274. package/dist/services/dbc/linter/dbc-linter.types.d.ts +95 -0
  275. package/dist/services/dbc/linter/implementations/ts/dbc-ts-ast-adapter.d.ts +183 -0
  276. package/dist/services/dbc/linter/implementations/ts/dbc-ts-linter.d.ts +152 -0
  277. package/dist/services/dbc/parser/dbc-parser.types.d.ts +16 -16
  278. package/dist/services/dbc/parser/implementations/jsdoc/dbc-jsdoc-parser.d.ts +14 -4
  279. package/dist/services/logger/logger.d.ts +26 -6
  280. package/dist/services/remote-console/client/remote-console-client-serializer.d.ts +7 -0
  281. package/dist/services/remote-console/client/remote-console-client.d.ts +20 -0
  282. package/dist/services/remote-console/client/remote-console-client.types.d.ts +88 -0
  283. package/dist/services/remote-console/remote-console.d.ts +6 -0
  284. package/dist/services/remote-console/server/remote-console-server.d.ts +10 -0
  285. package/dist/services/remote-console/server/remote-console-server.types.d.ts +44 -0
  286. package/dist/services/remote-console/server/remote-console-stdout-writer.d.ts +26 -0
  287. package/dist/services/vcs-client/abstract/vcs-client-merge-discussions.d.ts +22 -14
  288. package/dist/services/vcs-client/abstract/vcs-client-merge-requests.d.ts +31 -14
  289. package/dist/services/vcs-client/abstract/vcs-client-repository-files.d.ts +16 -0
  290. package/dist/services/vcs-client/abstract/vcs-client.d.ts +9 -5
  291. package/dist/services/vcs-client/entities/vcs-file-content.type.d.ts +24 -0
  292. package/dist/services/vcs-client/entities/vcs-merge-request-changes.type.d.ts +32 -0
  293. package/dist/services/vcs-client/entities/vcs-url.type.d.ts +14 -0
  294. package/dist/services/vcs-client/entities/vcs-user.type.d.ts +3 -0
  295. package/dist/services/vcs-client/github/vcs-github-client.d.ts +31 -0
  296. package/dist/services/vcs-client/github/vcs-github-merge-requests.d.ts +40 -0
  297. package/dist/services/vcs-client/github/vcs-github-repository-files.d.ts +27 -0
  298. package/dist/services/vcs-client/gitlab/vcs-gitlab-client.d.ts +13 -4
  299. package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-discussions.d.ts +16 -5
  300. package/dist/services/vcs-client/gitlab/vcs-gitlab-merge-requests.d.ts +24 -5
  301. package/dist/services/vcs-client/gitlab/vcs-gitlab-repository-files.d.ts +27 -0
  302. package/dist/services/vcs-client/parse-vcs-url.d.ts +3 -0
  303. package/dist/shared/backend/git/git-core.d.ts +24 -22
  304. package/dist/shared/backend/git/git-diff.d.ts +16 -5
  305. package/dist/shared/backend/rc/rc-config.d.ts +27 -15
  306. package/dist/shared/common/exec.d.ts +4 -6
  307. package/dist/shared/common/files.d.ts +1 -3
  308. package/dist/shared/common/language.d.ts +3 -6
  309. package/dist/shared/common/parse-args.d.ts +1 -4
  310. package/dist/shared/common/style.d.ts +3 -3
  311. package/dist/shared/common/think.d.ts +1 -5
  312. package/dist/shared/common/tokens.d.ts +1 -5
  313. package/dist/shared/common/unguard.d.ts +4 -8
  314. package/dist/shared/common/xml.d.ts +16 -12
  315. package/package.json +20 -4
  316. package/dist/.ai/agents/agent-review-verifier.xml +0 -181
  317. package/dist/chunks/index-CNbmXK8M.js +0 -3548
  318. package/dist/chunks/services-Sb7TwLxt.js +0 -122
  319. package/dist/chunks/shared-BgLzFWMH.js +0 -577
@@ -1,51 +1,63 @@
1
1
  /**
2
- * @purpose Описать конфигурацию одной AI-модели в rc-файле (имя, URL, опциональный ключ).
2
+ * @purpose Describe AI model configuration in rc-file (name, URL, optional key).
3
3
  * @consumer GennadyRc, ai-legacy
4
4
  */
5
5
  export type RcModel = {
6
+ /** @purpose Model identifier string (e.g. 'deepseek-v4-pro'). */
6
7
  model: string;
8
+ /** @purpose Base URL of the model API endpoint. */
7
9
  url: string;
10
+ /** @purpose Optional API key for authenticated requests. */
8
11
  key?: string;
9
12
  };
10
13
  /**
11
- * @purpose Корневая структура данных конфигурации Gennady RC (список моделей).
14
+ * @purpose Root configuration data structure for Gennady RC (model list).
12
15
  * @consumer GennadyRc
13
16
  */
14
17
  export type GennadyRcData = {
18
+ /** @purpose List of configured AI models. */
15
19
  models: RcModel[];
16
20
  };
17
21
  /**
18
- * @purpose Загрузить и парсить конфигурацию Gennady из rc-файла в заданной директории.
22
+ * @purpose Load and parse Gennady configuration from rc-file in a given directory.
23
+ * @invariant On read/parse error _error is populated; getModels() returns an empty array.
24
+ * @sideEffect IO: file read at constructor.
19
25
  * @consumer ai-legacy, CLI agent
20
- * @invariant При ошибке чтения/парсинга _error заполняется; getModels() возвращает пустой массив.
21
- * @sideEffect IO: чтение файла при конструкторе.
22
26
  */
23
27
  export declare class GennadyRc {
24
- /** @purpose Имя файла конфигурации по умолчанию. */
28
+ /** @purpose Default configuration filename. */
25
29
  static DEFAULT_FILENAME: string;
26
30
  /**
27
- * @purpose Создать экземпляры GennadyRc для текущей директории и HOME (приоритет поиска).
28
- * @returns Массив из двух экземпляров: [cwd, HOME].
29
- * @sideEffect IO: чтение файлов при конструкторе.
31
+ * @purpose Create GennadyRc instances for current directory and HOME (lookup priority).
32
+ * @returns Array of two instances: [cwd, HOME].
33
+ * @sideEffect IO: file read at constructor.
30
34
  */
31
35
  static getDefaults(): GennadyRc[];
36
+ /** @purpose Full path to the loaded rc config file. */
32
37
  protected _filename: string;
38
+ /** @purpose Parsed configuration data with model list. */
33
39
  protected _data: GennadyRcData;
40
+ /** @purpose Load/parse error if config is invalid, null otherwise. */
34
41
  protected _error: Error | null;
42
+ /**
43
+ * @purpose Load and parse Gennady RC config file from a directory.
44
+ * @param [dir] Directory to look for the rc file in (defaults to cwd).
45
+ * @param [name] Config filename (defaults to .gennadyrc).
46
+ */
35
47
  constructor(dir?: string, name?: string);
36
48
  /**
37
- * @purpose Проверить, что конфигурация была успешно загружена и распознана.
38
- * @returns true, если ошибки нет; false при ошибке парсинга или невалидных данных.
49
+ * @purpose Check that configuration was successfully loaded and recognized.
50
+ * @returns true if no error; false on parse error or invalid data.
39
51
  */
40
52
  isValid(): boolean;
41
53
  /**
42
- * @purpose Получить список моделей из загруженного rc.
43
- * @returns Массив RcModel (пустой при ошибке или отсутствии файла).
54
+ * @purpose Get list of models from loaded rc.
55
+ * @returns Array of RcModel (empty on error or missing file).
44
56
  */
45
57
  getModels(): RcModel[];
46
58
  /**
47
- * @purpose Получить ошибку загрузки/парсинга, если она произошла.
48
- * @returns Error или null при успешной загрузке.
59
+ * @purpose Get load/parse error if one occurred.
60
+ * @returns Error or null on successful load.
49
61
  */
50
62
  getError(): Error | null;
51
63
  }
@@ -1,9 +1,7 @@
1
1
  /**
2
- * @purpose Выполнить системную команду синхронно с безопасной обработкой ошибок.
3
- * @consumer git/git-core, другие домены через utils
4
- * @pre Команда и бинарь доступны в PATH; запуск в корректном окружении.
5
- * @param cmd Строка команды для выполнения в подпроцессе.
6
- * @returns Стандартный вывод (stdout) как строка; пустая строка при ошибке.
7
- * @sideEffect Process: запуск внешнего процесса; Logs: error при сбое.
2
+ * @purpose Execute system command synchronously with safe error handling.
3
+ * @pre Command and binary available in PATH; run in correct environment.
4
+ * @sideEffect Process: launch external process; Logs: error on failure.
5
+ * @consumer git/git-core, other domains via utils
8
6
  */
9
7
  export declare const execSyncSafe: (cmd: string) => string;
@@ -1,7 +1,5 @@
1
1
  /**
2
- * @purpose Определить, является ли файл тестовым по соглашениям имени.
2
+ * @purpose Determine whether a file is a test file by naming conventions.
3
3
  * @consumer core/utils
4
- * @param filename Имя или путь файла для проверки.
5
- * @returns true, если имя соответствует *.test.* или *.spec.* (с optional 's'); иначе false.
6
4
  */
7
5
  export declare const isTestFile: (filename: string) => boolean;
@@ -1,14 +1,11 @@
1
1
  /**
2
- * @purpose Определить язык программирования по расширению файла.
2
+ * @purpose Determine programming language by file extension.
3
3
  * @consumer review-gen, cat-gen
4
- * @param ext Расширение без точки (например 'ts', 'js').
5
- * @returns Человекочитаемое имя языка или undefined, если расширение неизвестно.
6
4
  */
7
5
  export declare const getProgrammingLanguage: (ext: string) => string | undefined;
8
6
  /**
9
- * @purpose Получить системный язык пользователя (locale) для локализации вывода.
7
+ * @purpose Get system user language (locale) for output localization.
8
+ * @sideEffect Process: call osascript to read system info.
10
9
  * @consumer ai-legacy, prompts
11
- * @sideEffect Process: вызов osascript для чтения system info.
12
- * @returns Код языка (например 'ru', 'en') или 'en' при ошибке.
13
10
  */
14
11
  export declare const getSysLang: () => string;
@@ -1,9 +1,6 @@
1
1
  /**
2
- * @purpose Распарсить аргументы командной строки по схеме опций и алиасов.
2
+ * @purpose Parse command-line arguments by options schema and aliases.
3
3
  * @consumer CLI (gennady, cmd/*)
4
- * @param argv Массив аргументов (обычно process.argv).
5
- * @param [schema] Схема: ключ — имя опции в результате, значение — массив алиасов (например --opt, -o).
6
- * @returns Объект: ключи из schema с значениями или true; _ — массив позиционных аргументов.
7
4
  */
8
5
  export declare const parseArgs: <T extends Record<string, string[]>>(argv: string[], schema?: T) => Record<keyof T | "_", unknown> & {
9
6
  _: string[];
@@ -2,10 +2,10 @@ type Styler = ((text: string) => string) & {
2
2
  [key: string]: Styler;
3
3
  };
4
4
  /**
5
- * @purpose Предоставить цепочку стилей для раскраски текста в терминале (ANSI).
5
+ * @purpose Provide style chain for terminal text coloring (ANSI).
6
+ * @invariant With NO_COLOR flag (plain, nocolor, --color=no etc.) returns text without codes; otherwise — with ANSI codes.
7
+ * @sideEffect Read process.argv at module initialization.
6
8
  * @consumer CLI, review-gen, commit-gen, cat-gen
7
- * @invariant При флаге NO_COLOR (plain, nocolor, --color=no и т.п.) возвращает текст без кодов; иначе — с ANSI-кодами.
8
- * @sideEffect Чтение process.argv при инициализации модуля.
9
9
  */
10
10
  export declare const style: Styler;
11
11
  export {};
@@ -1,6 +1,2 @@
1
- /**
2
- * @purpose Удалить think-блоки и лишний преамбульный текст из сырого ответа LLM.
3
- * @param raw Сырая строка ответа.
4
- * @returns Очищенная строка.
5
- */
1
+ /** @purpose Remove think-blocks and preamble text from raw LLM response. */
6
2
  export declare const removeThink: (raw: string) => string;
@@ -1,6 +1,2 @@
1
- /**
2
- * @purpose Подсчитать приблизительное количество токенов в тексте.
3
- * @param text Исходный текст.
4
- * @returns Количество токенов (по разбиению на слова и символы).
5
- */
1
+ /** @purpose Estimate approximate token count in text. */
6
2
  export declare const countTokens: (text: string) => number;
@@ -1,14 +1,10 @@
1
1
  /**
2
- * @purpose Синхронно развернуть result tuple.
3
- * @param resultTuple Кортеж [result, error]; при error — бросает его.
4
- * @returns Развёрнутый результат при успехе.
5
- * @throws Error из resultTuple[1] при наличии; SyntaxError при невалидном формате.
2
+ * @purpose Synchronously unwrap a result tuple.
3
+ * @throws Error from resultTuple[1] if present; SyntaxError for invalid format.
6
4
  */
7
5
  export declare const unguard: <TResult>(result: unknown) => TResult;
8
6
  /**
9
- * @purpose Развернуть result (tuple или Promise<tuple>); при error — бросает.
10
- * @param resultOrPromise Кортеж [result, error] или Promise такого кортежа; при error в tuple — бросает его.
11
- * @returns Promise с развёрнутым результатом при успехе.
12
- * @throws Error из tuple при наличии; SyntaxError при невалидном формате (см. unguard).
7
+ * @purpose Unwrap result (tuple or Promise\<tuple\>); throws on error.
8
+ * @throws Error from tuple if present; SyntaxError for invalid format (see unguard).
13
9
  */
14
10
  export declare const unguardOrThrow: <TResult>(resultOrPromise: [TResult, null] | [null, Error] | Promise<[TResult, null] | [null, Error]>) => Promise<TResult>;
@@ -1,23 +1,27 @@
1
1
  /**
2
- * @purpose Описывает узел XML-дерева — тег, атрибуты и дочерние узлы или текст.
2
+ * @purpose XML tree node — tag, attributes, child nodes or text.
3
3
  * @consumer commit-gen, review-verify, cat-gen
4
4
  */
5
5
  export type XmlNode = {
6
+ /** @purpose XML tag name (e.g. 'message', 'commit'). */
6
7
  tag: string;
8
+ /** @purpose Optional key-value attributes on the tag. */
7
9
  attrs?: Record<string, string>;
10
+ /** @purpose Child content: nested nodes, text, string array, or CDATA. */
8
11
  children?: XmlNode[] | string | string[] | XmlCdataNode;
9
12
  };
10
13
  /**
11
- * @purpose Представить текстовый XML-блок как CDATA-контент без escape спецсимволов.
14
+ * @purpose Represent XML block as CDATA content without escaping special chars.
12
15
  * @consumer xml serializer
13
16
  */
14
17
  export type XmlCdataNode = {
18
+ /** @purpose Raw CDATA text content (not escaped). */
15
19
  cdata: string;
16
20
  };
17
21
  /**
18
- * @purpose Извлечь из XML-строки блок <message> и преобразовать его в плоский объект для коммита.
19
- * @param xmlString Строка с XML (например, вывод команды или файл).
20
- * @returns Объект type, icon, subject, description или null, если блок <message> не найден.
22
+ * @purpose Extract \<message\> block from XML string and convert to flat object for commit.
23
+ * @param xmlString XML string (e.g. command output or file).
24
+ * @returns Object type, icon, subject, description or null if \<message\> block not found.
21
25
  */
22
26
  export declare function xmlCommitMessageToJson(xmlString: string): {
23
27
  type: string;
@@ -26,15 +30,15 @@ export declare function xmlCommitMessageToJson(xmlString: string): {
26
30
  description: string | null;
27
31
  } | null;
28
32
  /**
29
- * @purpose Экранировать специальные символы в строке для безопасной вставки в XML.
30
- * @param str Исходная строка, которая может содержать <, >, &, ', ".
31
- * @returns Строка с заменёнными сущностями (&lt;, &gt;, &amp;, &apos;, &quot;).
33
+ * @purpose Escape special characters in string for safe XML insertion.
34
+ * @param str Source string that may contain \<, \>, &, ', ".
35
+ * @returns String with replaced entities (&lt;, &gt;, &amp;, &apos;, &quot;).
32
36
  */
33
37
  export declare function escapeXml(str: string): string;
34
38
  /**
35
- * @purpose Сериализовать объектное представление узла в валидную XML-строку с отступами.
36
- * @param node Узел XmlNode для сериализации.
37
- * @param [level] Уровень вложенности для отступов (по умолчанию 0).
38
- * @returns Форматированная XML-строка.
39
+ * @purpose Serialize XmlNode object to indented XML string.
40
+ * @param node XmlNode to serialize.
41
+ * @param [level] Nesting level for indentation (default 0).
42
+ * @returns Formatted XML string.
39
43
  */
40
44
  export declare function serializeXmlNode(node: XmlNode, level?: number): string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gennady",
3
- "version": "0.6.0",
3
+ "version": "0.7.0",
4
4
  "author": "Konstantin Lebedev <ibnrubaxa@gmail.com>",
5
5
  "description": "Gennady — General Extensible Neural Network Adaptive Data Yntelligence",
6
6
  "keywords": [
@@ -24,15 +24,21 @@
24
24
  "#snapshot-path-setup": "./snapshot-path.setup.ts",
25
25
  "#logger": "./services/logger/logger.ts"
26
26
  },
27
+ "exports": {
28
+ ".": "./services/agent-mon/index.ts",
29
+ "./providers/claude": "./services/agent-mon/providers/claude/index.ts",
30
+ "./providers/opencode": "./services/agent-mon/providers/opencode/index.ts"
31
+ },
27
32
  "files": [
28
33
  "dist/**/*",
29
- "README.md"
34
+ "README.md",
35
+ "ai/**/*"
30
36
  ],
31
37
  "scripts": {
32
38
  "type-check": "tsc --noEmit",
33
39
  "build:types": "tsc -p tsconfig.types.json && node --import tsx scripts/normalize-dts-imports.ts",
34
40
  "build:publish": "npm run build && npm run build:types && node --import tsx scripts/prepare-publish-artifacts.ts",
35
- "test": "node --test",
41
+ "test": "node --import tsx --test --experimental-test-module-mocks",
36
42
  "test:watch": "tsx --test-loader 'cli/**/*.test.ts' 'shared/**/*.test.ts' 'services/**/*.test.ts'",
37
43
  "dev": "tsx cli/gennady.ts",
38
44
  "build": "vite build",
@@ -41,7 +47,9 @@
41
47
  "publish-next": "node --import tsx scripts/publish-next.ts",
42
48
  "format": "prettier --write .",
43
49
  "format:check": "prettier --check .",
44
- "lint": "npm run format && npm run type-check"
50
+ "lint": "npm run format && npm run type-check && npm run lint:contracts",
51
+ "release": "release-it",
52
+ "lint:contracts": "tsx cli/gennady.ts lint --autofix cli/ shared/ services/"
45
53
  },
46
54
  "devDependencies": {
47
55
  "@ai-sdk/openai": "^3.0.41",
@@ -49,14 +57,22 @@
49
57
  "@mtcute/node": "^0.28.2",
50
58
  "@types/node": "^25.3.2",
51
59
  "@types/qrcode": "^1.5.6",
60
+ "@types/react": "^19.2.15",
52
61
  "ai": "^6.0.116",
53
62
  "fast-glob": "^3.3.3",
54
63
  "open": "^11.0.0",
55
64
  "prettier": "^3.4.2",
56
65
  "qrcode": "^1.5.4",
66
+ "release-it": "20.0.1",
67
+ "tree-sitter": "^0.22.4",
68
+ "tree-sitter-typescript": "^0.23.2",
57
69
  "tsx": "^4.19.1",
58
70
  "typescript": "^5.7.2",
59
71
  "vite": "^6.0.0",
60
72
  "zod": "^4.3.6"
73
+ },
74
+ "dependencies": {
75
+ "ink": "^7.0.3",
76
+ "react": "^19.2.6"
61
77
  }
62
78
  }
@@ -1,181 +0,0 @@
1
- <!--
2
- ENTRY POINT: Это не документ, а программа.
3
- Ты — исполнитель этого манифеста. Начинай немедленно.
4
- -->
5
- <Agent_Execution_Manifest id="ReviewVerifier_Master_v4" schema_version="2026.2">
6
- <Configuration>
7
- <Agent_Identity>
8
- <Role>ReviewVerifier</Role>
9
- <Mission>
10
- Ты — финальный слой верификации (Quality Gate). Твоя задача — превратить гипотезы из Code Review в проверенные факты.
11
- Ты не просто "фиксишь баги", ты устраняешь неопределенность.
12
- </Mission>
13
- <Responsibility_Zones>
14
- <Zone name="No False Positives">Не чини то, что не сломано. Требуй доказательств.</Zone>
15
- <Zone name="Context Sovereignty">Владей контекстом. Читай файлы целиком, разматывай импорты.</Zone>
16
- <Zone name="Closure">Результат — это либо обоснованный NOFIX, либо качественный FIX с тестами.</Zone>
17
- </Responsibility_Zones>
18
- </Agent_Identity>
19
- <Belief_State>
20
- <Axiom id="AX_TRUST_VERIFY">**Trust, but Verify.** Ревьюер дает гипотезу. Код дает факты. Верь только коду.</Axiom>
21
- <Axiom id="AX_CONTEXT_KING">**Context is King.** Ошибка в вакууме может быть фичей в контексте бизнес-логики.</Axiom>
22
- <Axiom id="AX_EVIDENCE">**Evidence over Opinion.** Любое решение требует ссылки на доку, стандарт или код.</Axiom>
23
- <Axiom id="AX_PRAGMATIC_TDD">**Pragmatic TDD.** Есть тесты? Сначала Red, потом Green. Нет тестов? Не городи огород, используй <!--ai:verify-axiom-hint-->.</Axiom>
24
- <Axiom id="AX_CLARITY">**Clarity is Product.** Твой продукт — это понятный план, который я могу утвердить или отвергнуть.</Axiom>
25
- <Axiom id="AX_OPERATOR_LANGUAGE">Все сообщения оператору (план, вопросы, отчёты, ответы) формулируй на русском языке. Английский допустим только для кода, команд, идентификаторов и терминов.</Axiom>
26
- </Belief_State>
27
- <Tool_Usage_Policy>
28
- <Tool_Agnosticism>
29
- Ты работаешь в среде с богатым инструментарием (Cursor, Claude Code, IDE).
30
- Твоя стратегия выбора инструментов: **Native First**.
31
- </Tool_Agnosticism>
32
- <Priority_Matrix>
33
- <Primary_Tools>
34
- **Native IDE Tools.** Используй встроенные функции среды (`read_file`, `search_codebase`, `edit_file`, `semantic_search`) как основной способ взаимодействия. Они точнее и экономят контекст.
35
- </Primary_Tools>
36
- <Secondary_Tools>
37
- **Terminal / Bash.** Используй терминал (`ls`, `grep`, `find`, `cat`) в двух случаях:
38
- 1. Нативные инструменты не дали результата или недоступны.
39
- 2. Нужно выполнить специфическую команду (<!--ai:verify-tools-example-->).
40
- </Secondary_Tools>
41
- <Verification_Tools>
42
- **Web Search.** Используй для проверки документации, если внутренней базы знаний недостаточно.
43
- </Verification_Tools>
44
- </Priority_Matrix>
45
- </Tool_Usage_Policy>
46
- </Configuration>
47
- <Input_Data>
48
- <!--Review_Audit_Artifact-->
49
- </Input_Data>
50
- <Execution_Plan>
51
- <Step id="STEP_1_INGESTION">
52
- <Goal>Загрузить контекст задачи.</Goal>
53
- <Action>
54
- <!--ai:first-->
55
- Проанализируй `<MR_Audit_Context>` в разделе данных.
56
- Сфокусируйся на тегах `<Review_Threads>` и вложенных `<Thread>`.
57
- Для каждого `<Thread>` зафиксируй:
58
- - атрибуты `id`, `file`, `line`;
59
- - последовательность сообщений `<Author uid="...">` и `<Reviewer uid="...">`.
60
- </Action>
61
- </Step>
62
- <Step id="STEP_2_DEEP_DIVE_INVESTIGATION">
63
- <Goal>Собрать доказательную базу (Evidence).</Goal>
64
- <Action>
65
- Для КАЖДОГО `<Thread>`:
66
- 1. **Locate & Read:** Открой файл из атрибута `file` и используй `line` как опорную строку.
67
- 2. **Context Expansion:** Если код ссылается на неизвестные функции/типы — используй `search_codebase` (или `grep`), чтобы найти их определения.
68
- 3. **Test Discovery:** Найди тесты (`*.test.ts`) через поиск файлов. Прочитай их, чтобы понять текущее покрытие.
69
- 4. **External Verify:** Если проблема касается поведения библиотеки или стандарта — используй `web_search` для подтверждения фактов.
70
- </Action>
71
- </Step>
72
- <Step id="STEP_3_PLANNING_AND_NEGOTIATION">
73
- <Precondition>STEP_2_DEEP_DIVE_INVESTIGATION завершён, по каждому `<Thread>` собраны проверяемые факты.</Precondition>
74
- <Goal>Согласовать действия с пользователем.</Goal>
75
- <Action>
76
- Сформируй **План Верификации** в формате Markdown.
77
-
78
- **ФОРМАТ ОТЧЕТА (Строго соблюдай):**
79
-
80
- # 📝 План Верификации для `<MR_PROJECT_PATH>!<MR_IID>` (ver_<num>)
81
-
82
- ## ⭕ Отклонённые замечания (No Action Required)
83
- ### ⭕ **[SHORT_ID]**: Краткое название
84
- - **Файл:** `путь/к/файлу:строка`
85
- - **Обоснование:** Почему отклоняем (ссылка на код/доку).
86
-
87
- ---
88
-
89
- ## ⚡️ План исправлений (Action Required)
90
- ### ⚡️ **[SHORT_ID]**: Краткое название
91
- - **Файл:** `путь/к/файлу:строка`
92
- - **Проблема:** Суть бага.
93
- - **Доказательство:** Почему это баг.
94
- - **Тесты:** Есть ли покрытие? (Да/Нет)
95
- - **План Действий:**
96
- 1. (Если есть тесты) Создать Red-тест.
97
- 2. Внести исправление.
98
- 3. Верификация.
99
-
100
- ---
101
-
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.
118
- </Action>
119
- </Step>
120
- <Step id="STEP_4_CODING_AND_VERIFICATION">
121
- <Precondition>STEP_3_PLANNING_AND_NEGOTIATION завершён, пользователь согласовал выполнение плана (`OK` / `Confirm` / `Run` или эквивалент), и в плане есть пункты к исправлению.</Precondition>
122
- <Trigger>Получено согласие пользователя на План.</Trigger>
123
- <Goal>Внести изменения и проверить их, но НЕ фиксировать.</Goal>
124
- <Action>
125
- 1. **Edit:** Используй нативные инструменты (`edit_file`) для внесения изменений согласно плану.
126
- 2. **Verify:** <!--ai:verify-step-commands-->
127
- 3. **Report:** Сообщи пользователю: "Изменения внесены. Результаты тестов: [PASS/FAIL]".
128
- 4. **Propose Commit:** Предложи текст коммита (Conventional Commits), например: `fix(logger): mask sensitive data in logs`.
129
- 5. **STOP:** Жди команды на коммит.
130
- </Action>
131
- </Step>
132
- <Step id="STEP_5_COMMIT_NEGOTIATION">
133
- <Precondition>STEP_4_CODING_AND_VERIFICATION завершён, изменения и результаты верификации представлены пользователю.</Precondition>
134
- <Trigger>Пользователь проверил код и одобрил текст коммита.</Trigger>
135
- <Goal>Зафиксировать изменения в git и отправить их в удаленный репозиторий.</Goal>
136
- <Action>
137
- 1. Если пользователь попросил правки — вернись на шаг назад.
138
- 2. Если пользователь сказал "Commit" — выполни `git commit -m "..."` через терминал.
139
- 3. Сразу после успешного коммита выполни `git push origin HEAD` через терминал.
140
- 4. Сообщи: "Коммит создан и отправлен в удаленный репозиторий. Перехожу к подготовке ответов."
141
- </Action>
142
- </Step>
143
- <Step id="STEP_6_RESPONSE_DRAFTING">
144
- <Precondition>STEP_5_COMMIT_NEGOTIATION завершён успешно либо зафиксировано, что изменений для коммита нет.</Precondition>
145
- <Goal>Подготовить и согласовать тексты для VCS (Gitlab/Github).</Goal>
146
- <Action>
147
- Сформируй черновики ответов для КАЖДОГО треда (и FIXED, и NOFIX).
148
- Важно: это AI-to-AI коммуникация; формулируй объяснения через семантически насыщенные токены, передавай максимум релевантного смысла при минимальном количестве токенов.
149
-
150
- **Формат для согласования:**
151
-
152
- > **Draft for [SHORT_ID] (FIXED):**
153
- > 🦾 ⚡️ **FIXED**. Исправлена передача аргументов в логгер. Добавлен тест-кейс `logger.spec.ts`.
154
-
155
- > **Draft for [SHORT_ID] (NOFIX):**
156
- > 🦾 ⭕️ **NOFIX**. Поведение прокси является ожидаемым для библиотеки `tessell`. См. документацию: [ссылка].
157
-
158
- **STOP:** Выведи эти тексты и жди подтверждения ("Send" или правки текстов).
159
- </Action>
160
- </Step>
161
- <Step id="STEP_7_FINAL_TRANSMISSION">
162
- <Trigger>Пользователь утвердил тексты ответов.</Trigger>
163
- <Goal>Отправить данные в систему.</Goal>
164
- <Action>
165
- 1. Выполни preflight-проверку: `git status --porcelain`.
166
- - Если вывод не пустой и STEP_5_COMMIT_NEGOTIATION не подтверждён как успешный, остановись и сообщи пользователю, что нужен шаг STEP_5_COMMIT_NEGOTIATION.
167
- 2. Сформируй финальный JSON-массив.
168
- Пример структуры:
169
- ```json
170
- [
171
- { "discussionId": "<FULL_ID>", "body": "🦾 ⚡️ **FIXED**..." },
172
- { "discussionId": "<FULL_ID>", "body": "🦾 ⭕️ **NOFIX**..." }
173
- ]
174
- ```
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` по обычным правилам этих платформ.
178
- </Action>
179
- </Step>
180
- </Execution_Plan>
181
- </Agent_Execution_Manifest>