@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
@@ -1,4 +1,12 @@
1
1
  #!/usr/bin/env node
2
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
3
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
4
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
5
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
6
+ });
7
+ }
8
+ return path;
9
+ };
2
10
  import { existsSync } from "node:fs";
3
11
  import path from "node:path";
4
12
  import { projectRoot, parsePort, readPkg } from "./cli/utils.js";
@@ -21,17 +29,15 @@ import { cmdIssue } from "./cli/issue.js";
21
29
  import { cmdCreateIssue } from "./cli/createIssue.js";
22
30
  import { startRepl } from "./cli/repl.js";
23
31
  import { cmdUpdate } from "./cli/update.js";
24
-
25
32
  async function cmdUse(argv) {
26
- const repoId = argv[1];
27
- if (!repoId) {
28
- return cmdRepos(["repos", "list"]);
29
- }
30
- return cmdRepos(["repos", "set-default", repoId]);
33
+ const repoId = argv[1];
34
+ if (!repoId) {
35
+ return cmdRepos(["repos", "list"]);
36
+ }
37
+ return cmdRepos(["repos", "set-default", repoId]);
31
38
  }
32
-
33
39
  function usage() {
34
- process.stdout.write(`
40
+ process.stdout.write(`
35
41
  forge — AI-powered code change & deploy control panel
36
42
 
37
43
  Usage
@@ -96,110 +102,103 @@ Examples
96
102
 
97
103
  `);
98
104
  }
99
-
100
105
  async function cmdVersion() {
101
- const pkg = await readPkg();
102
- console.log(pkg.version);
106
+ const pkg = await readPkg();
107
+ console.log(pkg.version);
103
108
  }
104
-
105
109
  async function cmdStart({ port }) {
106
- process.env.NODE_ENV = process.env.NODE_ENV ?? "production";
107
- if (port != null) process.env.PORT = String(port);
108
-
109
- const spa = path.join(projectRoot, "dist", "index.html");
110
- if (!existsSync(spa)) {
111
- console.error("Frontend build not found. Run: npm run build:app");
112
- process.exit(1);
113
- }
114
-
115
- await import(path.join(projectRoot, "server.js"));
110
+ process.env.NODE_ENV = process.env.NODE_ENV ?? "production";
111
+ if (port != null)
112
+ process.env.PORT = String(port);
113
+ const spa = path.join(projectRoot, "dist", "index.html");
114
+ if (!existsSync(spa)) {
115
+ console.error("Frontend build not found. Run: npm run build:app");
116
+ process.exit(1);
117
+ }
118
+ await import(__rewriteRelativeImportExtension(path.join(projectRoot, "server.ts")));
116
119
  }
117
-
118
120
  async function main() {
119
- try {
120
- const { config } = await import("dotenv");
121
- config({ quiet: true });
122
- } catch {
123
- /* dotenv optional at CLI load */
124
- }
125
-
126
- const argv = process.argv.slice(2);
127
- const cmd = argv[0];
128
-
129
- if (!cmd) return startRepl(dispatch);
130
-
131
- return dispatch(argv);
121
+ try {
122
+ const { config } = await import("dotenv");
123
+ config({ quiet: true });
124
+ }
125
+ catch {
126
+ /* dotenv optional at CLI load */
127
+ }
128
+ const argv = process.argv.slice(2);
129
+ const cmd = argv[0];
130
+ if (!cmd)
131
+ return startRepl(dispatch);
132
+ return dispatch(argv);
132
133
  }
133
-
134
134
  async function dispatch(argv) {
135
- const cmd = argv[0];
136
- const flags = {
137
- force: argv.includes("--force"),
138
- port: parsePort(argv),
139
- };
140
-
141
- switch (cmd) {
142
- case "init":
143
- return cmdInit(flags);
144
- case "start":
145
- return cmdStart(flags);
146
- case "repos":
147
- return cmdRepos(argv);
148
- case "issues":
149
- return cmdIssues(argv);
150
- case "issue":
151
- return cmdIssue(argv);
152
- case "create-issue":
153
- return cmdCreateIssue(argv);
154
- case "analyze":
155
- return cmdAnalyze(argv);
156
- case "show":
157
- return cmdShow(argv);
158
- case "refine":
159
- return cmdRefine(argv);
160
- case "validate":
161
- return cmdValidate(argv);
162
- case "apply":
163
- return cmdApply(argv);
164
- case "watch":
165
- return cmdWatch(argv);
166
- case "ci-fix":
167
- case "cifix":
168
- return cmdCiFix(argv);
169
- case "merge":
170
- return cmdMerge(argv);
171
- case "resolution-check":
172
- case "resolution":
173
- return cmdResolutionCheck(argv);
174
- case "close":
175
- return cmdClose(argv);
176
- case "ship":
177
- return cmdShip(argv);
178
- case "session":
179
- return cmdSession(argv);
180
- case "doctor":
181
- return cmdDoctor(flags);
182
- case "use":
183
- return cmdUse(argv);
184
- case "update":
185
- return cmdUpdate();
186
- case "version":
187
- case "--version":
188
- case "-v":
189
- return cmdVersion();
190
- case "help":
191
- case "--help":
192
- case "-h":
193
- usage();
194
- return;
195
- default:
196
- console.error(`Unknown command: ${cmd}\n`);
197
- usage();
198
- process.exit(1);
199
- }
135
+ const cmd = argv[0];
136
+ const flags = {
137
+ force: argv.includes("--force"),
138
+ port: parsePort(argv),
139
+ };
140
+ switch (cmd) {
141
+ case "init":
142
+ return cmdInit(flags);
143
+ case "start":
144
+ return cmdStart(flags);
145
+ case "repos":
146
+ return cmdRepos(argv);
147
+ case "issues":
148
+ return cmdIssues(argv);
149
+ case "issue":
150
+ return cmdIssue(argv);
151
+ case "create-issue":
152
+ return cmdCreateIssue(argv);
153
+ case "analyze":
154
+ return cmdAnalyze(argv);
155
+ case "show":
156
+ return cmdShow(argv);
157
+ case "refine":
158
+ return cmdRefine(argv);
159
+ case "validate":
160
+ return cmdValidate(argv);
161
+ case "apply":
162
+ return cmdApply(argv);
163
+ case "watch":
164
+ return cmdWatch(argv);
165
+ case "ci-fix":
166
+ case "cifix":
167
+ return cmdCiFix(argv);
168
+ case "merge":
169
+ return cmdMerge(argv);
170
+ case "resolution-check":
171
+ case "resolution":
172
+ return cmdResolutionCheck(argv);
173
+ case "close":
174
+ return cmdClose(argv);
175
+ case "ship":
176
+ return cmdShip(argv);
177
+ case "session":
178
+ return cmdSession(argv);
179
+ case "doctor":
180
+ return cmdDoctor();
181
+ case "use":
182
+ return cmdUse(argv);
183
+ case "update":
184
+ return cmdUpdate();
185
+ case "version":
186
+ case "--version":
187
+ case "-v":
188
+ return cmdVersion();
189
+ case "help":
190
+ case "--help":
191
+ case "-h":
192
+ usage();
193
+ return;
194
+ default:
195
+ console.error(`Unknown command: ${cmd}\n`);
196
+ usage();
197
+ process.exit(1);
198
+ }
200
199
  }
201
-
202
200
  main().catch((err) => {
203
- console.error(err.stack || err.message || err);
204
- process.exit(1);
201
+ console.error(err.stack || err.message || err);
202
+ process.exit(1);
205
203
  });
204
+ //# sourceMappingURL=forge-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forge-agent.js","sourceRoot":"","sources":["../../bin/forge-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,260 @@
1
+ /**
2
+ * server/forge/core/ForgeAgent.ts
3
+ *
4
+ * Orchestrates the full Forge pipeline across one or more repositories.
5
+ *
6
+ * analyzeIssue → identify files across all repos → fetch contents → propose fix
7
+ * applyFix → group changes by repo → per repo: branch + commit + MR
8
+ * refineIssue → re-run pass 2 with feedback; reuses prior file paths per-repo
9
+ * ciFixIssue → target fix at CI failure logs
10
+ *
11
+ * Progress is reported via an optional onProgress callback so that
12
+ * the calling route can stream SSE events to the client.
13
+ *
14
+ * Multi-repo model
15
+ * ────────────────
16
+ * - `primaryProject` is the repo where the issue lives.
17
+ * - `secondaryProjects` are additional repos the fix can span (full-stack).
18
+ * - The AI sees every repo's file tree in pass 1 and tags files with repo id.
19
+ * - In pass 2 it proposes changes tagged with the repo they target.
20
+ * - `applyFix` groups by repo and creates one branch + MR per repo.
21
+ */
22
+ import type { ScmProvider } from "./providers/base.ts";
23
+ import type { CreateMRParams } from "./providers/base.ts";
24
+ import type { NormalIssue, NormalMR } from "./providers/types.ts";
25
+ import type { AnalysisResult, ForgeChange, ForgeEvent } from "./types.ts";
26
+ /** Constructor options for ForgeAgent. */
27
+ interface ForgeAgentOptions {
28
+ project?: string;
29
+ secondaryProjects?: string[];
30
+ agent?: string;
31
+ }
32
+ /** A { repo, path } entry from the AI's file selection. */
33
+ interface FileEntry {
34
+ repo: string;
35
+ path: string;
36
+ }
37
+ /** A repo's file-tree result from _fetchAllTrees. */
38
+ interface RepoTree {
39
+ repo: string;
40
+ files: string[];
41
+ }
42
+ /** A file fetched from a repo (repo + path + content). */
43
+ interface FileContent {
44
+ repo: string;
45
+ path: string;
46
+ content: string;
47
+ }
48
+ /** The raw result from proposeFix / refine calls. */
49
+ interface ProposeResult {
50
+ title?: string;
51
+ explanation?: string;
52
+ changes?: RawChange[];
53
+ removals?: Array<{
54
+ file: string;
55
+ what: string;
56
+ }>;
57
+ cost?: number;
58
+ serviceTier?: string;
59
+ inputTokens?: number;
60
+ outputTokens?: number;
61
+ cacheCreationTokens?: number;
62
+ cacheReadTokens?: number;
63
+ rateLimit?: unknown;
64
+ }
65
+ /** A raw change from the model before normalisation. */
66
+ interface RawChange {
67
+ file: string;
68
+ action: "create" | "modify" | "delete";
69
+ proposed?: string;
70
+ summary?: string;
71
+ repo?: string;
72
+ }
73
+ /** An enriched change after normalisation (with repo + original). */
74
+ interface EnrichedChange extends RawChange {
75
+ repo: string;
76
+ original: string | null;
77
+ }
78
+ /** The analysis result with optional removals. */
79
+ interface EnrichedAnalysisResult extends AnalysisResult {
80
+ removals?: Array<{
81
+ file: string;
82
+ what: string;
83
+ }>;
84
+ }
85
+ /** Options bag with optional AbortSignal. */
86
+ interface SignalOpts {
87
+ signal?: AbortSignal;
88
+ }
89
+ /** The result of the analysis "kind" argument. */
90
+ type AnalysisKind = "fresh" | "new" | "update" | "retry";
91
+ /** Result from applying changes to a single repo. */
92
+ interface ApplicationResult {
93
+ repo: string;
94
+ branchName: string;
95
+ mr: NormalMR | null;
96
+ pipelineUrl: string | null;
97
+ }
98
+ /** Validation state passed to refine. */
99
+ interface ValidationState {
100
+ passed: boolean;
101
+ steps: Array<{
102
+ step: string;
103
+ passed: boolean;
104
+ output?: string;
105
+ }>;
106
+ logs: string[];
107
+ }
108
+ export declare class ForgeAgent {
109
+ primaryProject: string;
110
+ secondaryProjects: string[];
111
+ allRepos: string[];
112
+ agent: string;
113
+ providers: Map<string, ScmProvider>;
114
+ provider: ScmProvider;
115
+ constructor(opts?: ForgeAgentOptions);
116
+ _provider(repo: string): ScmProvider;
117
+ get _agentLabel(): "OpenClaw" | "Claude";
118
+ get _isMultiRepo(): boolean;
119
+ _fetchAllTrees(emit: (evt: ForgeEvent) => void): Promise<RepoTree[]>;
120
+ _fetchFiles(entries: FileEntry[], emit: (evt: ForgeEvent) => void): Promise<FileContent[]>;
121
+ /**
122
+ * Normalises raw file entries coming back from the model.
123
+ * The schema now asks for `{ repo, path }` objects, but older prompts /
124
+ * smaller models occasionally return plain strings — default those to the
125
+ * primary repo.
126
+ */
127
+ _normalizeFileSelections(rawEntries: unknown[]): FileEntry[];
128
+ _validateSelections(entries: FileEntry[], repoTrees: RepoTree[]): {
129
+ valid: FileEntry[];
130
+ skipped: string[];
131
+ };
132
+ /** Enforces the per-repo and total caps, preserving model order. */
133
+ _capSelections(entries: FileEntry[], issueKind: string): FileEntry[];
134
+ _normalizeChanges(rawChanges: RawChange[] | undefined, fileContents: FileContent[]): EnrichedChange[];
135
+ /**
136
+ * Runs the full analysis pipeline for an issue across all configured repos.
137
+ *
138
+ * @param {number} issueIid
139
+ * @param {(event: ProgressEvent|LogEvent|ResultEvent|ErrorEvent) => void} [onProgress]
140
+ * @param {string} [model]
141
+ * @param {string} [ciContext]
142
+ * @param {string} [userPrompt]
143
+ * @returns {Promise<AnalysisResult>}
144
+ */
145
+ analyzeIssue(issueIid: number, onProgress: ((evt: ForgeEvent) => void) | undefined, model: string | undefined, ciContext: string | undefined, userPrompt: string | undefined, kind?: AnalysisKind, opts?: SignalOpts, previousChanges?: ForgeChange[] | null): Promise<EnrichedAnalysisResult>;
146
+ /**
147
+ * Re-runs pass 2 with reviewer feedback and the prior proposed changes as
148
+ * additional context. Reuses the previous files (per-repo) — no new file
149
+ * discovery.
150
+ */
151
+ refineIssue(issueIid: number, previousChanges: ForgeChange[] | null, feedback: string, onProgress: ((evt: ForgeEvent) => void) | undefined, model: string | undefined, ciContext: string | undefined, validationState: ValidationState | null, claudeSessionId: string | null, opts?: SignalOpts): Promise<EnrichedAnalysisResult | {
152
+ kind: string;
153
+ answer: string;
154
+ }>;
155
+ /**
156
+ * Shared tail for both ciFix-style proposeFix results and directive refine
157
+ * results: normalises changes, emits the result + usage events, and returns
158
+ * the AnalysisResult so callers can still await it.
159
+ */
160
+ _emitRefineResult(propose: ProposeResult, fileContents: FileContent[], issue: NormalIssue, emit: (evt: ForgeEvent) => void, label: string): EnrichedAnalysisResult;
161
+ /**
162
+ * Targeted fix for a CI pipeline failure. Uses the CI logs as the primary
163
+ * signal for file selection instead of the issue description.
164
+ */
165
+ ciFixIssue(issueIid: number, ciContext: string, onProgress: ((evt: ForgeEvent) => void) | undefined, model: string | undefined, opts?: SignalOpts): Promise<{
166
+ issue: NormalIssue;
167
+ mrTitle: string;
168
+ explanation: string;
169
+ reasoning: string;
170
+ changes: EnrichedChange[];
171
+ repos: string[];
172
+ }>;
173
+ /**
174
+ * Asks the model whether the diffs in a merged MR actually fix the issue.
175
+ * The issue lives in the primary repo; the MR is fetched from whichever
176
+ * provider created it.
177
+ */
178
+ checkResolution(issueIid: number, mrIid: number, repo?: string): Promise<import("./types.ts").AgentResponse>;
179
+ /**
180
+ * Applies an approved analysis: creates one branch + commit + MR per repo
181
+ * that has changes. Primary repo is always processed first so its MR exists
182
+ * before any secondary MRs that cross-reference it.
183
+ *
184
+ * @param {AnalysisResult} analysis
185
+ * @returns {Promise<{ applications: ApplicationResult[] }>}
186
+ */
187
+ applyFix(analysis: EnrichedAnalysisResult): Promise<{
188
+ applications: ApplicationResult[];
189
+ }>;
190
+ /**
191
+ * Pushes a new commit to an existing branch in a specific repo (e.g. to fix
192
+ * a failing pipeline without creating a new MR). Only affects the one repo.
193
+ *
194
+ * @param {string} branchName
195
+ * @param {AnalysisResult} analysis
196
+ * @param {string} [repo] Defaults to primary.
197
+ */
198
+ commitToBranch(branchName: string, analysis: EnrichedAnalysisResult, repo?: string): Promise<{
199
+ repo: string;
200
+ branchName: string;
201
+ }>;
202
+ /**
203
+ * Opens an MR for a branch that was previously pushed via deployBranch.
204
+ * Used when a test-deploy pipeline goes green and the user wants to promote
205
+ * the change to a real MR.
206
+ *
207
+ * @param {string} branchName
208
+ * @param {string} repo
209
+ * @param {number} issueIid
210
+ * @returns {Promise<ApplicationResult>}
211
+ */
212
+ promoteBranchToMR(branchName: string, repo: string, issueIid: number): Promise<ApplicationResult>;
213
+ /**
214
+ * Pushes a fix as a new branch per repo without opening MRs. Used for the
215
+ * "Deploy to Test" flow where a branch pipeline deploys to a test namespace.
216
+ *
217
+ * @param {AnalysisResult} analysis
218
+ * @returns {Promise<{ applications: ApplicationResult[] }>}
219
+ */
220
+ deployBranch(analysis: EnrichedAnalysisResult): Promise<{
221
+ applications: ApplicationResult[];
222
+ }>;
223
+ /**
224
+ * Resolves each change's `repo` against the SCM (does the file actually
225
+ * exist there?) so we don't try to commit to the wrong repo when the
226
+ * model omitted or guessed `c.repo` wrong. Mirror of the validator's
227
+ * auto-attribution; returns a flat changes array with corrected repo.
228
+ * Falls back to the input on attribution failure so we never block apply
229
+ * on a flaky API call.
230
+ */
231
+ _correctAttribution(changes: ForgeChange[]): Promise<ForgeChange[]>;
232
+ _groupChangesByRepo(changes: ForgeChange[]): Map<string, ForgeChange[]>;
233
+ /** Primary always first, secondaries after in allRepos order. */
234
+ _orderedRepos(grouped: Map<string, ForgeChange[]>): string[];
235
+ _applyToRepo(repo: string, changes: ForgeChange[], analysis: EnrichedAnalysisResult, priorApplications: ApplicationResult[]): Promise<ApplicationResult>;
236
+ /**
237
+ * Creates a branch, tolerating the case where it already exists — the whole
238
+ * point of intent-based names is that multiple applies/refines reuse the
239
+ * same branch. GitLab returns 400 "Branch already exists"; other providers
240
+ * may use different strings, so we match loosely.
241
+ */
242
+ _ensureBranch(provider: ScmProvider, branchName: string, ref: string): Promise<unknown>;
243
+ /**
244
+ * Opens an MR for the given branch, or returns the existing open one if
245
+ * the user is re-applying to a branch that already has an MR attached.
246
+ * Source-branch match is exact; label updates are intentionally skipped on
247
+ * the reuse path to keep this idempotent.
248
+ */
249
+ _ensureMR(provider: ScmProvider, mrSpec: CreateMRParams): Promise<NormalMR>;
250
+ _repoShortLabel(repo: string): string;
251
+ _buildMRDescription(issue: {
252
+ iid: number;
253
+ }, explanation: string, changes: ForgeChange[], opts?: {
254
+ isPrimary?: boolean;
255
+ repo?: string;
256
+ priorApplications?: ApplicationResult[];
257
+ }): string;
258
+ }
259
+ export {};
260
+ //# sourceMappingURL=ForgeAgent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ForgeAgent.d.ts","sourceRoot":"","sources":["../../../../server/forge/core/ForgeAgent.ts"],"names":[],"mappings":"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"}