gennady 0.6.1 → 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 (320) 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-Gy1n7hRU.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-Bh0p7rJg.js → index-CaahtXiM.js} +33 -9
  148. package/dist/chunks/{index-BrobNwbS.js → index-CiEM-8nJ.js} +35 -19
  149. package/dist/chunks/{index-D1Hurfwu.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-B3r-YFvt.js → index-DU6jD7SS.js} +1 -1
  153. package/dist/chunks/index-KxSZKmZn.js +540 -0
  154. package/dist/chunks/{index-DgAmONSz.js → index-UbHoePfr.js} +12 -12
  155. package/dist/chunks/{index-Bx_P7mlL.js → index-g1LXlp77.js} +2 -2
  156. package/dist/chunks/index-zBnnuvLA.js +3788 -0
  157. package/dist/chunks/{run-review-command.logic-BQDGxh0f.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-resolve-conflicts.xml +0 -148
  317. package/dist/.ai/agents/agent-review-verifier.xml +0 -181
  318. package/dist/chunks/index-C4jt5WBP.js +0 -3548
  319. package/dist/chunks/services-Sb7TwLxt.js +0 -122
  320. package/dist/chunks/shared-D0kSJB49.js +0 -601
@@ -1,45 +1,62 @@
1
+ import type { VcsMergeRequestChanges, VcsMergeRequestChangesQuery } from '../entities/vcs-merge-request-changes.type.js';
1
2
  /**
2
- * @purpose Параметры запроса списка Merge Requests: проект, ветка, состояние, пагинация.
3
+ * @purpose Parameters for querying Merge Request list: project, branch, state, pagination.
3
4
  * @consumer VcsClientMergeRequests
4
5
  */
5
6
  export type VcsMergeRequestsQuery = {
7
+ /** @purpose GitLab project path or ID */
6
8
  project: string;
9
+ /** @purpose Source branch name to filter MRs */
7
10
  sourceBranch?: string;
11
+ /** @purpose MR state filter: opened, closed, merged, etc. */
8
12
  state?: string;
13
+ /** @purpose Page size | @invariant Default: GitLab default when absent */
9
14
  perPage?: number;
15
+ /** @purpose Page number starting from 1 */
10
16
  page?: number;
11
17
  };
12
18
  /**
13
- * @purpose Параметры запроса Merge Request по IID.
19
+ * @purpose Parameters for querying a Merge Request by IID.
14
20
  * @consumer VcsClientMergeRequests
15
21
  */
16
22
  export type VcsMergeRequestByIidQuery = {
23
+ /** @purpose GitLab project path or ID */
17
24
  project: string;
25
+ /** @purpose Merge request internal ID */
18
26
  iid: string | number;
19
27
  };
20
28
  /**
21
- * @purpose Доступ к Merge Requests/Pull Requests.
29
+ * @purpose Access to Merge Requests/Pull Requests.
30
+ * @invariant Error Policy: Network/status errors are thrown outward from request().
22
31
  * @consumer VcsClient
23
- * @invariant Error Policy: Ошибки сети/статуса пробрасываются наружу из request().
24
32
  */
25
33
  export declare abstract class VcsClientMergeRequests {
26
34
  /**
27
- * @purpose Получить список MR по проекту и фильтрам.
28
- * @param query Объект запроса.
29
- * @returns Список Merge Request'ов по минимальным фильтрам.
35
+ * @purpose Get MR list by project and filters.
36
+ * @param query Query object.
37
+ * @returns List of Merge Requests by minimal filters.
38
+ * @sideEffect Network: GET /projects/:project/merge_requests
30
39
  */
31
40
  abstract getList(query: VcsMergeRequestsQuery): Promise<unknown[]>;
32
41
  /**
33
- * @purpose Получить первый MR, удовлетворяющий тем же фильтрам, что и getList.
34
- * @param query Объект запроса.
35
- * @returns Первый найденный MR или null.
36
- * @sideEffect Network: Делегирует в getList() с ограничением per_page=1.
42
+ * @purpose Get the first MR matching the same filters as getList.
43
+ * @param query Query object.
44
+ * @returns First found MR or null.
45
+ * @sideEffect Network: Delegates to getList() with per_page=1 limit.
37
46
  */
38
47
  abstract getOne(query: VcsMergeRequestsQuery): Promise<unknown | null>;
39
48
  /**
40
- * @purpose Получить Merge Request по IID в рамках проекта.
41
- * @param query Параметры: { project, iid }.
42
- * @returns Объект Merge Request или null при 404.
49
+ * @purpose Get Merge Request by IID within a project.
50
+ * @param query Parameters: { project, iid }.
51
+ * @returns Merge Request object or null on 404.
52
+ * @sideEffect Network: GET /projects/:project/merge_requests/:iid
43
53
  */
44
54
  abstract getByIid(query: VcsMergeRequestByIidQuery): Promise<unknown | null>;
55
+ /**
56
+ * @purpose Get list of changed files in MR/PR.
57
+ * @param query Parameters: { repository, iid, page?, perPage? }.
58
+ * @returns List of changed files with metadata.
59
+ * @sideEffect Network: GitLab GET /projects/:id/merge_requests/:iid/changes | GitHub GET /repos/:owner/:repo/pulls/:number/files
60
+ */
61
+ abstract getChanges(query: VcsMergeRequestChangesQuery): Promise<VcsMergeRequestChanges[]>;
45
62
  }
@@ -0,0 +1,16 @@
1
+ import type { VcsFileContent, VcsFileContentQuery } from '../entities/vcs-file-content.type.js';
2
+ /**
3
+ * @purpose Access to VCS repository file contents.
4
+ * @invariant Error Policy: Network/status errors are thrown outward from request().
5
+ * @invariant Encoding Contract: Adapter decodes content (base64 → utf-8 for text).
6
+ * @consumer VcsClient
7
+ */
8
+ export declare abstract class VcsClientRepositoryFiles {
9
+ /**
10
+ * @purpose Get file content from repository.
11
+ * @param query Parameters: { repository, path, ref }.
12
+ * @returns File content or null if file not found (404).
13
+ * @sideEffect Network: GitLab GET /projects/:id/repository/files/:path/raw?ref= | GitHub GET /repos/:owner/:repo/contents/:path?ref=
14
+ */
15
+ abstract getFileContent(query: VcsFileContentQuery): Promise<VcsFileContent | null>;
16
+ }
@@ -1,13 +1,17 @@
1
1
  import type { VcsClientMergeDiscussions } from './vcs-client-merge-discussions.js';
2
2
  import type { VcsClientMergeRequests } from './vcs-client-merge-requests.js';
3
+ import type { VcsClientRepositoryFiles } from './vcs-client-repository-files.js';
3
4
  /**
4
- * @purpose Абстрактный клиент для работы с VCS Сервисами (например GitLab, Github).
5
- * @invariant Error Policy: Любой ответ !2xx преобразуется в Error с подробностями статуса.
6
- * @invariant Retry Policy: Повторов нет; ответственность за ретраи на вызывающей стороне.
5
+ * @purpose Abstract client for working with VCS services (e.g. GitLab, GitHub).
6
+ * @invariant Error Policy: Any non-2xx response is converted to an Error with status details.
7
+ * @invariant Retry Policy: No retries; retry responsibility lies with the caller.
8
+ * @consumer cli/review-verify, cli/cat
7
9
  */
8
10
  export declare abstract class VcsClient {
9
11
  /** @see {VcsClientMergeRequests} in ./vcs-client-merge-requests.ts */
10
12
  abstract readonly MergeRequests: VcsClientMergeRequests;
11
- /** @see {VcsClientMergeDiscussions} in ./vcs-client-merge-discussions.ts */
12
- abstract readonly MergeDiscussions: VcsClientMergeDiscussions;
13
+ /** @see {VcsClientMergeDiscussions} in ./vcs-client-merge-discussions.ts | @deferred GitHub adapter does not implement this */
14
+ abstract readonly MergeDiscussions?: VcsClientMergeDiscussions;
15
+ /** @see {VcsClientRepositoryFiles} in ./vcs-client-repository-files.ts | @deferred GitLab-only in v1 */
16
+ abstract readonly RepositoryFiles?: VcsClientRepositoryFiles;
13
17
  }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @purpose File content from repository: path, content (decoded), encoding.
3
+ * @consumer VcsClientRepositoryFiles.getFileContent
4
+ */
5
+ export type VcsFileContent = {
6
+ /** @purpose Path to file in repository */
7
+ path: string;
8
+ /** @purpose File content (decoded by adapter: base64 → utf-8 for text, base64 for binary) */
9
+ content: string;
10
+ /** @purpose Content encoding: utf-8 (text) or base64 (binary) */
11
+ encoding: 'utf-8' | 'base64';
12
+ };
13
+ /**
14
+ * @purpose File content query parameters: repository, path, branch/commit.
15
+ * @consumer VcsClientRepositoryFiles.getFileContent
16
+ */
17
+ export type VcsFileContentQuery = {
18
+ /** @purpose Repository identifier (group/project or owner/repo) */
19
+ repository: string;
20
+ /** @purpose Path to file in repository */
21
+ path: string;
22
+ /** @purpose Branch, tag, or commit SHA */
23
+ ref: string;
24
+ };
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @purpose One changed file in MR/PR: path, status, branch, change metrics.
3
+ * @consumer VcsClientMergeRequests.getChanges
4
+ */
5
+ export type VcsMergeRequestChanges = {
6
+ /** @purpose File path (new_path for GitLab, filename for GitHub) */
7
+ path: string;
8
+ /** @purpose Change status: added, modified, deleted, renamed */
9
+ status: 'added' | 'modified' | 'deleted' | 'renamed';
10
+ /** @purpose Previous path (only for renamed) */
11
+ previousPath?: string;
12
+ /** @purpose Branch (source_branch GitLab / head.ref GitHub) — for getFileContent */
13
+ ref: string;
14
+ /** @purpose Number of added lines */
15
+ additions?: number;
16
+ /** @purpose Number of deleted lines */
17
+ deletions?: number;
18
+ };
19
+ /**
20
+ * @purpose MR/PR changes query parameters: repository, number, pagination.
21
+ * @consumer VcsClientMergeRequests.getChanges
22
+ */
23
+ export type VcsMergeRequestChangesQuery = {
24
+ /** @purpose Repository identifier (group/project or owner/repo) */
25
+ repository: string;
26
+ /** @purpose MR number (IID) or PR (number) */
27
+ iid: string | number;
28
+ /** @purpose Page number (starting from 1) */
29
+ page?: number;
30
+ /** @purpose Page size */
31
+ perPage?: number;
32
+ };
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @purpose Parsed merge request / pull request URL result.
3
+ * @consumer parseVcsUrl
4
+ */
5
+ export type VcsUrl = {
6
+ /** @purpose VCS provider: gitlab or github */
7
+ provider: 'gitlab' | 'github';
8
+ /** @purpose Host (with port if present): gitlab.com, github.internal.com:8443 */
9
+ host: string;
10
+ /** @purpose Repository identifier: group/project for GitLab, owner/repo for GitHub */
11
+ repository: string;
12
+ /** @purpose MR number (IID) or PR (number) */
13
+ iid: number;
14
+ };
@@ -1,4 +1,7 @@
1
+ /** @purpose Authenticated VCS user identity surfaced to API consumers. */
1
2
  export type VcsUser = {
3
+ /** @purpose Display name of the VCS user */
2
4
  name: string;
5
+ /** @purpose Unique login identifier in the VCS system */
3
6
  login: string;
4
7
  };
@@ -0,0 +1,31 @@
1
+ import { VcsGithubMergeRequests } from './vcs-github-merge-requests.js';
2
+ import { VcsGithubRepositoryFiles } from './vcs-github-repository-files.js';
3
+ import { VcsClient } from '../abstract/vcs-client.js';
4
+ /**
5
+ * @purpose Options for creating a GitHub API client: base URL and access token.
6
+ * @consumer VcsGithubClient
7
+ */
8
+ export type VcsGithubClientOptions = {
9
+ /** @purpose GitHub API base URL (e.g. https://api.github.com) */
10
+ baseUrl: string;
11
+ /** @purpose GitHub personal access token */
12
+ token: string;
13
+ };
14
+ /**
15
+ * @purpose GitHub client for working with REST API (minimal: without MergeDiscussions).
16
+ * @invariant Error Policy: Any non-2xx response is converted to an Error with status details.
17
+ * @consumer cli/cat
18
+ */
19
+ export declare class VcsGithubClient extends VcsClient {
20
+ /** @see {VcsClient#MergeRequests} in services/vcs-client/abstract/vcs-client.ts */
21
+ readonly MergeRequests: VcsGithubMergeRequests;
22
+ /** @see {VcsClient#MergeDiscussions} in services/vcs-client/abstract/vcs-client.ts */
23
+ readonly MergeDiscussions: undefined;
24
+ /** @see {VcsClient#RepositoryFiles} in services/vcs-client/abstract/vcs-client.ts */
25
+ readonly RepositoryFiles: VcsGithubRepositoryFiles;
26
+ /**
27
+ * @purpose Create a GitHub API client bound to a base URL with access token.
28
+ * @param options Connection parameters: base URL and access token.
29
+ */
30
+ constructor(options: VcsGithubClientOptions);
31
+ }
@@ -0,0 +1,40 @@
1
+ import { VcsClientMergeRequests } from '../abstract/vcs-client-merge-requests.js';
2
+ import type { VcsMergeRequestChanges, VcsMergeRequestChangesQuery } from '../entities/vcs-merge-request-changes.type.js';
3
+ type RequestFn = (path: string, init?: RequestInit) => Promise<unknown>;
4
+ /**
5
+ * @purpose Access to Pull Request files via GitHub API.
6
+ * @invariant Error Policy: Network/status errors are thrown outward from request().
7
+ * @consumer VcsGithubClient
8
+ */
9
+ export declare class VcsGithubMergeRequests extends VcsClientMergeRequests {
10
+ /** @purpose Bound HTTP request function for GitHub API calls */
11
+ protected _request: RequestFn;
12
+ /**
13
+ * @purpose Wire the HTTP request adapter for GitHub PR endpoints.
14
+ * @param request Authenticated HTTP request function targeting GitHub API.
15
+ */
16
+ constructor(request: RequestFn);
17
+ /**
18
+ * @purpose GitHub getList not implemented — use getChanges for PR files.
19
+ * @returns Empty array — not implemented.
20
+ */
21
+ getList(): Promise<unknown[]>;
22
+ /**
23
+ * @purpose GitHub getOne not implemented.
24
+ * @returns Null — not implemented.
25
+ */
26
+ getOne(): Promise<unknown | null>;
27
+ /**
28
+ * @purpose GitHub getByIid not implemented.
29
+ * @returns Null — not implemented.
30
+ */
31
+ getByIid(): Promise<unknown | null>;
32
+ /**
33
+ * @param query Target repository and PR number, optional pagination.
34
+ * @returns List of changed files with metadata.
35
+ * @sideEffect Network: GET /repos/:owner/:repo/pulls/:number/files
36
+ * @see {VcsClientMergeRequests#getChanges} in services/vcs-client/abstract/vcs-client-merge-requests.ts
37
+ */
38
+ getChanges(query: VcsMergeRequestChangesQuery): Promise<VcsMergeRequestChanges[]>;
39
+ }
40
+ export {};
@@ -0,0 +1,27 @@
1
+ import { VcsClientRepositoryFiles } from '../abstract/vcs-client-repository-files.js';
2
+ import type { VcsFileContent, VcsFileContentQuery } from '../entities/vcs-file-content.type.js';
3
+ /**
4
+ * @purpose Access to repository file contents via GitHub Contents API.
5
+ * @invariant Error Policy: Network/status errors are thrown outward. 404 → null.
6
+ * @invariant Encoding Contract: GitHub returns base64 → adapter decodes to utf-8.
7
+ * @consumer VcsGithubClient
8
+ */
9
+ export declare class VcsGithubRepositoryFiles extends VcsClientRepositoryFiles {
10
+ /** @purpose GitHub API base URL */
11
+ protected _baseUrl: string;
12
+ /** @purpose GitHub access token */
13
+ protected _token: string;
14
+ /**
15
+ * @purpose Wire the adapter with GitHub connection params for raw content fetches.
16
+ * @param baseUrl GitHub API base URL (e.g. https://api.github.com).
17
+ * @param token GitHub personal access token.
18
+ */
19
+ constructor(baseUrl: string, token: string);
20
+ /**
21
+ * @param query Target repository, file path, and ref.
22
+ * @returns File content or null if file not found.
23
+ * @sideEffect Network: GET /repos/:owner/:repo/contents/:path?ref=
24
+ * @see {VcsClientRepositoryFiles#getFileContent} in services/vcs-client/abstract/vcs-client-repository-files.ts
25
+ */
26
+ getFileContent(query: VcsFileContentQuery): Promise<VcsFileContent | null>;
27
+ }
@@ -1,24 +1,33 @@
1
1
  import { VcsGitlabMergeRequests } from './vcs-gitlab-merge-requests.js';
2
2
  import { VcsGitlabMergeDiscussions } from './vcs-gitlab-merge-discussions.js';
3
+ import { VcsGitlabRepositoryFiles } from './vcs-gitlab-repository-files.js';
3
4
  import { VcsClient } from '../abstract/vcs-client.js';
4
5
  /**
5
- * @purpose Опции для создания клиента GitLab API: базовый URL и токен доступа.
6
+ * @purpose Options for creating a GitLab API client: base URL and access token.
6
7
  * @consumer VcsGitlabClient
7
8
  */
8
9
  export type VcsGitlabClientOptions = {
10
+ /** @purpose GitLab instance base URL (e.g. https://gitlab.example.com) */
9
11
  baseUrl: string;
12
+ /** @purpose GitLab personal or project access token */
10
13
  token: string;
11
14
  };
12
15
  /**
13
- * @purpose Клиент GitLab для работы с REST API.
16
+ * @purpose GitLab client for working with REST API.
17
+ * @invariant Error Policy: Any non-2xx response is converted to an Error with status details.
18
+ * @invariant Retry Policy: No retries; retry responsibility lies with the caller.
14
19
  * @consumer cli/review-verify
15
- * @invariant Error Policy: Любой ответ !2xx преобразуется в Error с подробностями статуса.
16
- * @invariant Retry Policy: Повторов нет; ответственность за ретраи на вызывающей стороне.
17
20
  */
18
21
  export declare class VcsGitlabClient extends VcsClient {
19
22
  /** @see {VcsClient#MergeRequests} in services/vcs-client/abstract/vcs-client.ts */
20
23
  readonly MergeRequests: VcsGitlabMergeRequests;
21
24
  /** @see {VcsClient#MergeDiscussions} in services/vcs-client/abstract/vcs-client.ts */
22
25
  readonly MergeDiscussions: VcsGitlabMergeDiscussions;
26
+ /** @see {VcsClient#RepositoryFiles} in services/vcs-client/abstract/vcs-client.ts */
27
+ readonly RepositoryFiles: VcsGitlabRepositoryFiles;
28
+ /**
29
+ * @purpose Create a GitLab API client bound to a base URL with access token.
30
+ * @param options Connection parameters: base URL and access token.
31
+ */
23
32
  constructor(options: VcsGitlabClientOptions);
24
33
  }
@@ -1,26 +1,37 @@
1
1
  import { VcsClientMergeDiscussions, type VcsAddNoteQuery, type VcsDiscussionsListQuery } from '../abstract/vcs-client-merge-discussions.js';
2
2
  type RequestFn = (path: string, init?: RequestInit) => Promise<unknown>;
3
3
  /**
4
- * @purpose Доступ к Discussions для Merge Request в GitLab.
4
+ * @purpose Access to Discussions for Merge Requests in GitLab.
5
+ * @invariant Error Policy: Network/status errors are thrown outward from request().
5
6
  * @consumer VcsGitlabClient
6
- * @invariant Error Policy: Ошибки сети/статуса пробрасываются наружу из request().
7
7
  */
8
8
  export declare class VcsGitlabMergeDiscussions extends VcsClientMergeDiscussions {
9
+ /** @purpose Bound HTTP request function injected for GitLab API calls */
9
10
  protected _request: RequestFn;
11
+ /**
12
+ * @purpose Wire the HTTP request adapter for GitLab merge discussion endpoints.
13
+ * @param request Authenticated HTTP request function targeting GitLab API.
14
+ */
10
15
  constructor(request: RequestFn);
11
16
  /**
12
- * @see {VcsClientMergeDiscussions#addNote} in services/vcs-client/abstract/vcs-merge-discussions.ts
17
+ * @param query Target project, MR, discussion, and note body.
18
+ * @returns Created note object from GitLab API.
13
19
  * @sideEffect Network: POST /projects/:project/merge_requests/:iid/discussions/:discussion_id/notes
20
+ * @see {VcsClientMergeDiscussions#addNote} in services/vcs-client/abstract/vcs-merge-discussions.ts
14
21
  */
15
22
  addNote(query: VcsAddNoteQuery): Promise<unknown>;
16
23
  /**
17
- * @see {VcsClientMergeDiscussions#getList} in services/vcs-client/abstract/vcs-merge-discussions.ts
24
+ * @param query Target project, MR, and optional pagination.
25
+ * @returns List of discussions for the requested page.
18
26
  * @sideEffect Network: GET /projects/:project/merge_requests/:iid/discussions
27
+ * @see {VcsClientMergeDiscussions#getList} in services/vcs-client/abstract/vcs-merge-discussions.ts
19
28
  */
20
29
  getList(query: VcsDiscussionsListQuery): Promise<unknown[]>;
21
30
  /**
31
+ * @param query Target project and MR.
32
+ * @returns Complete list of all discussions across all pages.
33
+ * @sideEffect Network: Multiple GET requests for paginated loading.
22
34
  * @see {VcsClientMergeDiscussions#getAll} in services/vcs-client/abstract/vcs-merge-discussions.ts
23
- * @sideEffect Network: Многократные GET для постраничной загрузки.
24
35
  */
25
36
  getAll(query: {
26
37
  project: string;
@@ -1,27 +1,46 @@
1
1
  import { VcsClientMergeRequests, type VcsMergeRequestByIidQuery, type VcsMergeRequestsQuery } from '../abstract/vcs-client-merge-requests.js';
2
+ import type { VcsMergeRequestChanges, VcsMergeRequestChangesQuery } from '../entities/vcs-merge-request-changes.type.js';
2
3
  type RequestFn = (path: string, init?: RequestInit) => Promise<unknown>;
3
4
  /**
4
- * @purpose Доступ к Merge Requests в GitLab.
5
+ * @purpose Access GitLab Merge Requests.
6
+ * @invariant Error Policy: Network/status errors propagated to caller.
5
7
  * @consumer VcsGitlabClient
6
- * @invariant Error Policy: Ошибки сети/статуса пробрасываются наружу из request().
7
8
  */
8
9
  export declare class VcsGitlabMergeRequests extends VcsClientMergeRequests {
10
+ /** @purpose Bound HTTP request function injected for GitLab API calls */
9
11
  protected _request: RequestFn;
12
+ /**
13
+ * @purpose Wire the HTTP request adapter for GitLab merge request endpoints.
14
+ * @param request Authenticated HTTP request function targeting GitLab API.
15
+ */
10
16
  constructor(request: RequestFn);
11
17
  /**
12
- * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
18
+ * @param query Target project and optional filters.
19
+ * @returns List of merge requests matching the filters.
13
20
  * @sideEffect Network: GET /projects/:project/merge_requests
21
+ * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
14
22
  */
15
23
  getList(query: VcsMergeRequestsQuery): Promise<unknown[]>;
16
24
  /**
25
+ * @param query Target project and optional filters.
26
+ * @returns First matching merge request or null.
27
+ * @sideEffect Network: Delegates to getList() with per_page=1 limit.
17
28
  * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
18
- * @sideEffect Network: Делегирует в getList() с ограничением per_page=1.
19
29
  */
20
30
  getOne(query: VcsMergeRequestsQuery): Promise<unknown | null>;
21
31
  /**
22
- * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
32
+ * @param query Target project and MR IID.
33
+ * @returns Merge request object or null on 404.
23
34
  * @sideEffect Network: GET /projects/:project/merge_requests/:iid
35
+ * @see {VcsClientMergeRequests#getList} in services/vcs-client/abstract/vcs-merge-requests.ts
24
36
  */
25
37
  getByIid(query: VcsMergeRequestByIidQuery): Promise<unknown | null>;
38
+ /**
39
+ * @param query Target repository and MR IID, optional pagination.
40
+ * @returns List of changed files with metadata.
41
+ * @sideEffect Network: GET /projects/:project/merge_requests/:iid/changes
42
+ * @see {VcsClientMergeRequests#getChanges} in services/vcs-client/abstract/vcs-client-merge-requests.ts
43
+ */
44
+ getChanges(query: VcsMergeRequestChangesQuery): Promise<VcsMergeRequestChanges[]>;
26
45
  }
27
46
  export {};
@@ -0,0 +1,27 @@
1
+ import { VcsClientRepositoryFiles } from '../abstract/vcs-client-repository-files.js';
2
+ import type { VcsFileContent, VcsFileContentQuery } from '../entities/vcs-file-content.type.js';
3
+ /**
4
+ * @purpose Access repository files via GitLab API (/raw endpoint).
5
+ * @invariant Error Policy: Network/status errors propagated to caller. 404 → null.
6
+ * @invariant Encoding Contract: Text files → encoding: 'utf-8'; binary → encoding: 'base64'.
7
+ * @consumer VcsGitlabClient
8
+ */
9
+ export declare class VcsGitlabRepositoryFiles extends VcsClientRepositoryFiles {
10
+ /** @purpose GitLab instance base URL */
11
+ protected _baseUrl: string;
12
+ /** @purpose GitLab access token */
13
+ protected _token: string;
14
+ /**
15
+ * @purpose Wire the adapter with GitLab connection params for raw file fetches.
16
+ * @param baseUrl GitLab instance base URL (e.g. https://gitlab.com/api/v4).
17
+ * @param token GitLab personal access token.
18
+ */
19
+ constructor(baseUrl: string, token: string);
20
+ /**
21
+ * @param query Target repository, file path, and ref.
22
+ * @returns File content or null if file not found.
23
+ * @sideEffect Network: GET /projects/:id/repository/files/:path/raw?ref=
24
+ * @see {VcsClientRepositoryFiles#getFileContent} in services/vcs-client/abstract/vcs-client-repository-files.ts
25
+ */
26
+ getFileContent(query: VcsFileContentQuery): Promise<VcsFileContent | null>;
27
+ }
@@ -0,0 +1,3 @@
1
+ import type { VcsUrl } from './entities/vcs-url.type.js';
2
+ /** @purpose Parse GitLab Merge Request or GitHub Pull Request URL. */
3
+ export declare const parseVcsUrl: (url: string | null | undefined) => VcsUrl | null;
@@ -1,61 +1,63 @@
1
1
  import { type ParsedDiffFile } from './git-diff.js';
2
2
  /**
3
- * @purpose Описать данные удалённого репозитория origin (хост, проект, схема).
3
+ * @purpose Describe origin remote repository data (host, project, scheme).
4
4
  * @consumer git-core, vcs-client
5
5
  */
6
6
  export type GitRemoteInfo = {
7
+ /** @purpose Git host domain (e.g. github.com). */
7
8
  host: string;
9
+ /** @purpose Repository path on the host (e.g. owner/repo). */
8
10
  project: string;
11
+ /** @purpose URL scheme used for origin remote (http, https, ssh). */
9
12
  scheme: string;
10
13
  };
11
14
  /**
12
- * @purpose Агрегированная информация по diff: сырой текст, разобранные файлы, метрики токенов и коммитов.
15
+ * @purpose Aggregated diff information: raw text, parsed files, token and commit metrics.
13
16
  * @consumer commit-gen, review-gen, ai-legacy
14
17
  */
15
18
  export type GitDiffInfo = {
19
+ /** @purpose Raw git diff text output. */
16
20
  diff: string;
21
+ /** @purpose All parsed diff files sorted by token count ascending. */
17
22
  parsedDiff: ParsedDiffFile[];
23
+ /** @purpose Code/config files only, excluding tests, deleted and renamed. */
18
24
  parsedCodeDiff: ParsedDiffFile[];
25
+ /** @purpose Total token count across parsed code diff files. */
19
26
  parsedCodeTokens: number;
27
+ /** @purpose Token count of the largest code file chunk. */
20
28
  parsedCodeChunkMaxTokens: number;
29
+ /** @purpose Unique programming languages detected across code diff files. */
21
30
  programmingLanguages: (string | undefined)[];
31
+ /** @purpose Number of commits on top of base branch. */
22
32
  commitCount: number;
23
33
  };
24
34
  /**
25
- * @purpose Определить базовую ветку репозитория (main или master) для анализа diff.
26
- * @returns Имя базовой ветки для сравнений (main|master), либо 'master' по умолчанию.
27
- * @sideEffect Process: выполнение git branch.
35
+ * @purpose Determine the base branch (main or master) for diff analysis.
36
+ * @sideEffect Process: executes git branch.
28
37
  */
29
38
  export declare const detectGitBaseBranch: () => string;
30
39
  /**
31
- * @purpose Получить имя текущей ветки Git.
32
- * @returns Имя текущей ветки; 'HEAD' при отсоединённой голове или ошибке.
33
- * @sideEffect Process: выполнение git rev-parse.
40
+ * @purpose Get current Git branch name.
41
+ * @sideEffect Process: executes git rev-parse.
34
42
  */
35
43
  export declare const getGitCurrentBranch: () => string;
36
44
  /**
37
- * @purpose Получить сведения об удалённом репозитории origin.
38
- * @returns {host, project, scheme} или null, если origin не настроен/не распознан.
39
- * @sideEffect Process: выполнение git config / git remote.
45
+ * @purpose Get origin remote repository info.
46
+ * @sideEffect Process: executes git config / git remote.
40
47
  */
41
48
  export declare const getGitRemote: () => GitRemoteInfo | null;
42
49
  /**
43
- * @purpose Посчитать количество коммитов поверх базовой ветки.
44
- * @returns Ненулевое целое число коммитов поверх базовой ветки; 0 при ошибке/отсутствии данных.
45
- * @sideEffect Process: выполнение git rev-list.
50
+ * @purpose Count commits on top of the base branch.
51
+ * @sideEffect Process: executes git rev-list.
46
52
  */
47
53
  export declare const getGitCommitCount: () => number;
48
54
  /**
49
- * @purpose Получить текстовый diff текущего состояния относительно цели.
50
- * @param targetBranch Ветка или ревизия, относительно которой строится diff; если не указана — используется HEAD.
51
- * @returns Строка с текстовым представлением diff из git.
52
- * @sideEffect Process: выполнение git diff.
55
+ * @purpose Get textual diff of current state against target.
56
+ * @sideEffect Process: executes git diff.
53
57
  */
54
58
  export declare const getGitDiff: (targetBranch?: string) => string;
55
59
  /**
56
- * @purpose Построить агрегированную информацию по diff для дальнейшего анализа/ранжирования.
57
- * @param branch Целевая ветка/ревизия для сравнения; если не указана — сравнение с HEAD.
58
- * @returns Объект с исходным diff, разобранными файлами и метриками (языки, токены, коммиты).
59
- * @sideEffect Process: вызовы getGitDiff и getGitCommitCount (git команды).
60
+ * @purpose Build aggregated diff info for further analysis/ranking.
61
+ * @sideEffect Process: calls getGitDiff and getGitCommitCount (git commands).
60
62
  */
61
63
  export declare const getGitDiffInfo: (branch?: string) => GitDiffInfo;
@@ -1,15 +1,23 @@
1
1
  /**
2
- * @purpose Описать один файл из разобранного git diff: флаги, имя, категория, язык, хунки и число токенов.
2
+ * @purpose Describe one file from parsed git diff: flags, name, category, language, hunks and token count.
3
3
  * @consumer git-core, commit-gen, review-gen
4
4
  */
5
5
  export type ParsedDiffFile = {
6
+ /** @purpose True if the file was created in this diff (new file mode). */
6
7
  isNew: boolean;
8
+ /** @purpose True if the file was deleted in this diff (deleted file mode). */
7
9
  isDeleted: boolean;
10
+ /** @purpose True if the file was renamed (rename from/to headers present). */
8
11
  isRenamed: boolean;
12
+ /** @purpose Current file path (post-rename if applicable). */
9
13
  filename: string;
14
+ /** @purpose Original file path before rename, or null. */
10
15
  oldFilename: string | null;
16
+ /** @purpose New file mode octet (e.g. 100644), or null. */
11
17
  newFileMode: string | null;
18
+ /** @purpose Deleted file mode octet, or null. */
12
19
  deletedFileMode: string | null;
20
+ /** @purpose Aggregated hunk data: token counts and change lines. */
13
21
  diff: {
14
22
  tokens: number;
15
23
  hunks: {
@@ -18,17 +26,20 @@ export type ParsedDiffFile = {
18
26
  tokens: number;
19
27
  }[];
20
28
  };
29
+ /** @purpose Total token count computed across all hunks. */
21
30
  tokens: number;
31
+ /** @purpose Raw metadata extracted from diff headers (index, modes, etc.). */
22
32
  metadata: Record<string, unknown>;
33
+ /** @purpose File extension in lowercase (e.g. 'ts'). */
23
34
  ext: string;
35
+ /** @purpose File category: code, config, doc, img, bin, lock, etc. */
24
36
  category: string;
37
+ /** @purpose Detected programming language from file extension, if any. */
25
38
  programmingLanguage?: string;
26
39
  };
27
40
  /**
28
- * @purpose Разобрать текстовый вывод git diff в нормализованный список файлов с метаданными и токенами.
41
+ * @purpose Parse raw git diff output into normalized file list with metadata and tokens.
42
+ * @pre Input string must match `git diff` format (unified diff).
29
43
  * @consumer git/git-core, commit-gen, review-gen
30
- * @pre Входная строка должна соответствовать формату `git diff` (unified diff).
31
- * @param diffText Полный текстовый diff для парсинга.
32
- * @returns Массив объектов файлов с признаками (isNew/isDeleted/isRenamed), категориями, языком, хунками и суммой токенов.
33
44
  */
34
45
  export declare const parseGitDiff: (diffText: string) => ParsedDiffFile[];