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,5 +1,5 @@
1
1
  /**
2
- * @purpose Исходное намерение review-запроса: явный MR или поиск по ветке.
2
+ * @purpose Initial review request intent: explicit MR or branch search.
3
3
  * @consumer resolve-review-intent.logic
4
4
  */
5
5
  export type ReviewIntent = {
@@ -1,20 +1,20 @@
1
1
  import type { XmlNode } from '../../../../../shared/common/xml.js';
2
2
  import type { ReviewContextMr, ReviewContextMrDiscussion } from '../types/review-context-mr.type.js';
3
3
  /**
4
- * @purpose Собрать дерево XmlNode артефакта ревью из MR и дискуссий.
4
+ * @purpose Build XmlNode tree of the review artifact from MR and discussions.
5
+ * @param mergeRequest MR object (iid, author, web_url, source_branch, title, etc.).
6
+ * @param discussions Array of discussions with notes (body, author, position).
7
+ * @param [showAll] Flag to show all threads, including resolved ones.
8
+ * @returns Root XmlNode (tag: MR_Audit_Context).
5
9
  * @consumer buildReviewArtifactXml
6
- * @param mergeRequest Объект MR (iid, author, web_url, source_branch, title и т.д.).
7
- * @param discussions Массив дискуссий с notes (body, author, position).
8
- * @param showAll Флаг показа всех тредов, включая resolved.
9
- * @returns Корневой XmlNode (tag: MR_Audit_Context).
10
10
  */
11
11
  export declare function createReviewArtifactXmlNode(mergeRequest: ReviewContextMr, discussions: ReviewContextMrDiscussion[], showAll?: boolean): XmlNode;
12
12
  /**
13
- * @purpose Построить XML артефакт ревью (MR + дискуссии).
13
+ * @purpose Build review XML artifact (MR + discussions).
14
+ * @param mergeRequest MR object.
15
+ * @param discussions Array of discussions.
16
+ * @param [showAll] Flag to show all threads, including resolved ones.
17
+ * @returns XML string (MR_Audit_Context).
14
18
  * @consumer run-review-command.logic
15
- * @param mergeRequest Объект MR.
16
- * @param discussions Массив дискуссий.
17
- * @param showAll Флаг показа всех тредов, включая resolved.
18
- * @returns Строка XML (MR_Audit_Context).
19
19
  */
20
20
  export declare function buildReviewArtifactXml(mergeRequest: ReviewContextMr, discussions: ReviewContextMrDiscussion[], showAll?: boolean): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * @purpose Сформировать итоговый XML для review-issues (только артефакт).
2
+ * @purpose Build the final XML for review-issues (artifact only).
3
+ * @param reviewArtifactXml Review XML artifact.
4
+ * @returns XML artifact without template.
3
5
  * @consumer run-review-command.logic
4
- * @param reviewArtifactXml XML-артефакт ревью.
5
- * @returns XML-артефакт без шаблона.
6
6
  */
7
7
  export declare function renderReviewIssuesXml(reviewArtifactXml: string): string;
@@ -1,8 +1,8 @@
1
1
  /**
2
- * @purpose Сформировать итоговый XML для review-verify (template + артефакт + подстановки по проекту).
2
+ * @purpose Build the final XML for review-verify (template + artifact + project substitutions).
3
+ * @param reviewArtifactXml Review XML artifact.
4
+ * @param [projectRoot] Repository root for searching knowledge files and command detectors (default `process.cwd()`).
5
+ * @returns Full XML prompt for review-verify.
3
6
  * @consumer run-review-command.logic
4
- * @param reviewArtifactXml XML-артефакт ревью.
5
- * @param projectRoot Корень репозитория для поиска файлов знаний и детекторов команд (по умолчанию `process.cwd()`).
6
- * @returns Полный XML-промпт для review-verify.
7
7
  */
8
8
  export declare function renderReviewVerifyXml(reviewArtifactXml: string, projectRoot?: string): Promise<string>;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,65 @@
1
+ import { SyncResult } from './sync.types.js';
2
+ import type { SyncOptions } from './sync.types.js';
3
+ /** @purpose Entries excluded from sync: empty architecture dir, deprecated/domain-specific directives. @invariant Must be kept in sync with cli spec §3.4 exclusion list. */
4
+ export declare const EXCLUDED_ENTRIES: Set<string>;
5
+ /** @purpose DI port for SyncCore — abstracts filesystem access for testability. @invariant All deps must be provided; no optional fields. */
6
+ export interface SyncCoreDeps {
7
+ /**
8
+ * @purpose Read file from disk.
9
+ * @param path File path.
10
+ * @returns File contents as Buffer.
11
+ */
12
+ readFile: (path: string) => Buffer;
13
+ /**
14
+ * @purpose Write file to disk.
15
+ * @param path File path.
16
+ * @param data File contents.
17
+ */
18
+ writeFile: (path: string, data: Buffer) => void;
19
+ /**
20
+ * @purpose Create directory.
21
+ * @param path Directory path.
22
+ * @param [opts] Options.
23
+ */
24
+ mkdir: (path: string, opts?: {
25
+ recursive: boolean;
26
+ }) => void;
27
+ /**
28
+ * @purpose Get file stats.
29
+ * @param path File path.
30
+ * @returns Stats object.
31
+ */
32
+ stat: (path: string) => {
33
+ isDirectory(): boolean;
34
+ isFile(): boolean;
35
+ };
36
+ /**
37
+ * @purpose List directory contents.
38
+ * @param path Directory path.
39
+ * @returns File names.
40
+ */
41
+ readdir: (path: string) => string[];
42
+ /** @purpose Current working directory. */
43
+ cwd: string;
44
+ }
45
+ /**
46
+ * @purpose Find the ai/directives/ directory in the installed gennady npm package.
47
+ * @param cwd Current working directory.
48
+ * @returns Absolute path to ai/directives/ or null if the package is not found.
49
+ */
50
+ export declare function resolvePackageDir(cwd: string): string | null;
51
+ /**
52
+ * @purpose Recursively collect a list of files in sourceDir with filter and exclusion support.
53
+ * @param sourceDir Source directory to scan.
54
+ * @param [subdirs] Optional list of subdirectories to scan.
55
+ * @throws If subdir does not exist in sourceDir.
56
+ * @returns List of relative file paths.
57
+ */
58
+ export declare function scanDirectives(sourceDir: string, subdirs?: string[]): string[];
59
+ /**
60
+ * @purpose Main entry point: compare source and target, return SyncResult.
61
+ * @param deps Injectable filesystem dependencies.
62
+ * @param opts Sync options (package, target, dryRun, verbose).
63
+ * @returns Sync result with file entries and summary counts.
64
+ */
65
+ export declare function collectAndCompare(deps: SyncCoreDeps, opts: SyncOptions): SyncResult;
@@ -0,0 +1,12 @@
1
+ import type { SyncFileEntry } from './sync.types.js';
2
+ interface FormatOpts {
3
+ dryRun?: boolean;
4
+ }
5
+ /**
6
+ * @purpose Format a list of sync file entries into stdout lines.
7
+ * @param entries List of sync file entries to format.
8
+ * @param [opts] Formatting options (dryRun enables would-add/would-update labels).
9
+ * @returns Array of formatted lines, last line is the summary.
10
+ */
11
+ export declare function formatEntries(entries: SyncFileEntry[], opts?: FormatOpts): string[];
12
+ export {};
@@ -0,0 +1,33 @@
1
+ import { readFileSync, writeFileSync, mkdirSync, statSync, readdirSync } from 'node:fs';
2
+ import { resolvePackageDir } from './sync-core.js';
3
+ /** @purpose Injectable dependencies for the sync CLI command — enables testing without real FS. */
4
+ export type SyncCmdDeps = {
5
+ /** @purpose Read file from disk. */
6
+ readFile?: typeof readFileSync;
7
+ /** @purpose Write file to disk. */
8
+ writeFile?: typeof writeFileSync;
9
+ /** @purpose Create directory. */
10
+ mkdir?: typeof mkdirSync;
11
+ /** @purpose Get file stats. */
12
+ stat?: typeof statSync;
13
+ /** @purpose List directory contents. */
14
+ readdir?: typeof readdirSync;
15
+ /** @purpose Resolve package directory. */
16
+ resolvePackageDir?: typeof resolvePackageDir;
17
+ /** @purpose Standard output stream. */
18
+ stdout?: NodeJS.WriteStream;
19
+ /** @purpose Standard error stream. */
20
+ stderr?: NodeJS.WriteStream;
21
+ };
22
+ /**
23
+ * @purpose CLI entry point for the sync command.
24
+ * *
25
+ * Parses CLI arguments, resolves the package source directory,
26
+ * compares source with target, and outputs the result.
27
+ * *
28
+ * @param rawArgs Raw CLI arguments (typically process.argv).
29
+ * @param [deps] Optional injectable dependencies for testing.
30
+ * @throws {Error} On package not found or invalid subdirectory.
31
+ * @returns Exit code (0 success, 1 error).
32
+ */
33
+ export declare function run(rawArgs: string[], deps?: SyncCmdDeps): number;
@@ -0,0 +1,50 @@
1
+ /** @purpose Discriminated status of a synced file: new, changed, or identical. */
2
+ export type SyncFileStatus = 'added' | 'updated' | 'unchanged';
3
+ /** @purpose Options for the sync command. */
4
+ export interface SyncOptions {
5
+ /** @purpose Absolute path to ai/directives/ in the npm package. */
6
+ sourceDir: string;
7
+ /** @purpose Absolute path to <cwd>/ai/directives/. */
8
+ targetDir: string;
9
+ /** @purpose Optional filter: subdirectory names inside ai/directives/. */
10
+ subdirs?: string[];
11
+ /** @purpose Preview without writing. */
12
+ dryRun?: boolean;
13
+ }
14
+ /** @purpose A single file entry in the sync result. */
15
+ export interface SyncFileEntry {
16
+ /** @purpose Path relative to ai/directives/ (e.g., sdd/discovery.directive.xml). */
17
+ relativePath: string;
18
+ /** @purpose Sync status: added, updated, or unchanged. */
19
+ status: SyncFileStatus;
20
+ /** @purpose Size of the source file in bytes. */
21
+ sourceSize?: number;
22
+ /** @purpose Size of the target file in bytes. */
23
+ targetSize?: number;
24
+ }
25
+ /** @purpose Aggregated result of a sync operation with computed summaries. */
26
+ export declare class SyncResult {
27
+ /** @purpose List of all synced file entries. */
28
+ readonly entries: SyncFileEntry[];
29
+ /**
30
+ * @purpose Construct a SyncResult from a list of entries.
31
+ * @param entries File entries.
32
+ */
33
+ constructor(entries: SyncFileEntry[]);
34
+ /** @purpose Files with status "added". | @returns Array of added entries. */
35
+ get added(): SyncFileEntry[];
36
+ /** @purpose Files with status "updated". | @returns Array of updated entries. */
37
+ get updated(): SyncFileEntry[];
38
+ /** @purpose Files with status "unchanged". | @returns Array of unchanged entries. */
39
+ get unchanged(): SyncFileEntry[];
40
+ /** @purpose Human-readable summary of added/updated/unchanged counts. | @returns Summary string. */
41
+ get summary(): string;
42
+ /** @purpose Dry-run summary message. | @returns Dry-run message. */
43
+ get dryRunSummary(): string;
44
+ }
45
+ /** @purpose Error code: subdirectory not found in source. */
46
+ export declare const ERR_SYNC_SUBDIR_NOT_FOUND = "ERR_SYNC_SUBDIR_NOT_FOUND";
47
+ /** @purpose Error code: package not found in node_modules. */
48
+ export declare const ERR_SYNC_PKG_NOT_FOUND = "ERR_SYNC_PKG_NOT_FOUND";
49
+ /** @purpose Error code: source directory not found. */
50
+ export declare const ERR_SYNC_SOURCE_NOT_FOUND = "ERR_SYNC_SOURCE_NOT_FOUND";
@@ -18,11 +18,11 @@ type MainOpts = {
18
18
  vcs?: VcsGitlabClient;
19
19
  };
20
20
  /**
21
- * @purpose Отправить ответы в дискуссии GitLab MR: читает JSON-массив из stdin или opts, постит notes.
21
+ * @purpose Post replies to GitLab MR discussions: reads JSON array from stdin or opts, posts notes.
22
+ * @param [opts] project, iid, dryRun, stdinJsonArray, token, remote, baseUrl, vcs (for tests).
23
+ * @returns Object { ok, sent, failed, code }; code 0 on ok, otherwise 1.
24
+ * @sideEffect Network: POST to GitLab Discussions API; Console: status and error output.
22
25
  * @consumer CLI (cmd/vcs-reply)
23
- * @param [opts] project, iid, dryRun, stdinJsonArray, token, remote, baseUrl, vcs (для тестов).
24
- * @returns Объект { ok, sent, failed, code }; code 0 при ok, иначе 1.
25
- * @sideEffect Network: POST в GitLab Discussions API; Console: вывод статуса и ошибок.
26
26
  */
27
27
  export declare function main(opts?: MainOpts): Promise<{
28
28
  ok: boolean;
@@ -1,23 +1,24 @@
1
1
  import { AiLegacyModel } from './ai-legacy-model.js';
2
2
  /**
3
- * @purpose Legacy AI Agent — обёртка над AiLegacyModel для получения структурированного JSON-ответа.
4
- * @consumer cmd/agent, тесты
5
- * @invariant brain должен быть экземпляром AiLegacyModel; иначе конструктор бросает.
3
+ * @purpose Legacy AI Agent — wrapper over AiLegacyModel for receiving structured JSON responses.
4
+ * @invariant brain must be an instance of AiLegacyModel; otherwise the constructor throws.
5
+ * @consumer cmd/agent, tests
6
6
  */
7
7
  export declare class AiLegacyAgent {
8
+ /** @purpose AI model instance for making generation requests. */
8
9
  protected _brain: AiLegacyModel;
9
10
  /**
10
- * @purpose Создать агента с заданной моделью.
11
- * @param brain Экземпляр AiLegacyModel для запросов.
12
- * @throws Error если brain не instanceof AiLegacyModel.
11
+ * @purpose Create an agent with the given model.
12
+ * @param brain Instance of AiLegacyModel for requests.
13
+ * @throws Error if brain is not instanceof AiLegacyModel.
13
14
  */
14
15
  constructor(brain: AiLegacyModel);
15
16
  /**
16
- * @purpose Отправить промпт и распарсить ответ как JSON (с обрезкой markdown-блоков кода).
17
- * @param prompt Текст запроса (непустая строка).
18
- * @returns Кортеж [parsed object, null] или [null, Error] при пустом промпте/ошибке парсинга.
19
- * @throws Error при пустом или не-строковом prompt (до запроса).
20
- * @sideEffect Network: вызов this._brain.generate.
17
+ * @purpose Send a prompt and parse the response as JSON (with stripping of markdown code blocks).
18
+ * @param prompt Prompt text (non-empty string).
19
+ * @throws Error on empty or non-string prompt (before the request).
20
+ * @returns Tuple [parsed object, null] or [null, Error] on empty prompt/parsing error.
21
+ * @sideEffect Network: call this._brain.generate.
21
22
  */
22
23
  getJson(prompt: string): Promise<[object, null] | [null, Error]>;
23
24
  }
@@ -7,30 +7,46 @@ type AiLegacyCoreInit = {
7
7
  };
8
8
  type ParsedDiffFile = import('../../../shared/backend/git/git-diff.ts').ParsedDiffFile;
9
9
  /**
10
- * @purpose Ядро выбора модели и батчинга промптов по diff; объединяет GennadyRc и AiLegacyModel.
10
+ * @purpose Core for model selection and prompt batching by diff; combines GennadyRc and AiLegacyModel.
11
+ * @invariant Models loaded from .gennadyrc (cwd, HOME); if absent — getDefault().
11
12
  * @consumer CommitGen, ReviewGen
12
- * @invariant Модели загружаются из .gennadyrc (cwd, HOME); при отсутствии — getDefault().
13
- * @deprecated Используй прямую работу с AiLegacyModel и GennadyRc.
13
+ * @deprecated Use direct work with AiLegacyModel and GennadyRc.
14
14
  */
15
15
  export declare class AiLegacyCore {
16
+ /** @purpose Loaded AI model list from gennadyrc. */
16
17
  protected _models: AiLegacyModel[];
18
+ /** @purpose Currently active model that passed ping check. */
17
19
  protected _activeModel: AiLegacyModel | null;
20
+ /** @purpose Configuration and dependencies for the core. */
18
21
  protected init: AiLegacyCoreInit & {
19
22
  logger: typeof logger;
20
23
  timeout: number;
21
24
  maxInputTokens: number;
22
25
  };
26
+ /**
27
+ * @purpose Initialize AiLegacyCore with loaded models from gennadyrc.
28
+ * @param [init] Configuration (logger, timeout, maxInputTokens).
29
+ */
23
30
  constructor(init?: AiLegacyCoreInit);
24
- /** @purpose Имя первой загруженной модели (для отображения в CLI). */
31
+ /**
32
+ * @purpose Name of the first loaded model (for CLI display).
33
+ * @returns Model name string or undefined.
34
+ */
25
35
  get model(): string | undefined;
26
- /** @purpose URL первой загруженной модели. */
36
+ /**
37
+ * @purpose URL of the first loaded model.
38
+ * @returns API URL string or undefined.
39
+ */
27
40
  get apiUrl(): string | undefined;
28
- /** @purpose Лимит токенов на один батч при разбиении diff. */
41
+ /**
42
+ * @purpose Token limit per batch when splitting diff.
43
+ * @returns Max input tokens count.
44
+ */
29
45
  get maxInputTokens(): number;
30
46
  /**
31
- * @purpose Разбить разобранный diff на батчи по maxInputTokens для последовательных запросов к LLM.
32
- * @param parseDiff Массив ParsedDiffFile (обычно parsedCodeDiff из getGitDiffInfo).
33
- * @returns Массив батчей { tokens, diff, languages }.
47
+ * @purpose Split parsed diff into batches by maxInputTokens for sequential LLM requests.
48
+ * @param parseDiff Array of ParsedDiffFile (usually parsedCodeDiff from getGitDiffInfo).
49
+ * @returns Array of batches { tokens, diff, languages }.
34
50
  */
35
51
  createPromptsBatchesByDiff(parseDiff: ParsedDiffFile[]): {
36
52
  tokens: number;
@@ -38,19 +54,19 @@ export declare class AiLegacyCore {
38
54
  languages: string[];
39
55
  }[];
40
56
  /**
41
- * @purpose Вызвать первую доступную модель (ping) и сгенерировать ответ по промпту.
42
- * @param prompt Текст запроса.
43
- * @param [systemPrompt] Опциональный system-промпт.
44
- * @returns Текст ответа модели или пустая строка при ошибке.
45
- * @sideEffect Network: ping затем generate; Logs: error/warn при сбое модели.
57
+ * @purpose Call the first available model (ping) and generate a response from the prompt.
58
+ * @param prompt Prompt text.
59
+ * @param [systemPrompt] Optional system prompt.
60
+ * @returns Model response text or empty string on error.
61
+ * @sideEffect Network: ping then generate; Logs: error/warn on model failure.
46
62
  */
47
63
  generate(prompt: string, systemPrompt?: {
48
64
  system?: string;
49
65
  }): Promise<string>;
50
66
  /**
51
- * @purpose Выбрать первую модель, успешно ответившую на ping; кэширует в _activeModel.
52
- * @returns Кортеж [модель, null] или [null, Error], если ни одна модель не доступна.
53
- * @sideEffect Network: ping по каждой модели до первого успеха.
67
+ * @purpose Select the first model that successfully responded to ping; caches in _activeModel.
68
+ * @returns Tuple [model, null] or [null, Error] if no model is available.
69
+ * @sideEffect Network: ping each model until first success.
54
70
  */
55
71
  protected _choiceModel(): Promise<[AiLegacyModel, null] | [null, Error]>;
56
72
  }
@@ -1,47 +1,66 @@
1
1
  /**
2
- * @purpose Конфигурация инициализации AI Legacy Model: имя, URL, опциональный ключ и доп. параметры.
2
+ * @purpose AI Legacy Model initialization config: name, URL, optional key and additional parameters.
3
3
  * @consumer AiLegacyModel, AiLegacyCore, GennadyRc
4
4
  */
5
5
  export type AiLegacyModelInit = {
6
+ /** @purpose Model name identifier (e.g. "llama3.1:8b"). */
6
7
  model: string;
8
+ /** @purpose API endpoint URL for generation requests. */
7
9
  url: string;
10
+ /** @purpose Optional API key for authorization. */
8
11
  key?: string;
12
+ /** @purpose Extra parameters merged into the request body. */
9
13
  extra?: Record<string, unknown>;
10
14
  };
11
15
  /**
12
- * @purpose Legacy AI Model (LLM) — единая точка запросов к API генерации (Ollama/OpenAI-совместимые).
16
+ * @purpose Legacy AI Model (LLM) — single point for API generation requests (Ollama/OpenAI-compatible).
17
+ * @invariant Error Policy: network/timeout errors are returned as [null, Error]; does not throw.
18
+ * @invariant Retry Policy: no built-in retries; responsibility on the caller.
13
19
  * @consumer AiLegacyCore, cmd/agent
14
- * @invariant Error Policy: ошибки сети/таймаута возвращаются как [null, Error]; не бросает.
15
- * @invariant Retry Policy: нет встроенных ретраев; ответственность на вызывающей стороне.
16
20
  */
17
21
  export declare class AiLegacyModel {
18
22
  /**
19
- * @purpose Создать экземпляр с дефолтными настройками (Ollama local).
20
- * @returns Экземпляр с model=llama3.1:8b, url=localhost:11434.
23
+ * @purpose Create an instance with default settings (Ollama local).
24
+ * @returns Instance with model=llama3.1:8b, url=localhost:11434.
21
25
  */
22
26
  static getDefault(): AiLegacyModel;
27
+ /** @purpose Model initialization config with name, URL, and key. */
23
28
  protected _init: AiLegacyModelInit;
29
+ /** @purpose Cached ping promise to avoid duplicate pings. */
24
30
  protected _pingPromise: Promise<[boolean, null] | [null, Error]> | null;
31
+ /**
32
+ * @purpose Create an AI model instance with the given configuration.
33
+ * @param init Partial initialization config (model, url, key, extra).
34
+ */
25
35
  constructor(init: Partial<AiLegacyModelInit>);
26
- /** @purpose Имя модели (для логов и заголовков). */
36
+ /**
37
+ * @purpose Model name (for logs and headers).
38
+ * @returns Model name string.
39
+ */
27
40
  get name(): string;
28
- /** @purpose URL эндпоинта API. */
41
+ /**
42
+ * @purpose API endpoint URL.
43
+ * @returns API URL string.
44
+ */
29
45
  get url(): string;
30
- /** @purpose API-ключ (если требуется авторизация). */
46
+ /**
47
+ * @purpose API key (if authorization is required).
48
+ * @returns API key string or undefined.
49
+ */
31
50
  get key(): string | undefined;
32
51
  /**
33
- * @purpose Проверить доступность модели коротким запросом.
34
- * @param [timeout] Таймаут в мс (по умолчанию 10e3).
35
- * @returns Кортеж [true, null] при успехе, [null, Error] при сбое.
36
- * @sideEffect Network: один запрос к API; Logs: debug/error.
52
+ * @purpose Check model availability with a short request.
53
+ * @param [timeout] Timeout in ms (default 10e3).
54
+ * @returns Tuple [true, null] on success, [null, Error] on failure.
55
+ * @sideEffect Network: single request to API; Logs: debug/error.
37
56
  */
38
57
  ping(timeout?: number): Promise<[boolean, null] | [null, Error]>;
39
58
  /**
40
- * @purpose Отправить промпт в LLM и получить ответ (с подстановкой __KEY__ и удалением think-блоков).
41
- * @param prompt Текст запроса пользователя.
42
- * @param [init] system, temperature, timeout, replacements для подстановки в промпт/system.
43
- * @returns Кортеж [текст ответа, null] при успехе, [null, Error] при ошибке сети/парсинга.
44
- * @sideEffect Network: POST к this.url.
59
+ * @purpose Send a prompt to the LLM and get a response (with __KEY__ substitution and think-block removal).
60
+ * @param prompt User prompt text.
61
+ * @param [init] system, temperature, timeout, replacements for substitution in prompt/system.
62
+ * @returns Tuple [response text, null] on success, [null, Error] on network/parsing error.
63
+ * @sideEffect Network: POST to this.url.
45
64
  */
46
65
  generate(prompt: string, init?: {
47
66
  system?: string;
@@ -50,11 +69,11 @@ export declare class AiLegacyModel {
50
69
  replacements?: Record<string, string>;
51
70
  }): Promise<[string, null] | [null, Error]>;
52
71
  /**
53
- * @purpose Выполнить POST-запрос к API и вернуть JSON или ошибку.
54
- * @param params Тело запроса (Ollama- или OpenAI-формат).
55
- * @param [timeout] Таймаут в мс.
56
- * @returns Кортеж [parsed JSON, null] или [null, Error].
57
- * @sideEffect Network: fetch с AbortController.
72
+ * @purpose Execute a POST request to the API and return JSON or an error.
73
+ * @param params Request body (Ollama or OpenAI format).
74
+ * @param [timeout] Timeout in ms.
75
+ * @returns Tuple [parsed JSON, null] or [null, Error].
76
+ * @sideEffect Network: fetch with AbortController.
58
77
  */
59
78
  protected _fetchAsJson(params: unknown, timeout?: number): Promise<[unknown, null] | [null, Error]>;
60
79
  }
@@ -1,32 +1,43 @@
1
+ import type { VcsMergeRequestChanges } from '../../../services/vcs-client/entities/vcs-merge-request-changes.type.js';
2
+ import type { VcsFileContent } from '../../../services/vcs-client/entities/vcs-file-content.type.js';
1
3
  /**
2
- * @purpose Список расширений файлов по умолчанию для сбора контента (cat).
4
+ * @purpose Default file extension list for content collection (cat).
3
5
  * @consumer catGen
4
6
  */
5
7
  export declare const DEFAULT_EXTENSIONS: string[];
6
8
  /**
7
- * @purpose Опции сбора файлов: расширения, исключения, отключение дефолтных исключений.
9
+ * @purpose File collection options: extensions, exclusions, disabling default exclusions.
8
10
  * @consumer catGen
9
11
  */
10
12
  export type CatGenOptions = {
13
+ /** @purpose File extensions to include (e.g. ['.ts', '.md']). */
11
14
  extensions?: string[];
15
+ /** @purpose Patterns or paths to exclude from collection. */
12
16
  exclude?: string | string[];
17
+ /** @purpose When true, skip default node_modules exclusion. */
13
18
  ignoreDefaultExcludes?: boolean;
14
19
  };
15
20
  /**
16
- * @purpose Один результат catGen: абсолютный путь, относительный путь, содержимое файла.
21
+ * @purpose Single catGen result: absolute path, relative path, file contents.
17
22
  * @consumer catGen, cmd/cat
18
23
  */
19
24
  export type CatGenResult = {
25
+ /** @purpose Absolute path of the collected file. */
20
26
  absPath: string;
27
+ /** @purpose Path relative to the working directory. */
21
28
  relativePath: string;
29
+ /** @purpose File contents as a UTF-8 string. */
22
30
  contents: string;
23
31
  };
24
32
  /**
25
- * @purpose Получить содержимое всех файлов по указанным glob-паттернам для вывода в XML/MD.
33
+ * @purpose Get contents of all files by specified glob patterns for output in XML/MD.
34
+ * @sideEffect Filesystem: traversal and reading of files.
26
35
  * @consumer CLI (cmd/cat)
27
- * @param paths Путь к файлу/директории или glob-паттерн(ы); директория раскрывается в **\/*.
28
- * @param options Опции: extensions, exclude, ignoreDefaultExcludes (node_modules по умолчанию исключён).
29
- * @returns Массив объектов { absPath, relativePath, contents }; файлы с ошибкой чтения пропускаются.
30
- * @sideEffect Filesystem: обход и чтение файлов.
31
36
  */
32
37
  export declare const catGen: (paths: string | string[], options?: CatGenOptions) => CatGenResult[];
38
+ /**
39
+ * @purpose Pure function for converting VCS changes and contents into CatGenResult[].
40
+ * Filters deleted files and binary (encoding: base64).
41
+ * @consumer cli/cmd/cat/cat-url.fn.ts
42
+ */
43
+ export declare const catGenFromVcs: (changes: VcsMergeRequestChanges[], files: VcsFileContent[]) => CatGenResult[];
@@ -9,11 +9,12 @@ type CommitGenInit = {
9
9
  [key: string]: unknown;
10
10
  };
11
11
  /**
12
- * @purpose Генерировать commit-сообщение из staged diff через LLM.
12
+ * @purpose Generate commit message from staged diff via LLM.
13
+ * @invariant Uses AiLegacyCore and getGitDiffInfo; returns undefined if diff is empty.
13
14
  * @consumer CLI (cmd/commit)
14
- * @invariant Использует AiLegacyCore и getGitDiffInfo; при пустом diff возвращает undefined.
15
15
  */
16
16
  export declare class CommitGen {
17
+ /** @purpose Configuration with defaults for mode, prompts, timeout. */
17
18
  protected init: CommitGenInit & {
18
19
  mode: string;
19
20
  oneline: boolean;
@@ -24,31 +25,54 @@ export declare class CommitGen {
24
25
  promptCommitChangeset: string;
25
26
  timeout: number;
26
27
  };
28
+ /** @purpose AI core instance for LLM requests. */
27
29
  protected ai: AiLegacyCore;
30
+ /**
31
+ * @purpose Initialize CommitGen with configuration and AI core.
32
+ * @param [init] Configuration overrides (mode, oneline, targetBranch, task, timeout).
33
+ */
28
34
  constructor(init?: CommitGenInit);
29
- /** @purpose Получить экземпляр логгера, используемый при генерации. */
35
+ /**
36
+ * @purpose Get the logger instance used during generation.
37
+ * @returns Logger instance.
38
+ */
30
39
  get logger(): typeof logger;
31
- /** @purpose Режим вывода коммита: auto | oneline | detailed. */
40
+ /**
41
+ * @purpose Commit output mode: auto | oneline | detailed.
42
+ * @returns Mode string.
43
+ */
32
44
  get mode(): string;
33
- /** @purpose Имя активной AI-модели (из первого доступного rc). */
45
+ /**
46
+ * @purpose Active AI model name (from the first available rc).
47
+ * @returns Model name string or undefined.
48
+ */
34
49
  get model(): string | undefined;
35
- /** @purpose URL API активной модели. */
50
+ /**
51
+ * @purpose Active model API URL.
52
+ * @returns API URL string or undefined.
53
+ */
36
54
  get apiUrl(): string | undefined;
37
- /** @purpose Ветка, относительно которой строится diff (если задана). */
55
+ /**
56
+ * @purpose Branch against which the diff is built (if specified).
57
+ * @returns Target branch name or undefined.
58
+ */
38
59
  get targetBranch(): string | undefined;
39
- /** @purpose Идентификатор задачи для подстановки в subject (опционально). */
60
+ /**
61
+ * @purpose Task identifier for substitution in subject (optional).
62
+ * @returns Task ID string or number, or undefined.
63
+ */
40
64
  get task(): string | number | undefined;
41
65
  /**
42
- * @purpose Вызвать LLM с одним промптом без think-блоков (для тестов или кастомного ввода).
43
- * @param input Текст промпта.
44
- * @returns Ответ модели как строка.
45
- * @sideEffect Network: запрос к AI API.
66
+ * @purpose Call LLM with a single prompt without think blocks (for tests or custom input).
67
+ * @param input Prompt text.
68
+ * @returns Model response as string.
69
+ * @sideEffect Network: request to AI API.
46
70
  */
47
71
  fetchPrompt(input: string): Promise<string>;
48
72
  /**
49
- * @purpose Сгенерировать commit-сообщение по staged diff (batches → changeset → message).
50
- * @returns Строка сообщения (oneline или с description) или undefined при пустом diff/ошибке.
51
- * @sideEffect Network: запросы к AI; Logs: info/warn/debug.
73
+ * @purpose Generate commit message from staged diff (batches → changeset → message).
74
+ * @returns Message string (oneline or with description) or undefined on empty diff/error.
75
+ * @sideEffect Network: requests to AI; Logs: info/warn/debug.
52
76
  */
53
77
  generate(): Promise<string | undefined>;
54
78
  }