@ipul-labs/forge 1.16.7 → 1.17.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 (280) hide show
  1. package/README.md +58 -21
  2. package/lib/bin/cli/analyze.d.ts +9 -0
  3. package/lib/bin/cli/analyze.d.ts.map +1 -0
  4. package/lib/bin/cli/analyze.js +491 -0
  5. package/lib/bin/cli/analyze.js.map +1 -0
  6. package/lib/bin/cli/apply.d.ts +2 -0
  7. package/lib/bin/cli/apply.d.ts.map +1 -0
  8. package/lib/bin/cli/apply.js +262 -0
  9. package/lib/bin/cli/apply.js.map +1 -0
  10. package/lib/bin/cli/cifix.d.ts +2 -0
  11. package/lib/bin/cli/cifix.d.ts.map +1 -0
  12. package/lib/bin/cli/cifix.js +310 -0
  13. package/lib/bin/cli/cifix.js.map +1 -0
  14. package/lib/bin/cli/close.d.ts +2 -0
  15. package/lib/bin/cli/close.d.ts.map +1 -0
  16. package/lib/bin/cli/close.js +113 -0
  17. package/lib/bin/cli/close.js.map +1 -0
  18. package/lib/bin/cli/createIssue.d.ts +2 -0
  19. package/lib/bin/cli/createIssue.d.ts.map +1 -0
  20. package/lib/bin/cli/createIssue.js +108 -0
  21. package/lib/bin/cli/createIssue.js.map +1 -0
  22. package/lib/bin/cli/doctor.d.ts +2 -0
  23. package/lib/bin/cli/doctor.d.ts.map +1 -0
  24. package/lib/bin/cli/doctor.js +145 -0
  25. package/lib/bin/cli/doctor.js.map +1 -0
  26. package/lib/bin/cli/init.d.ts +4 -0
  27. package/lib/bin/cli/init.d.ts.map +1 -0
  28. package/lib/bin/cli/init.js +288 -0
  29. package/lib/bin/cli/init.js.map +1 -0
  30. package/lib/bin/cli/ink.d.ts +23 -0
  31. package/lib/bin/cli/ink.d.ts.map +1 -0
  32. package/{bin → lib/bin}/cli/ink.js +18 -19
  33. package/lib/bin/cli/ink.js.map +1 -0
  34. package/lib/bin/cli/issue.d.ts +2 -0
  35. package/lib/bin/cli/issue.d.ts.map +1 -0
  36. package/lib/bin/cli/issue.js +114 -0
  37. package/lib/bin/cli/issue.js.map +1 -0
  38. package/lib/bin/cli/issues.d.ts +2 -0
  39. package/lib/bin/cli/issues.d.ts.map +1 -0
  40. package/lib/bin/cli/issues.js +149 -0
  41. package/lib/bin/cli/issues.js.map +1 -0
  42. package/lib/bin/cli/merge.d.ts +2 -0
  43. package/lib/bin/cli/merge.d.ts.map +1 -0
  44. package/lib/bin/cli/merge.js +162 -0
  45. package/lib/bin/cli/merge.js.map +1 -0
  46. package/lib/bin/cli/refine.d.ts +2 -0
  47. package/lib/bin/cli/refine.d.ts.map +1 -0
  48. package/lib/bin/cli/refine.js +249 -0
  49. package/lib/bin/cli/refine.js.map +1 -0
  50. package/lib/bin/cli/repl.d.ts +2 -0
  51. package/lib/bin/cli/repl.d.ts.map +1 -0
  52. package/lib/bin/cli/repl.js +309 -0
  53. package/lib/bin/cli/repl.js.map +1 -0
  54. package/lib/bin/cli/repos.d.ts +2 -0
  55. package/lib/bin/cli/repos.d.ts.map +1 -0
  56. package/lib/bin/cli/repos.js +86 -0
  57. package/lib/bin/cli/repos.js.map +1 -0
  58. package/lib/bin/cli/resolution.d.ts +2 -0
  59. package/lib/bin/cli/resolution.d.ts.map +1 -0
  60. package/lib/bin/cli/resolution.js +139 -0
  61. package/lib/bin/cli/resolution.js.map +1 -0
  62. package/lib/bin/cli/serverClient.d.ts +26 -0
  63. package/lib/bin/cli/serverClient.d.ts.map +1 -0
  64. package/lib/bin/cli/serverClient.js +111 -0
  65. package/lib/bin/cli/serverClient.js.map +1 -0
  66. package/lib/bin/cli/session.d.ts +8 -0
  67. package/lib/bin/cli/session.d.ts.map +1 -0
  68. package/lib/bin/cli/session.js +212 -0
  69. package/lib/bin/cli/session.js.map +1 -0
  70. package/lib/bin/cli/sessionStore.d.ts +69 -0
  71. package/lib/bin/cli/sessionStore.d.ts.map +1 -0
  72. package/lib/bin/cli/sessionStore.js +196 -0
  73. package/lib/bin/cli/sessionStore.js.map +1 -0
  74. package/lib/bin/cli/ship.d.ts +33 -0
  75. package/lib/bin/cli/ship.d.ts.map +1 -0
  76. package/lib/bin/cli/ship.js +737 -0
  77. package/lib/bin/cli/ship.js.map +1 -0
  78. package/lib/bin/cli/types.d.ts +59 -0
  79. package/lib/bin/cli/types.d.ts.map +1 -0
  80. package/lib/bin/cli/types.js +2 -0
  81. package/lib/bin/cli/types.js.map +1 -0
  82. package/lib/bin/cli/update.d.ts +2 -0
  83. package/lib/bin/cli/update.d.ts.map +1 -0
  84. package/lib/bin/cli/update.js +87 -0
  85. package/lib/bin/cli/update.js.map +1 -0
  86. package/lib/bin/cli/utils.d.ts +43 -0
  87. package/lib/bin/cli/utils.d.ts.map +1 -0
  88. package/lib/bin/cli/utils.js +171 -0
  89. package/lib/bin/cli/utils.js.map +1 -0
  90. package/lib/bin/cli/validate.d.ts +2 -0
  91. package/lib/bin/cli/validate.d.ts.map +1 -0
  92. package/lib/bin/cli/validate.js +283 -0
  93. package/lib/bin/cli/validate.js.map +1 -0
  94. package/lib/bin/cli/watch.d.ts +5 -0
  95. package/lib/bin/cli/watch.d.ts.map +1 -0
  96. package/lib/bin/cli/watch.js +263 -0
  97. package/lib/bin/cli/watch.js.map +1 -0
  98. package/lib/bin/forge-agent.d.ts +3 -0
  99. package/lib/bin/forge-agent.d.ts.map +1 -0
  100. package/{bin → lib/bin}/forge-agent.js +104 -105
  101. package/lib/bin/forge-agent.js.map +1 -0
  102. package/lib/server/forge/core/ForgeAgent.d.ts +260 -0
  103. package/lib/server/forge/core/ForgeAgent.d.ts.map +1 -0
  104. package/lib/server/forge/core/ForgeAgent.js +995 -0
  105. package/lib/server/forge/core/ForgeAgent.js.map +1 -0
  106. package/lib/server/forge/core/agentClient.d.ts +39 -0
  107. package/lib/server/forge/core/agentClient.d.ts.map +1 -0
  108. package/{server → lib/server}/forge/core/agentClient.js +7 -12
  109. package/lib/server/forge/core/agentClient.js.map +1 -0
  110. package/lib/server/forge/core/branchName.d.ts +20 -0
  111. package/lib/server/forge/core/branchName.d.ts.map +1 -0
  112. package/lib/server/forge/core/branchName.js +39 -0
  113. package/lib/server/forge/core/branchName.js.map +1 -0
  114. package/lib/server/forge/core/claudeClient.d.ts +60 -0
  115. package/lib/server/forge/core/claudeClient.d.ts.map +1 -0
  116. package/lib/server/forge/core/claudeClient.js +347 -0
  117. package/lib/server/forge/core/claudeClient.js.map +1 -0
  118. package/lib/server/forge/core/configStore.d.ts +76 -0
  119. package/lib/server/forge/core/configStore.d.ts.map +1 -0
  120. package/lib/server/forge/core/configStore.js +213 -0
  121. package/lib/server/forge/core/configStore.js.map +1 -0
  122. package/lib/server/forge/core/gitlabClient.d.ts +144 -0
  123. package/lib/server/forge/core/gitlabClient.d.ts.map +1 -0
  124. package/{server → lib/server}/forge/core/gitlabClient.js +98 -180
  125. package/lib/server/forge/core/gitlabClient.js.map +1 -0
  126. package/lib/server/forge/core/jobs.d.ts +67 -0
  127. package/lib/server/forge/core/jobs.d.ts.map +1 -0
  128. package/lib/server/forge/core/jobs.js +185 -0
  129. package/lib/server/forge/core/jobs.js.map +1 -0
  130. package/lib/server/forge/core/k8s.d.ts +18 -0
  131. package/lib/server/forge/core/k8s.d.ts.map +1 -0
  132. package/lib/server/forge/core/k8s.js +49 -0
  133. package/lib/server/forge/core/k8s.js.map +1 -0
  134. package/lib/server/forge/core/localRepo.d.ts +36 -0
  135. package/lib/server/forge/core/localRepo.d.ts.map +1 -0
  136. package/lib/server/forge/core/localRepo.js +165 -0
  137. package/lib/server/forge/core/localRepo.js.map +1 -0
  138. package/lib/server/forge/core/openclawClient.d.ts +61 -0
  139. package/lib/server/forge/core/openclawClient.d.ts.map +1 -0
  140. package/lib/server/forge/core/openclawClient.js +111 -0
  141. package/lib/server/forge/core/openclawClient.js.map +1 -0
  142. package/lib/server/forge/core/prompts.d.ts +96 -0
  143. package/lib/server/forge/core/prompts.d.ts.map +1 -0
  144. package/lib/server/forge/core/prompts.js +450 -0
  145. package/lib/server/forge/core/prompts.js.map +1 -0
  146. package/lib/server/forge/core/providers/azuredevops.d.ts +134 -0
  147. package/lib/server/forge/core/providers/azuredevops.d.ts.map +1 -0
  148. package/lib/server/forge/core/providers/azuredevops.js +360 -0
  149. package/lib/server/forge/core/providers/azuredevops.js.map +1 -0
  150. package/lib/server/forge/core/providers/base.d.ts +114 -0
  151. package/lib/server/forge/core/providers/base.d.ts.map +1 -0
  152. package/lib/server/forge/core/providers/base.js +98 -0
  153. package/lib/server/forge/core/providers/base.js.map +1 -0
  154. package/lib/server/forge/core/providers/github.d.ts +133 -0
  155. package/lib/server/forge/core/providers/github.d.ts.map +1 -0
  156. package/lib/server/forge/core/providers/github.js +307 -0
  157. package/lib/server/forge/core/providers/github.js.map +1 -0
  158. package/lib/server/forge/core/providers/gitlab.d.ts +144 -0
  159. package/lib/server/forge/core/providers/gitlab.d.ts.map +1 -0
  160. package/lib/server/forge/core/providers/gitlab.js +407 -0
  161. package/lib/server/forge/core/providers/gitlab.js.map +1 -0
  162. package/lib/server/forge/core/providers/index.d.ts +21 -0
  163. package/lib/server/forge/core/providers/index.d.ts.map +1 -0
  164. package/lib/server/forge/core/providers/index.js +43 -0
  165. package/lib/server/forge/core/providers/index.js.map +1 -0
  166. package/lib/server/forge/core/providers/types.d.ts +80 -0
  167. package/lib/server/forge/core/providers/types.d.ts.map +1 -0
  168. package/lib/server/forge/core/providers/types.js +2 -0
  169. package/lib/server/forge/core/providers/types.js.map +1 -0
  170. package/lib/server/forge/core/quotaClient.d.ts +48 -0
  171. package/lib/server/forge/core/quotaClient.d.ts.map +1 -0
  172. package/lib/server/forge/core/quotaClient.js +88 -0
  173. package/lib/server/forge/core/quotaClient.js.map +1 -0
  174. package/lib/server/forge/core/types.d.ts +160 -0
  175. package/lib/server/forge/core/types.d.ts.map +1 -0
  176. package/lib/server/forge/core/types.js +2 -0
  177. package/lib/server/forge/core/types.js.map +1 -0
  178. package/lib/server/forge/core/validator/attribute.d.ts +31 -0
  179. package/lib/server/forge/core/validator/attribute.d.ts.map +1 -0
  180. package/lib/server/forge/core/validator/attribute.js +82 -0
  181. package/lib/server/forge/core/validator/attribute.js.map +1 -0
  182. package/lib/server/forge/core/validator/clone.d.ts +14 -0
  183. package/lib/server/forge/core/validator/clone.d.ts.map +1 -0
  184. package/lib/server/forge/core/validator/clone.js +99 -0
  185. package/lib/server/forge/core/validator/clone.js.map +1 -0
  186. package/lib/server/forge/core/validator/cmd.d.ts +23 -0
  187. package/lib/server/forge/core/validator/cmd.d.ts.map +1 -0
  188. package/lib/server/forge/core/validator/cmd.js +87 -0
  189. package/lib/server/forge/core/validator/cmd.js.map +1 -0
  190. package/lib/server/forge/core/validator/fs.d.ts +5 -0
  191. package/lib/server/forge/core/validator/fs.d.ts.map +1 -0
  192. package/{server → lib/server}/forge/core/validator/fs.js +8 -3
  193. package/lib/server/forge/core/validator/fs.js.map +1 -0
  194. package/lib/server/forge/core/validator/overlay.d.ts +13 -0
  195. package/lib/server/forge/core/validator/overlay.d.ts.map +1 -0
  196. package/lib/server/forge/core/validator/overlay.js +53 -0
  197. package/lib/server/forge/core/validator/overlay.js.map +1 -0
  198. package/lib/server/forge/core/validator/projectType.d.ts +20 -0
  199. package/lib/server/forge/core/validator/projectType.d.ts.map +1 -0
  200. package/lib/server/forge/core/validator/projectType.js +94 -0
  201. package/lib/server/forge/core/validator/projectType.js.map +1 -0
  202. package/lib/server/forge/core/validator/runners/go.d.ts +21 -0
  203. package/lib/server/forge/core/validator/runners/go.d.ts.map +1 -0
  204. package/lib/server/forge/core/validator/runners/go.js +99 -0
  205. package/lib/server/forge/core/validator/runners/go.js.map +1 -0
  206. package/lib/server/forge/core/validator/runners/node.d.ts +12 -0
  207. package/lib/server/forge/core/validator/runners/node.d.ts.map +1 -0
  208. package/lib/server/forge/core/validator/runners/node.js +75 -0
  209. package/lib/server/forge/core/validator/runners/node.js.map +1 -0
  210. package/lib/server/forge/core/validator/tdd.d.ts +30 -0
  211. package/lib/server/forge/core/validator/tdd.d.ts.map +1 -0
  212. package/lib/server/forge/core/validator/tdd.js +96 -0
  213. package/lib/server/forge/core/validator/tdd.js.map +1 -0
  214. package/lib/server/forge/core/validator.d.ts +58 -0
  215. package/lib/server/forge/core/validator.d.ts.map +1 -0
  216. package/lib/server/forge/core/validator.js +150 -0
  217. package/lib/server/forge/core/validator.js.map +1 -0
  218. package/lib/server/forge/routes.d.ts +22 -0
  219. package/lib/server/forge/routes.d.ts.map +1 -0
  220. package/lib/server/forge/routes.js +984 -0
  221. package/lib/server/forge/routes.js.map +1 -0
  222. package/lib/server.d.ts +2 -0
  223. package/lib/server.d.ts.map +1 -0
  224. package/lib/server.js +52 -0
  225. package/lib/server.js.map +1 -0
  226. package/lib/shared/events.d.ts +12 -0
  227. package/lib/shared/events.d.ts.map +1 -0
  228. package/lib/shared/events.js +12 -0
  229. package/lib/shared/events.js.map +1 -0
  230. package/package.json +17 -13
  231. package/scripts/fix-shebang.cjs +10 -0
  232. package/bin/cli/analyze.js +0 -516
  233. package/bin/cli/apply.js +0 -264
  234. package/bin/cli/cifix.js +0 -300
  235. package/bin/cli/close.js +0 -125
  236. package/bin/cli/createIssue.js +0 -112
  237. package/bin/cli/doctor.js +0 -161
  238. package/bin/cli/init.js +0 -306
  239. package/bin/cli/issue.js +0 -116
  240. package/bin/cli/issues.js +0 -155
  241. package/bin/cli/merge.js +0 -175
  242. package/bin/cli/refine.js +0 -253
  243. package/bin/cli/repl.js +0 -301
  244. package/bin/cli/repos.js +0 -91
  245. package/bin/cli/resolution.js +0 -126
  246. package/bin/cli/session.js +0 -230
  247. package/bin/cli/sessionStore.js +0 -211
  248. package/bin/cli/ship.js +0 -762
  249. package/bin/cli/update.js +0 -95
  250. package/bin/cli/utils.js +0 -145
  251. package/bin/cli/validate.js +0 -280
  252. package/bin/cli/watch.js +0 -274
  253. package/server/forge/core/ForgeAgent.js +0 -1179
  254. package/server/forge/core/ForgeAgent.test.js +0 -179
  255. package/server/forge/core/branchName.js +0 -41
  256. package/server/forge/core/claudeClient.js +0 -378
  257. package/server/forge/core/configStore.js +0 -229
  258. package/server/forge/core/configStore.test.js +0 -89
  259. package/server/forge/core/jobs.js +0 -180
  260. package/server/forge/core/k8s.js +0 -54
  261. package/server/forge/core/localRepo.js +0 -153
  262. package/server/forge/core/openclawClient.js +0 -125
  263. package/server/forge/core/prompts.js +0 -483
  264. package/server/forge/core/prompts.test.js +0 -219
  265. package/server/forge/core/providers/azuredevops.js +0 -409
  266. package/server/forge/core/providers/base.js +0 -208
  267. package/server/forge/core/providers/github.js +0 -348
  268. package/server/forge/core/providers/gitlab.js +0 -529
  269. package/server/forge/core/providers/index.js +0 -47
  270. package/server/forge/core/quotaClient.js +0 -101
  271. package/server/forge/core/validator/attribute.js +0 -84
  272. package/server/forge/core/validator/clone.js +0 -105
  273. package/server/forge/core/validator/cmd.js +0 -98
  274. package/server/forge/core/validator/overlay.js +0 -52
  275. package/server/forge/core/validator/projectType.js +0 -87
  276. package/server/forge/core/validator/runners/go.js +0 -107
  277. package/server/forge/core/validator/runners/node.js +0 -84
  278. package/server/forge/core/validator/tdd.js +0 -105
  279. package/server/forge/core/validator.js +0 -167
  280. package/server/forge/routes.js +0 -1026
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyze.js","sourceRoot":"","sources":["../../../bin/cli/analyze.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AACxD,OAAO,EACN,iBAAiB,EACjB,SAAS,EACT,WAAW,EACX,UAAU,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACN,WAAW,EACX,OAAO,EACP,YAAY,EACZ,cAAc,EAEd,gBAAgB,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACN,MAAM,EACN,WAAW,EACX,OAAO,EACP,WAAW,EACX,aAAa,GACb,MAAM,mBAAmB,CAAC;AAI3B,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,SAAS,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAqD;IAC5F,IAAI,KAAK,CAAC;IACV,IAAI,MAAM,KAAK,SAAS;QACvB,KAAK,GAAG,CAAC,CAAA,IAAI,IAAI,kBAAkB,OAAO,mBAAmB,CAAC;SAC1D,IAAI,MAAM,KAAK,MAAM;QAAE,KAAK,GAAG,CAAC,CAAA,IAAI,IAAI,qBAAqB,CAAC;;QAC9D,KAAK,GAAG,CAAC,CAAA,IAAI,IAAI,mBAAmB,CAAC;IAC1C,OAAO,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC;IAC5B,KAAK;KACJ,IAAI,eAAe,IAAI;KACvB,IAAI,KAAK,OAAO;KAChB,CAAC;AACN,CAAC;AAED,SAAS,OAAO,CAAC,EAAE,IAAI,EAA0B;IAChD,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,CAAC,CAAA,IAAI,OAAO,OAAO,IAAI,KAAK,CAAC;IAC9D,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;QACtB,OAAO,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC,KAAK,IAAI,aAAa,IAAI,CAAC,IAAI,QAAQ,CAAC;IACxE,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/E,OAAO,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC;MAC3B,IAAI,aAAa,IAAI,CAAC,WAAW,QAAQ,IAAI,CAAC,YAAY,eAAe,IAAI;MAC7E,CAAC;IACN,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;QACxB,OAAO,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC,KAAK,IAAI,yBAAyB,IAAI,MAAM,IAAI,CAAC,OAAO,QAAQ,CAAC;IACjG,OAAO,IAAI,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACrC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,OAAO,CAAC;IACrE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,MAAM,CAAC;IACzC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvC,OAAO,SAAS,CAAC;AAClB,CAAC;AAED,SAAS,SAAS,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAwD;IACpG,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,QAAQ,IAAI,EAAE,EAAE,QAAQ,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;IACvF,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;IAChD,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACjE,OAAO,CAAC,CAAA,IAAI,GAAG,sCAAsC,CAAC;IACnD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACrC,OAAO,CAAC,CAAA,IAAI,IAAI,QAAQ,CAAC,UAAU,KAAK,aAAa,KAAK,KAAK,SAAS,IAAI,IAAI,IAAI,GAAG,KAAK,CAAC;IAC9F,CAAC,CAAC;IACA,SAAS;QACV,CAAC,CAAC,CAAC,CAAA,IAAI,IAAI,aAAa,SAAS,KAAK,CAAC,MAAM,GAAG,cAAc,mDAAmD,KAAK;QACtH,CAAC,CAAC,IAAI;KACJ,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,MAAM,EAAE,KAAK,EAA0C;IAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;IAC5C,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC;IAC5C,MAAM,QAAQ,GAAG,CAAC,QAAQ,CAAC,CAAC,sCAAsC;IAClE,MAAM,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,KAAK,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;IAC7F,OAAO,CAAC,CAAA,IAAI,GAAG,qCAAqC,CAAC,eAAe,CAAC;KACjE,IAAI,mBAAmB,MAAM;IAC9B,MAAM,CAAC,OAAO;QACf,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC,KAAK,IAAI,aAAa,MAAM,CAAC,OAAO,QAAQ;QACtE,CAAC,CAAC,IAAI;IACL,QAAQ;QACT,CAAC,CAAC,CAAC,CAAA,IAAI,SAAS,SAAS,MAAM,CAAC,IAAI,aAAa,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,EAAE,aAAa,MAAM,CAAC,QAAQ,IAAI,EAAE,KAAK;QAC7H,CAAC,CAAC,IAAI;KACJ,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAC,EAAE,UAAU,EAAwD;IAC9F,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAC7B,MAAM,IAAI,GAAG,oBAAoB,UAAU,CAAC,KAAK,8BAA8B,UAAU,CAAC,EAAE,+CAA+C,CAAC;IAC5I,OAAO,CAAC,CAAA,IAAI,GAAG,cAAc,CAAC;KAC1B,IAAI,mBAAmB,IAAI;KAC3B,CAAC;AACN,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,MAAM,EAA8B;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IACrC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE,CAAC;IAC7C,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,OAAO,CAAC,CAAA,IAAI,GAAG,qCAAqC,CAAC,eAAe,CAAC;KACjE,IAAI,aAAa,gBAAgB;KACjC,GAAG,cAAc,CAAC;MACjB,IAAI;MACJ,IAAI,KAAK,MAAM,CAAC,KAAK,EAAE,GAAG,KAAK,UAAU;;IAE3C,MAAM,CAAC,OAAO;QACf,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG;OACN,IAAI;OACJ,IAAI,IAAI,MAAM,CAAC,OAAO;OACtB;QACJ,CAAC,CAAC,IAAI;IACL,MAAM,CAAC,KAAK,EAAE,MAAM;QACrB,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG;OACN,IAAI;OACJ,IAAI,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;OAC/B;QACJ,CAAC,CAAC,IAAI;KACJ,iBAAiB,eAAe,UAAU;IAC3C,MAAM,CAAC,WAAW;QACnB,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG,qCAAqC,CAAC;OAC5C,IAAI;OACJ,GAAG,eAAe,CAAC,KAAK,IAAI,IAAI,MAAM,CAAC,WAAW;OAClD;QACJ,CAAC,CAAC,IAAI;KACJ,GAAG,cAAc,CAAC;MACjB,IAAI,aAAa,YAAY,OAAO,CAAC,MAAM,IAAI;;IAEjD,OAAO,CAAC,MAAM,KAAK,CAAC;QACrB,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC,KAAK,IAAI,oDAAoD;QACvF,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAc,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAA,IAAI,WAAW,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC;KACjG,CAAC;AACN,CAAC;AAaD,SAAS,WAAW,CAAC,EACpB,GAAG,EACH,OAAO,EACP,WAAW,EACX,KAAK,EACL,SAAS,EACT,UAAU,EACV,SAAS,EACT,MAAM,GACY;IAClB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAEtE,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjB,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,MAAM,WAAW,GAAG,CAAC,GAAe,EAAE,SAA+B,EAAE,EAAE;QACxE,IAAI,SAAS,EAAE,OAAO;YAAE,OAAO;QAC/B,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;QACjB,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,GAAG,CAAC,IAAI,CAAC;QAC3C,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;YACjB,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAE,EAAE,CAC7C,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACf,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE;gBAC3B,CAAC,CAAC,EAAE,CACL,CAAC;YACH,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,UAAU;oBACd,OAAO;wBACN,GAAG,YAAY,CAAC,IAAI,CAAC;wBACrB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE;qBACzE,CAAC;gBACH,KAAK,KAAK;oBACT,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;gBACtD,KAAK,OAAO;oBACX,OAAO;wBACN,GAAG,IAAI;wBACP,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE;qBAC/F,CAAC;gBACH,KAAK,OAAO;oBACX,OAAO;wBACN,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAClB,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAChF;wBACD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE;qBACvC,CAAC;gBACH;oBACC,OAAO,IAAI,CAAC;YACd,CAAC;QACF,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACb,CAAC,CAAC;IAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,EAAE;QACnC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CACjB,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAChG,CAAC;QACF,IAAI,KAAK;YAAE,SAAS,CAAC,KAAuB,CAAC,CAAC;QAC9C,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC,CAAC;IAEF,SAAS,CAAC,GAAG,EAAE;QACd,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;QACrC,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBAC3C,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAE7C,IAAI,KAAK,GAAG,IAAI,CAAC;gBAEjB,IAAI,QAAQ,EAAE,CAAC;oBACd,MAAM,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC,WAAW,GAAG,UAAU,EAAE;wBACtD,IAAI,EAAE,OAAO;wBACb,cAAc,EAAE,WAAW;wBAC3B,KAAK,EAAE,SAAS;wBAChB,KAAK;wBACL,MAAM,EAAE,UAAU;wBAClB,IAAI,EAAE,OAAO;qBACb,CAAC,CAAC;oBACH,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;wBAChC,IAAI,SAAS,CAAC,OAAO;4BAAE,OAAO;wBAC9B,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;wBACzC,IAAI,IAAI;4BAAE,KAAK,GAAG,IAAI,CAAC;oBACxB,CAAC;gBACF,CAAC;qBAAM,CAAC;oBACP,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,kCAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iCAAiC,CAAC,EACzD,CAAC;oBACF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;wBAC5B,OAAO,EAAE,OAAO;wBAChB,iBAAiB,EAAE,WAAW;wBAC9B,KAAK,EAAE,SAAS;qBAChB,CAAC,CAAC;oBACH,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;oBACpE,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;oBACvD,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,GAAe,EAAE,EAAE;wBACjD,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;wBACzC,IAAI,IAAI;4BAAE,KAAK,GAAG,IAAI,CAAC;oBACxB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;gBAC3C,CAAC;gBAED,IAAI,SAAS,CAAC,OAAO;oBAAE,OAAO;gBAC9B,QAAQ,CAAC,KAAK,CAAC,CAAC;YACjB,CAAC;YAAC,OAAO,GAAY,EAAE,CAAC;gBACvB,IAAI,SAAS,CAAC,OAAO;oBAAE,OAAO;gBAC9B,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBACnE,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;oBAClB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAClB,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAChF;oBACD,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE;iBAC1C,CAAC,CAAC;gBACH,WAAW,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3C,CAAC;QACF,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,GAAG,EAAE,GAAG,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5C,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,CAAA,IAAI,GAAG;IACZ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI;IACjF,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,IAAI,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC3D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA,IAAI,WAAW,WAAW,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI;KACrD,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAsB;IAC9D,MAAM,MAAM,CACX,CAAC,CAAA,IAAI,GAAG;MACJ,WAAW,WAAW,MAAM;MAC5B,CACJ,CAAC;AACH,CAAC;AAmBD,KAAK,UAAU,qBAAqB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAwB;IACpH,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;QAAE,OAAO;IAC1B,IAAI,CAAC;QACJ,IAAI,MAAM;YAAE,MAAM,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YAC5B,IAAI;YACJ,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC;YAChB,OAAO;YACP,WAAW;YACX,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,gBAAgB;YAClD,SAAS,EAAE,KAAK,EAAE,OAAO,IAAI,IAAI;SACjC,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,GAAG,IAAI,MAAM;YAAE,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,WAAW,CAAC,IAAI,EAAE,GAAG,EAAE;YAC5B,IAAI,EAAE,qBAAqB;YAC3B,EAAE,EAAE,CAAC,KAAK;YACV,KAAK,EAAE,KAAK,EAAE,OAAO;SACrB,CAAC,CAAC;QACH,MAAM,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACzB,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAChE,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC5E,CAAC;IACF,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjH,CAAC;AACF,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAAC,UAAkB;IACjD,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,GAAG;SAChB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,OAAO,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACb,IAAI,CAAC;YACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QAAC,MAAM,CAAC;YACR,OAAO,IAAI,CAAC;QACb,CAAC;IACF,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;IAElB,IAAI,OAAO,GAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,MAAM,CACX,CAAC,CAAA,IAAI,UAAU,WAAW,MAAM,WAAW,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CACpF,CAAC;IACF,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,MAAM,EAAE,MAAM,EAAiE;IACpG,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAClE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IAEtE,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjB,IAAI,EAAE,CAAC;IACR,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEf,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,KAAK,GAA0B,IAAI,CAAC;QACxC,MAAM,IAAI,GAAmB,EAAE,CAAC;QAChC,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAE,EAAE,CAC7C,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CACf,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAC9E,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;YAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,KAAK,GAAI,GAAG,CAAC,IAAuB,IAAI,IAAI,CAAC;gBAC7C,SAAS;YACV,CAAC;YACD,QAAQ,GAAG,CAAC,IAAI,EAAE,CAAC;gBAClB,KAAK,UAAU,CAAC,CAAC,CAAC;oBACjB,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;oBAClC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChB,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE;wBACpB,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,OAAO,EAAE,GAAG,CAAC,OAAO;wBACpB,MAAM,EAAE,SAAS;qBACjB,CAAC,CAAC;oBACH,MAAM;gBACP,CAAC;gBACD,KAAK,KAAK;oBACT,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC9C,MAAM;gBACP,KAAK,OAAO;oBACX,IAAI,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,OAAO;wBACb,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,YAAY,EAAE,GAAG,CAAC,YAAY;wBAC9B,IAAI,EAAE,GAAG,CAAC,IAAI;qBACd,CAAC,CAAC;oBACH,MAAM;gBACP,KAAK,OAAO,CAAC,CAAC,CAAC;oBACd,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAC9B,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,MAAM,KAAK,SAAS;wBAC5C,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;wBAC7B,CAAC,CAAC,EAAE,CACL,CAAC;oBACF,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;oBAChB,IAAI,CAAC,IAAI,CAAC,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC9D,MAAM;gBACP,CAAC;gBACD,QAAQ;YACT,CAAC;QACF,CAAC;QACD,QAAQ,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7B,IAAI,KAAK;YAAE,SAAS,CAAC,KAAK,CAAC,CAAC;QAC5B,WAAW,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3B,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,CAAA,IAAI,GAAG;IACZ,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA,IAAI,OAAO,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC;IAC3D,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA,IAAI,WAAW,WAAW,MAAM,KAAK,CAAC,CAAC,CAAC,IAAI;KACrD,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAc;IAC9C,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IAC7C,IAAI,UAAU;QAAE,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;IAEpD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;QACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;QACd,OAAO,CAAC,KAAK,CACZ,mFAAmF,CACnF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,SAAS,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,IAAI,QAAQ,CAAC;IACvD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,IAAI,SAAS,CAAC;IAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAEvC,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,kCAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iCAAiC,CAAC,EACzD,CAAC;IAEF,IAAI,IAAI,IAAI,KAAK,EAAE,CAAC;QACnB,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;YAC5B,OAAO,EAAE,OAAO;YAChB,iBAAiB,EAAE,WAAW;YAC9B,KAAK,EAAE,SAAS;SAChB,CAAC,CAAC;QACH,IAAI,WAAW,GAA0B,IAAI,CAAC;QAC9C,MAAM,MAAM,GAAiB,EAAE,CAAC;QAChC,MAAM,OAAO,GAAG,CAAC,GAAe,EAAE,EAAE;YACnC,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ;gBAAE,WAAW,GAAG,GAAG,CAAC,IAAsB,CAAC;YACpE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjB,IAAI,IAAI;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC,CAAC;QACF,IAAI,CAAC;YACJ,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;YACpE,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAC;YACvD,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC;QAAC,OAAO,GAAY,EAAE,CAAC;YACvB,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,IAAI,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CACnB,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CACjE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC;YACpD,CAAC;YACD,MAAM,qBAAqB,CAAC;gBAC3B,IAAI,EAAE,OAAO;gBACb,GAAG;gBACH,OAAO;gBACP,WAAW;gBACX,MAAM,EAAE,IAAI;gBACZ,MAAM;gBACN,KAAK,EAAE,MAAM;aACb,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YAClB,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;YACzD,MAAM,qBAAqB,CAAC;gBAC3B,IAAI,EAAE,OAAO;gBACb,GAAG;gBACH,OAAO;gBACP,WAAW;gBACX,MAAM,EAAE,IAAI;gBACZ,MAAM;gBACN,KAAK,EAAE,IAAI,KAAK,CAAC,WAAW,CAAC;aAC7B,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;QACD,MAAM,qBAAqB,CAAC;YAC3B,IAAI,EAAE,OAAO;YACb,GAAG;YACH,OAAO;YACP,WAAW;YACX,MAAM,EAAE,WAAW;YACnB,MAAM;YACN,KAAK,EAAE,IAAI;SACX,CAAC,CAAC;QACH,IAAI,KAAK,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO;IACR,CAAC;IAED,IAAI,OAAO,GAAmB,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,MAAM,MAAM,CACX,CAAC,CAAA,IAAI,WAAW;SACT,GAAG;aACC,OAAO;iBACH,WAAW;WACjB,KAAK;eACD,SAAS;gBACR,UAAU;eACX,CAAC,CAAa,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACpC,CAAC,CAAiB,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CACnD,CAAC;IACF,MAAM,qBAAqB,CAAC;QAC3B,IAAI,EAAE,OAAO;QACb,GAAG;QACH,OAAO;QACP,WAAW;QACX,MAAM,EAAG,OAAO,CAAC,MAAyB,IAAI,IAAI;QAClD,MAAM;QACN,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,IAAI;KAC5B,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;AACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function cmdApply(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../../bin/cli/apply.ts"],"names":[],"mappings":"AA2NA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,iBA6F5C"}
@@ -0,0 +1,262 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import path from "node:path";
10
+ import { useEffect, useState } from "react";
11
+ import Spinner from "ink-spinner";
12
+ import { h, Box, Text, useApp, runApp, Confirm } from "./ink.js";
13
+ import { isServerAvailable, postJson, SERVER_MODE, LOCAL_MODE, } from "./serverClient.js";
14
+ import { canonicalRepoId, getFlag, notifyServer, projectRoot } from "./utils.js";
15
+ import { PHASES, appendEvent, readAnalysis, readState, resolveSessionTarget, updateState, } from "./sessionStore.js";
16
+ function changesByRepo(changes) {
17
+ const map = new Map();
18
+ for (const c of changes ?? []) {
19
+ const key = c.repo ?? "(unknown)";
20
+ if (!map.has(key))
21
+ map.set(key, []);
22
+ map.get(key).push(c);
23
+ }
24
+ return map;
25
+ }
26
+ function Summary({ analysis }) {
27
+ const grouped = changesByRepo(analysis.changes);
28
+ const total = analysis.changes?.length ?? 0;
29
+ return h `<${Box} flexDirection="column">
30
+ <${Text} dimColor>${"────────── apply plan ──────────"}</>
31
+ <${Box}>
32
+ <${Text} color="yellow">Issue: </>
33
+ <${Text}>#${analysis.issue?.iid}: ${analysis.issue?.title ?? ""}</>
34
+ </>
35
+ ${analysis.mrTitle
36
+ ? h `<${Box}>
37
+ <${Text} color="yellow">MR: </>
38
+ <${Text}>${analysis.mrTitle}</>
39
+ </>`
40
+ : null}
41
+ <${Box}>
42
+ <${Text} color="yellow">Total: </>
43
+ <${Text}>${`${total} change(s) across ${grouped.size} repo(s)`}</>
44
+ </>
45
+ <${Box} marginTop=${1}>
46
+ <${Text} dimColor>${"Per repo:"}</>
47
+ </>
48
+ ${[...grouped.entries()].map(([repo, changes], i) => h `<${Box} flexDirection="column" key=${i} marginLeft=${2}>
49
+ <${Text} bold>${repo} (${changes.length})</>
50
+ ${changes.map((c, j) => h `<${Text} key=${j} dimColor>${` ${c.action.padEnd(7)} ${c.file}`}</>`)}
51
+ </>`)}
52
+ </>`;
53
+ }
54
+ function ApplyView({ analysis, primary, secondaries, bypassYes, onDone }) {
55
+ const { exit } = useApp();
56
+ const [phase, setPhase] = useState("review"); // review → confirm → applying → done | aborted | error
57
+ const [applications, setApplications] = useState([]);
58
+ const [error, setError] = useState(null);
59
+ const [running, setRunning] = useState(null); // current repo being applied
60
+ const [mode, setMode] = useState(null);
61
+ useEffect(() => {
62
+ if (phase !== "applying")
63
+ return;
64
+ let cancelled = false;
65
+ (async () => {
66
+ try {
67
+ const serverUp = await isServerAvailable();
68
+ setMode(serverUp ? SERVER_MODE : LOCAL_MODE);
69
+ if (serverUp) {
70
+ const result = await postJson("/apply", {
71
+ analysis,
72
+ repo: primary,
73
+ secondaryRepos: secondaries,
74
+ });
75
+ if (cancelled)
76
+ return;
77
+ setApplications(result.applications ?? []);
78
+ setRunning(null);
79
+ setPhase("done");
80
+ }
81
+ else {
82
+ const { ForgeAgent } = await import(__rewriteRelativeImportExtension(path.join(projectRoot, "server/forge/core/ForgeAgent.ts")));
83
+ const agent = new ForgeAgent({
84
+ project: primary,
85
+ secondaryProjects: secondaries,
86
+ });
87
+ // applyFix doesn't currently emit per-step events on its own —
88
+ // fall back to a coarse "applying repo X" indicator by inspecting
89
+ // the analysis.changes grouping ahead of the call.
90
+ const grouped = changesByRepo(analysis.changes);
91
+ const ordered = [primary, ...secondaries].filter((r) => grouped.has(r));
92
+ if (ordered.length === 0) {
93
+ // Fallback to whatever the analysis says
94
+ ordered.push(...grouped.keys());
95
+ }
96
+ setRunning(ordered[0] ?? null);
97
+ const result = await agent.applyFix(analysis);
98
+ if (cancelled)
99
+ return;
100
+ setApplications(result.applications ?? []);
101
+ setRunning(null);
102
+ setPhase("done");
103
+ }
104
+ }
105
+ catch (err) {
106
+ if (cancelled)
107
+ return;
108
+ setError(err);
109
+ setRunning(null);
110
+ setPhase("error");
111
+ }
112
+ })();
113
+ return () => {
114
+ cancelled = true;
115
+ };
116
+ }, [phase]);
117
+ useEffect(() => {
118
+ if (phase === "done" || phase === "aborted" || phase === "error") {
119
+ onDone({
120
+ phase,
121
+ applications,
122
+ error,
123
+ serverMode: mode === SERVER_MODE,
124
+ });
125
+ exit();
126
+ }
127
+ }, [phase]);
128
+ if (phase === "review" || phase === "confirm") {
129
+ return h `<${Box} flexDirection="column">
130
+ <${Summary} analysis=${analysis} />
131
+ <${Confirm}
132
+ message="Apply these changes (creates branch + opens MR per repo)?"
133
+ bypassYes=${bypassYes}
134
+ onSelect=${(yes) => setPhase(yes ? "applying" : "aborted")} />
135
+ </>`;
136
+ }
137
+ if (phase === "applying") {
138
+ return h `<${Box} flexDirection="column">
139
+ ${mode ? h `<${Box} marginLeft=${2} marginBottom=${1}><${Text}>${mode}</></>` : null}
140
+ <${Summary} analysis=${analysis} />
141
+ <${Box} marginTop=${1}>
142
+ <${Text} color="cyan"><${Spinner} type="dots"/></>
143
+ <${Text}>${` Applying${running ? ` to ${running}` : "…"}`}</>
144
+ </>
145
+ </>`;
146
+ }
147
+ if (phase === "done") {
148
+ return h `<${Box} flexDirection="column">
149
+ ${mode ? h `<${Box} marginLeft=${2} marginBottom=${1}><${Text}>${mode}</></>` : null}
150
+ <${Summary} analysis=${analysis} />
151
+ <${Box} flexDirection="column" marginTop=${1}>
152
+ <${Text} color="green">${`✓ Applied across ${applications.length} repo(s)`}</>
153
+ ${applications.map((a, i) => h `<${Box} key=${i} flexDirection="column" marginLeft=${2} marginTop=${1}>
154
+ <${Text} bold>${a.repo}</>
155
+ <${Text}>${` branch: ${a.branchName}`}</>
156
+ ${a.mr?.web_url
157
+ ? h `<${Text}>${` MR: ${a.mr.web_url}`}</>`
158
+ : a.mr?.iid
159
+ ? h `<${Text}>${` MR: !${a.mr.iid}`}</>`
160
+ : h `<${Text} dimColor>${" MR: (not opened)"}</>`}
161
+ ${a.pipelineUrl
162
+ ? h `<${Text} dimColor>${` pipe: ${a.pipelineUrl}`}</>`
163
+ : null}
164
+ </>`)}
165
+ </>
166
+ </>`;
167
+ }
168
+ if (phase === "aborted") {
169
+ return h `<${Box} flexDirection="column">
170
+ <${Summary} analysis=${analysis} />
171
+ <${Box} marginTop=${1}>
172
+ <${Text} dimColor>${"Aborted — no changes applied."}</>
173
+ </>
174
+ </>`;
175
+ }
176
+ return h `<${Box} flexDirection="column">
177
+ <${Summary} analysis=${analysis} />
178
+ <${Box} marginTop=${1}>
179
+ <${Text} color="red">${`✘ ${error?.message ?? String(error)}`}</>
180
+ </>
181
+ </>`;
182
+ }
183
+ export async function cmdApply(argv) {
184
+ const explicitIid = Number(argv[1]);
185
+ const explicitRepo = getFlag(argv, "--repo");
186
+ const target = await resolveSessionTarget({
187
+ explicitIid: Number.isInteger(explicitIid) && explicitIid > 0 ? explicitIid : null,
188
+ explicitRepo,
189
+ });
190
+ if (!target?.repo || !target?.iid) {
191
+ console.error("No session target. Pass an <iid>, set --repo, or run analyze first.");
192
+ process.exit(1);
193
+ }
194
+ const analysis = await readAnalysis(target.repo, target.iid);
195
+ if (!analysis) {
196
+ console.error(`No cached analysis at ${target.repo}#${target.iid}. Run: forge analyze ${target.iid}`);
197
+ process.exit(1);
198
+ }
199
+ const state = await readState(target.repo, target.iid);
200
+ const primary = state?.primary ?? target.repo;
201
+ const secondaries = state?.secondaries ?? [];
202
+ const bypassYes = argv.includes("--yes") || process.env.FORGE_YES === "1";
203
+ const wantValidate = argv.includes("--validate");
204
+ if (wantValidate) {
205
+ const { cmdValidate } = await import("./validate.js");
206
+ // Re-enter validate using the same session target. cmdValidate exits
207
+ // with code 2 on red — we trust that gating.
208
+ await cmdValidate(["validate", String(target.iid), "--repo", target.repo]);
209
+ // If validate failed it would have exited; we reach here only on green.
210
+ }
211
+ let outcome = { phase: "pending", applications: [], error: null, serverMode: false };
212
+ await runApp(h `<${ApplyView}
213
+ analysis=${analysis}
214
+ primary=${primary}
215
+ secondaries=${secondaries}
216
+ bypassYes=${bypassYes}
217
+ onDone=${(o) => (outcome = o)} />`);
218
+ if (outcome.phase === "aborted") {
219
+ await updateState(target.repo, target.iid, {
220
+ phase: "apply-aborted",
221
+ });
222
+ await appendEvent(target.repo, target.iid, { type: "session:apply-aborted" });
223
+ process.exit(0);
224
+ }
225
+ if (outcome.phase === "error") {
226
+ await updateState(target.repo, target.iid, {
227
+ phase: "apply-failed",
228
+ lastError: outcome.error?.message ?? null,
229
+ });
230
+ await appendEvent(target.repo, target.iid, {
231
+ type: "session:apply-failed",
232
+ error: outcome.error?.message,
233
+ });
234
+ process.exit(2);
235
+ }
236
+ // Done — record per-repo branch + MR. ApplyFix returns one ApplicationResult
237
+ // per repo; the primary's MR is the canonical session reference.
238
+ const primaryApp = outcome.applications?.find((a) => canonicalRepoId(a.repo) === canonicalRepoId(primary)) ?? outcome.applications?.[0];
239
+ await updateState(target.repo, target.iid, {
240
+ phase: PHASES.APPLIED,
241
+ branch: primaryApp?.branchName ?? null,
242
+ mrIid: primaryApp?.mr?.iid ?? null,
243
+ mrUrl: primaryApp?.mr?.web_url ?? null,
244
+ pipelineUrl: primaryApp?.pipelineUrl ?? null,
245
+ applications: outcome.applications ?? [],
246
+ lastError: null,
247
+ });
248
+ if (!outcome.serverMode) {
249
+ const { FORGE_EVENTS } = await import("../../shared/events.js");
250
+ await notifyServer({ type: FORGE_EVENTS.FIX_APPLIED, iid: target.iid });
251
+ }
252
+ await appendEvent(target.repo, target.iid, {
253
+ type: "session:apply-done",
254
+ applications: (outcome.applications ?? []).map((a) => ({
255
+ repo: a.repo,
256
+ branchName: a.branchName,
257
+ mrIid: a.mr?.iid ?? null,
258
+ mrUrl: a.mr?.web_url ?? null,
259
+ })),
260
+ });
261
+ }
262
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../../bin/cli/apply.ts"],"names":[],"mappings":";;;;;;;;AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAc,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,OAAO,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACjE,OAAO,EACN,iBAAiB,EACjB,QAAQ,EACR,WAAW,EACX,UAAU,GACV,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACjF,OAAO,EACN,MAAM,EACN,WAAW,EACX,YAAY,EACZ,SAAS,EACT,oBAAoB,EACpB,WAAW,GACX,MAAM,mBAAmB,CAAC;AAU3B,SAAS,aAAa,CAAC,OAAsB;IAC5C,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC7C,KAAK,MAAM,CAAC,IAAI,OAAO,IAAI,EAAE,EAAE,CAAC;QAC/B,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC;QAClC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACpC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;IACD,OAAO,GAAG,CAAC;AACZ,CAAC;AAMD,SAAS,OAAO,CAAC,EAAE,QAAQ,EAAgB;IAC1C,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,CAAC;IAC5C,OAAO,CAAC,CAAA,IAAI,GAAG;KACX,IAAI,aAAa,kCAAkC;KACnD,GAAG;MACF,IAAI;MACJ,IAAI,KAAK,QAAQ,CAAC,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,KAAK,EAAE,KAAK,IAAI,EAAE;;IAE9D,QAAQ,CAAC,OAAO;QACjB,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG;OACN,IAAI;OACJ,IAAI,IAAI,QAAQ,CAAC,OAAO;OACxB;QACJ,CAAC,CAAC,IAAI;KACJ,GAAG;MACF,IAAI;MACJ,IAAI,IAAI,GAAG,KAAK,qBAAqB,OAAO,CAAC,IAAI,UAAU;;KAE5D,GAAG,cAAc,CAAC;MACjB,IAAI,aAAa,WAAW;;IAE9B,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAA0B,EAAE,CAAS,EAAE,EAAE,CACpF,CAAC,CAAA,IAAI,GAAG,+BAA+B,CAAC,eAAe,CAAC;OACpD,IAAI,SAAS,IAAI,KAAK,OAAO,CAAC,MAAM;MACrC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAc,EAAE,CAAS,EAAE,EAAE,CAC3C,CAAC,CAAA,IAAI,IAAI,QAAQ,CAAC,aAAa,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CACvE;OACE,CACJ;KACE,CAAC;AACN,CAAC;AAUD,SAAS,SAAS,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAkB;IACvF,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1B,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,QAAQ,CAAC,CAAC,CAAC,uDAAuD;IAC7G,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAsB,EAAE,CAAC,CAAC;IAC1E,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC,CAAC,6BAA6B;IAC1F,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,KAAK,KAAK,UAAU;YAAE,OAAO;QACjC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,CAAC,KAAK,IAAI,EAAE;YACX,IAAI,CAAC;gBACJ,MAAM,QAAQ,GAAG,MAAM,iBAAiB,EAAE,CAAC;gBAC3C,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;gBAE7C,IAAI,QAAQ,EAAE,CAAC;oBACd,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE;wBACvC,QAAQ;wBACR,IAAI,EAAE,OAAO;wBACb,cAAc,EAAE,WAAW;qBAC3B,CAA2C,CAAC;oBAC7C,IAAI,SAAS;wBAAE,OAAO;oBACtB,eAAe,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;oBAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;qBAAM,CAAC;oBACP,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,kCAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,iCAAiC,CAAC,EACzD,CAAC;oBACF,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC;wBAC5B,OAAO,EAAE,OAAO;wBAChB,iBAAiB,EAAE,WAAW;qBAC9B,CAAC,CAAC;oBACH,+DAA+D;oBAC/D,kEAAkE;oBAClE,mDAAmD;oBACnD,MAAM,OAAO,GAAG,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAChD,MAAM,OAAO,GAAG,CAAC,OAAO,EAAE,GAAG,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACxE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC1B,yCAAyC;wBACzC,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;oBACjC,CAAC;oBACD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;oBAC/B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;oBAC9C,IAAI,SAAS;wBAAE,OAAO;oBACtB,eAAe,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;oBAC3C,UAAU,CAAC,IAAI,CAAC,CAAC;oBACjB,QAAQ,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACF,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACd,IAAI,SAAS;oBAAE,OAAO;gBACtB,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACd,UAAU,CAAC,IAAI,CAAC,CAAC;gBACjB,QAAQ,CAAC,OAAO,CAAC,CAAC;YACnB,CAAC;QACF,CAAC,CAAC,EAAE,CAAC;QACL,OAAO,GAAG,EAAE;YACX,SAAS,GAAG,IAAI,CAAC;QAClB,CAAC,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,SAAS,CAAC,GAAG,EAAE;QACd,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;YAClE,MAAM,CAAC;gBACN,KAAK;gBACL,YAAY;gBACZ,KAAK;gBACL,UAAU,EAAE,IAAI,KAAK,WAAW;aAChC,CAAC,CAAC;YACH,IAAI,EAAE,CAAC;QACR,CAAC;IACF,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAEZ,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/C,OAAO,CAAC,CAAA,IAAI,GAAG;MACX,OAAO,aAAa,QAAQ;MAC5B,OAAO;;gBAEG,SAAS;eACV,CAAC,GAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;MACjE,CAAC;IACN,CAAC;IAED,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAC1B,OAAO,CAAC,CAAA,IAAI,GAAG;KACZ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI;MAChF,OAAO,aAAa,QAAQ;MAC5B,GAAG,cAAc,CAAC;OACjB,IAAI,kBAAkB,OAAO;OAC7B,IAAI,IAAI,YAAY,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE;;MAEvD,CAAC;IACN,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,CAAC,CAAA,IAAI,GAAG;KACZ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,IAAI,GAAG,eAAe,CAAC,iBAAiB,CAAC,KAAK,IAAI,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI;MAChF,OAAO,aAAa,QAAQ;MAC5B,GAAG,qCAAqC,CAAC;OACxC,IAAI,kBAAkB,oBAAoB,YAAY,CAAC,MAAM,UAAU;MACxE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAoB,EAAE,CAAS,EAAE,EAAE,CACtD,CAAC,CAAA,IAAI,GAAG,QAAQ,CAAC,sCAAsC,CAAC,cAAc,CAAC;SACnE,IAAI,SAAS,CAAC,CAAC,IAAI;SACnB,IAAI,IAAI,aAAa,CAAC,CAAC,UAAU,EAAE;QACpC,CAAC,CAAC,EAAE,EAAE,OAAO;YACd,CAAC,CAAC,CAAC,CAAA,IAAI,IAAI,IAAI,aAAa,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK;YAC/C,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG;gBACV,CAAC,CAAC,CAAC,CAAA,IAAI,IAAI,IAAI,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK;gBAC5C,CAAC,CAAC,CAAC,CAAA,IAAI,IAAI,aAAa,wBAAwB,KAAK;QACrD,CAAC,CAAC,WAAW;YACd,CAAC,CAAC,CAAC,CAAA,IAAI,IAAI,aAAa,aAAa,CAAC,CAAC,WAAW,EAAE,KAAK;YACzD,CAAC,CAAC,IAAI;SACJ,CACJ;;MAEC,CAAC;IACN,CAAC;IAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO,CAAC,CAAA,IAAI,GAAG;MACX,OAAO,aAAa,QAAQ;MAC5B,GAAG,cAAc,CAAC;OACjB,IAAI,aAAa,+BAA+B;;MAEjD,CAAC;IACN,CAAC;IAED,OAAO,CAAC,CAAA,IAAI,GAAG;KACX,OAAO,aAAa,QAAQ;KAC5B,GAAG,cAAc,CAAC;MACjB,IAAI,gBAAgB,KAAK,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,KAAK,CAAC,EAAE;;KAE3D,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC;QACzC,WAAW,EAAE,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,IAAI,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI;QAClF,YAAY;KACZ,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC;QACnC,OAAO,CAAC,KAAK,CACZ,qEAAqE,CACrE,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CACZ,yBAAyB,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,GAAG,wBAAwB,MAAM,CAAC,GAAG,EAAE,CACtF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,KAAK,EAAE,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC;IAC9C,MAAM,WAAW,GAAG,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;IAE7C,MAAM,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,SAAS,KAAK,GAAG,CAAC;IAC1E,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAEjD,IAAI,YAAY,EAAE,CAAC;QAClB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC,CAAC;QACtD,qEAAqE;QACrE,6CAA6C;QAC7C,MAAM,WAAW,CAAC,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3E,wEAAwE;IACzE,CAAC;IAED,IAAI,OAAO,GAAqB,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;IACvG,MAAM,MAAM,CACX,CAAC,CAAA,IAAI,SAAS;cACF,QAAQ;aACT,OAAO;iBACH,WAAW;eACb,SAAS;YACZ,CAAC,CAAmB,EAAE,EAAE,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,KAAK,CACrD,CAAC;IAEF,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QACjC,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;YAC1C,KAAK,EAAE,eAAe;SACtB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,KAAK,KAAK,OAAO,EAAE,CAAC;QAC/B,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;YAC1C,KAAK,EAAE,cAAc;YACrB,SAAS,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,IAAI,IAAI;SACzC,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;YAC1C,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO;SAC7B,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,6EAA6E;IAC7E,iEAAiE;IACjE,MAAM,UAAU,GACf,OAAO,CAAC,YAAY,EAAE,IAAI,CACzB,CAAC,CAAoB,EAAE,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,eAAe,CAAC,OAAO,CAAC,CAC9E,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,CAAC;IAChC,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;QAC1C,KAAK,EAAE,MAAM,CAAC,OAAO;QACrB,MAAM,EAAE,UAAU,EAAE,UAAU,IAAI,IAAI;QACtC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,IAAI,IAAI;QAClC,KAAK,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,IAAI,IAAI;QACtC,WAAW,EAAE,UAAU,EAAE,WAAW,IAAI,IAAI;QAC5C,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,EAAE;QACxC,SAAS,EAAE,IAAI;KACf,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;QACzB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,wBAAwB,CAAC,CAAC;QAChE,MAAM,YAAY,CAAC,EAAE,IAAI,EAAE,YAAY,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,MAAM,WAAW,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,EAAE;QAC1C,IAAI,EAAE,oBAAoB;QAC1B,YAAY,EAAE,CAAC,OAAO,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC;YACzE,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,UAAU,EAAE,CAAC,CAAC,UAAU;YACxB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,IAAI,IAAI;YACxB,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE,OAAO,IAAI,IAAI;SAC5B,CAAC,CAAC;KACH,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function cmdCiFix(argv: string[]): Promise<void>;
2
+ //# sourceMappingURL=cifix.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cifix.d.ts","sourceRoot":"","sources":["../../../bin/cli/cifix.ts"],"names":[],"mappings":"AA6VA,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,iBA4D5C"}
@@ -0,0 +1,310 @@
1
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
2
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
3
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
4
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
5
+ });
6
+ }
7
+ return path;
8
+ };
9
+ import path from "node:path";
10
+ import { useEffect, useState } from "react";
11
+ import Spinner from "ink-spinner";
12
+ import { h, Box, Text, useApp, runApp } from "./ink.js";
13
+ import { isServerAvailable, streamJob, postJson, SERVER_MODE, LOCAL_MODE, } from "./serverClient.js";
14
+ import { getFlag, projectRoot } from "./utils.js";
15
+ import { PHASES, appendEvent, readState, resolveSessionTarget, updateState, writeAnalysis, } from "./sessionStore.js";
16
+ const TRACE_TAIL_LINES = 150; // matches the existing CI refinement pattern
17
+ async function fetchFailedJobTraces(provider, mrIid) {
18
+ const pipelines = await provider.getMRPipelines(mrIid);
19
+ if (!pipelines?.length)
20
+ throw new Error(`No pipelines found for MR !${mrIid}`);
21
+ const latest = pipelines[0];
22
+ const jobs = await provider.getPipelineJobs(latest.id);
23
+ const failed = jobs.filter((j) => j.status === "failed");
24
+ if (!failed.length) {
25
+ throw new Error(`Latest pipeline #${latest.id} has no failed jobs (status: ${latest.status}). Nothing to fix.`);
26
+ }
27
+ const traces = await Promise.all(failed.map(async (j) => {
28
+ const text = await provider.getJobTrace(j.id).catch(() => "(trace fetch failed)");
29
+ const tail = text.split("\n").slice(-TRACE_TAIL_LINES).join("\n");
30
+ return { name: j.name, stage: j.stage, tail };
31
+ }));
32
+ return { pipeline: latest, traces };
33
+ }
34
+ function formatCiContext(traces) {
35
+ return traces
36
+ .map((t) => `### Failed job: ${t.name} (stage: ${t.stage})\n\n\`\`\`\n${t.tail}\n\`\`\``)
37
+ .join("\n\n");
38
+ }
39
+ function StepRow({ step, message, status }) {
40
+ let glyph;
41
+ if (status === "running")
42
+ glyph = h `<${Text} color="cyan"><${Spinner} type="dots"/></>`;
43
+ else if (status === "done")
44
+ glyph = h `<${Text} color="green">✓</>`;
45
+ else
46
+ glyph = h `<${Text} color="red">✘</>`;
47
+ return h `<${Box}>
48
+ ${glyph}
49
+ <${Text} dimColor> [${step}]</>
50
+ <${Text}> ${message}</>
51
+ </>`;
52
+ }
53
+ function CiFixView({ repo, iid, primary, secondaries, branch, mrIid, model, eventSink, onDone, }) {
54
+ const { exit } = useApp();
55
+ const [phase, setPhase] = useState("fetching"); // fetching → analyzing → committing → done | error
56
+ const [items, setItems] = useState([]);
57
+ const [mode, setMode] = useState(null);
58
+ const [traces, setTraces] = useState([]);
59
+ const [pipeline, setPipeline] = useState(null);
60
+ const [result, setResult] = useState(null);
61
+ const [error, setError] = useState(null);
62
+ useEffect(() => {
63
+ if (phase === "done" || phase === "error") {
64
+ onDone({ phase, result, pipeline, error });
65
+ exit();
66
+ }
67
+ }, [phase]);
68
+ const handleEvent = (evt, cancelRef) => {
69
+ if (cancelRef?.current)
70
+ return null;
71
+ eventSink?.(evt);
72
+ if (evt.type === "result")
73
+ return evt.data ?? null;
74
+ setItems((prev) => {
75
+ const closeRunning = (list) => list.map((it) => it.kind === "step" && it.status === "running"
76
+ ? { ...it, status: "done" }
77
+ : it);
78
+ switch (evt.type) {
79
+ case "progress":
80
+ return [
81
+ ...closeRunning(prev),
82
+ {
83
+ kind: "step",
84
+ step: evt.step,
85
+ message: evt.message,
86
+ status: "running",
87
+ },
88
+ ];
89
+ case "log":
90
+ return [...prev, { kind: "log", text: evt.message }];
91
+ case "error":
92
+ return [
93
+ ...prev.map((it) => it.kind === "step" && it.status === "running"
94
+ ? { ...it, status: "failed" }
95
+ : it),
96
+ { kind: "error", message: evt.message },
97
+ ];
98
+ default:
99
+ return prev;
100
+ }
101
+ });
102
+ return null;
103
+ };
104
+ useEffect(() => {
105
+ const cancelRef = { current: false };
106
+ (async () => {
107
+ try {
108
+ const serverUp = await isServerAvailable();
109
+ setMode(serverUp ? SERVER_MODE : LOCAL_MODE);
110
+ if (serverUp) {
111
+ // In server mode, the ci-fix endpoint handles fetching traces
112
+ // internally. We still need to fetch traces for the UI display.
113
+ const { createProvider } = await import(__rewriteRelativeImportExtension(path.join(projectRoot, "server/forge/core/providers/index.ts")));
114
+ const provider = createProvider(repo);
115
+ const { pipeline: pipe, traces: tr } = await fetchFailedJobTraces(provider, mrIid);
116
+ if (cancelRef.current)
117
+ return;
118
+ setTraces(tr);
119
+ setPipeline(pipe);
120
+ setPhase("analyzing");
121
+ const ciContext = formatCiContext(tr);
122
+ let final = null;
123
+ const { events } = streamJob(`/issues/${iid}/ci-fix`, {
124
+ ciContext,
125
+ model,
126
+ repo: primary,
127
+ secondaryRepos: secondaries,
128
+ });
129
+ for await (const evt of events) {
130
+ if (cancelRef.current)
131
+ return;
132
+ const data = handleEvent(evt, cancelRef);
133
+ if (data)
134
+ final = data;
135
+ }
136
+ if (cancelRef.current)
137
+ return;
138
+ setItems((prev) => prev.map((it) => it.kind === "step" && it.status === "running"
139
+ ? { ...it, status: "done" }
140
+ : it));
141
+ if (!final) {
142
+ setError(new Error("CI fix produced no result."));
143
+ setPhase("error");
144
+ return;
145
+ }
146
+ setResult(final);
147
+ setPhase("committing");
148
+ await postJson("/commit-to-branch", {
149
+ branchName: branch,
150
+ analysis: final,
151
+ repo: primary,
152
+ secondaryRepos: secondaries,
153
+ });
154
+ if (cancelRef.current)
155
+ return;
156
+ setPhase("done");
157
+ }
158
+ else {
159
+ const { createProvider } = await import(__rewriteRelativeImportExtension(path.join(projectRoot, "server/forge/core/providers/index.ts")));
160
+ const provider = createProvider(repo);
161
+ const { pipeline: pipe, traces: tr } = await fetchFailedJobTraces(provider, mrIid);
162
+ if (cancelRef.current)
163
+ return;
164
+ setTraces(tr);
165
+ setPipeline(pipe);
166
+ setPhase("analyzing");
167
+ const ciContext = formatCiContext(tr);
168
+ const { ForgeAgent } = await import(__rewriteRelativeImportExtension(path.join(projectRoot, "server/forge/core/ForgeAgent.ts")));
169
+ const agent = new ForgeAgent({
170
+ project: primary,
171
+ secondaryProjects: secondaries,
172
+ });
173
+ let final = null;
174
+ const onEvent = (evt) => {
175
+ const data = handleEvent(evt, cancelRef);
176
+ if (data)
177
+ final = data;
178
+ };
179
+ await agent.ciFixIssue(iid, ciContext, onEvent, model);
180
+ if (cancelRef.current)
181
+ return;
182
+ setItems((prev) => prev.map((it) => it.kind === "step" && it.status === "running"
183
+ ? { ...it, status: "done" }
184
+ : it));
185
+ if (!final) {
186
+ setError(new Error("CI fix produced no result."));
187
+ setPhase("error");
188
+ return;
189
+ }
190
+ setResult(final);
191
+ setPhase("committing");
192
+ await agent.commitToBranch(branch, final, primary);
193
+ if (cancelRef.current)
194
+ return;
195
+ setPhase("done");
196
+ }
197
+ }
198
+ catch (err) {
199
+ if (cancelRef.current)
200
+ return;
201
+ setError(err);
202
+ setPhase("error");
203
+ }
204
+ })();
205
+ return () => { cancelRef.current = true; };
206
+ }, []);
207
+ return h `<${Box} flexDirection="column">
208
+ ${mode ? h `<${Box} marginLeft=${2} marginBottom=${1}><${Text}>${mode}</></>` : null}
209
+ <${Box}>
210
+ <${Text} color="yellow">CI fix </>
211
+ <${Text}>${repo} #${iid} → ${branch}</>
212
+ </>
213
+ ${phase === "fetching"
214
+ ? h `<${Box} marginTop=${1}>
215
+ <${Text} color="cyan"><${Spinner} type="dots"/></>
216
+ <${Text}>${` Fetching failed job traces from MR !${mrIid}…`}</>
217
+ </>`
218
+ : null}
219
+ ${traces.length
220
+ ? h `<${Box} flexDirection="column" marginTop=${1}>
221
+ <${Text} dimColor>${`Pipeline #${pipeline?.id} failed on:`}</>
222
+ ${traces.map((t, i) => h `<${Text} key=${i} dimColor>${` • ${t.stage}/${t.name} (${t.tail.split("\n").length} log lines)`}</>`)}
223
+ </>`
224
+ : null}
225
+ ${items.length
226
+ ? h `<${Box} flexDirection="column" marginTop=${1}>
227
+ ${items.map((it, i) => {
228
+ if (it.kind === "step")
229
+ return h `<${StepRow} key=${i} step=${it.step} message=${it.message} status=${it.status} />`;
230
+ if (it.kind === "log")
231
+ return h `<${Box} key=${i}><${Text} dimColor> ${it.text}</></>`;
232
+ return h `<${Box} key=${i}>
233
+ <${Text} color="red">ERROR</>
234
+ <${Text}>: ${it.message}</>
235
+ </>`;
236
+ })}
237
+ </>`
238
+ : null}
239
+ ${phase === "committing"
240
+ ? h `<${Box} marginTop=${1}>
241
+ <${Text} color="cyan"><${Spinner} type="dots"/></>
242
+ <${Text}>${` Pushing fix commit to ${branch}…`}</>
243
+ </>`
244
+ : null}
245
+ ${phase === "done"
246
+ ? h `<${Box} marginTop=${1}>
247
+ <${Text} color="green">${`✓ CI fix pushed to ${branch}. Re-run watch to follow the new pipeline.`}</>
248
+ </>`
249
+ : null}
250
+ ${phase === "error"
251
+ ? h `<${Box} marginTop=${1}>
252
+ <${Text} color="red">${`✘ ${error?.message ?? String(error)}`}</>
253
+ </>`
254
+ : null}
255
+ </>`;
256
+ }
257
+ export async function cmdCiFix(argv) {
258
+ const explicitIid = Number(argv[1]);
259
+ const explicitRepo = getFlag(argv, "--repo");
260
+ const target = await resolveSessionTarget({
261
+ explicitIid: Number.isInteger(explicitIid) && explicitIid > 0 ? explicitIid : null,
262
+ explicitRepo,
263
+ });
264
+ if (!target?.repo || !target?.iid) {
265
+ console.error("No session target. Pass an <iid>, set --repo, or run analyze + apply first.");
266
+ process.exit(1);
267
+ }
268
+ const state = await readState(target.repo, target.iid);
269
+ if (!state?.branch || !state?.mrIid) {
270
+ console.error(`Session ${target.repo}#${target.iid} has no branch/MR yet. Run: forge apply ${target.iid}`);
271
+ process.exit(1);
272
+ }
273
+ const primary = state.primary ?? target.repo;
274
+ const secondaries = state.secondaries ?? [];
275
+ const model = getFlag(argv, "--model") || undefined;
276
+ let outcome = { phase: "pending", result: null, pipeline: null, error: null };
277
+ const events = [];
278
+ await runApp(h `<${CiFixView}
279
+ repo=${primary}
280
+ iid=${target.iid}
281
+ primary=${primary}
282
+ secondaries=${secondaries}
283
+ branch=${state.branch}
284
+ mrIid=${state.mrIid}
285
+ model=${model}
286
+ eventSink=${(e) => events.push(e)}
287
+ onDone=${(o) => (outcome = o)} />`);
288
+ if (outcome.phase === "done" && outcome.result) {
289
+ await writeAnalysis(target.repo, target.iid, outcome.result);
290
+ await updateState(target.repo, target.iid, {
291
+ phase: PHASES.APPLIED, // stays applied after a refresh commit
292
+ lastError: null,
293
+ });
294
+ await appendEvent(target.repo, target.iid, {
295
+ type: "session:cifix-done",
296
+ pipelineId: outcome.pipeline?.id,
297
+ });
298
+ return;
299
+ }
300
+ await updateState(target.repo, target.iid, {
301
+ phase: "cifix-failed",
302
+ lastError: outcome.error?.message ?? null,
303
+ }).catch(() => { });
304
+ await appendEvent(target.repo, target.iid, {
305
+ type: "session:cifix-failed",
306
+ error: outcome.error?.message,
307
+ }).catch(() => { });
308
+ process.exit(2);
309
+ }
310
+ //# sourceMappingURL=cifix.js.map