@ipul-labs/forge 1.16.8 → 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.
- package/README.md +39 -21
- package/lib/bin/cli/analyze.d.ts +9 -0
- package/lib/bin/cli/analyze.d.ts.map +1 -0
- package/lib/bin/cli/analyze.js +491 -0
- package/lib/bin/cli/analyze.js.map +1 -0
- package/lib/bin/cli/apply.d.ts +2 -0
- package/lib/bin/cli/apply.d.ts.map +1 -0
- package/lib/bin/cli/apply.js +262 -0
- package/lib/bin/cli/apply.js.map +1 -0
- package/lib/bin/cli/cifix.d.ts +2 -0
- package/lib/bin/cli/cifix.d.ts.map +1 -0
- package/lib/bin/cli/cifix.js +310 -0
- package/lib/bin/cli/cifix.js.map +1 -0
- package/lib/bin/cli/close.d.ts +2 -0
- package/lib/bin/cli/close.d.ts.map +1 -0
- package/lib/bin/cli/close.js +113 -0
- package/lib/bin/cli/close.js.map +1 -0
- package/lib/bin/cli/createIssue.d.ts +2 -0
- package/lib/bin/cli/createIssue.d.ts.map +1 -0
- package/lib/bin/cli/createIssue.js +108 -0
- package/lib/bin/cli/createIssue.js.map +1 -0
- package/lib/bin/cli/doctor.d.ts +2 -0
- package/lib/bin/cli/doctor.d.ts.map +1 -0
- package/lib/bin/cli/doctor.js +145 -0
- package/lib/bin/cli/doctor.js.map +1 -0
- package/lib/bin/cli/init.d.ts +4 -0
- package/lib/bin/cli/init.d.ts.map +1 -0
- package/lib/bin/cli/init.js +288 -0
- package/lib/bin/cli/init.js.map +1 -0
- package/lib/bin/cli/ink.d.ts +23 -0
- package/lib/bin/cli/ink.d.ts.map +1 -0
- package/{bin → lib/bin}/cli/ink.js +18 -19
- package/lib/bin/cli/ink.js.map +1 -0
- package/lib/bin/cli/issue.d.ts +2 -0
- package/lib/bin/cli/issue.d.ts.map +1 -0
- package/lib/bin/cli/issue.js +114 -0
- package/lib/bin/cli/issue.js.map +1 -0
- package/lib/bin/cli/issues.d.ts +2 -0
- package/lib/bin/cli/issues.d.ts.map +1 -0
- package/lib/bin/cli/issues.js +149 -0
- package/lib/bin/cli/issues.js.map +1 -0
- package/lib/bin/cli/merge.d.ts +2 -0
- package/lib/bin/cli/merge.d.ts.map +1 -0
- package/lib/bin/cli/merge.js +162 -0
- package/lib/bin/cli/merge.js.map +1 -0
- package/lib/bin/cli/refine.d.ts +2 -0
- package/lib/bin/cli/refine.d.ts.map +1 -0
- package/lib/bin/cli/refine.js +249 -0
- package/lib/bin/cli/refine.js.map +1 -0
- package/lib/bin/cli/repl.d.ts +2 -0
- package/lib/bin/cli/repl.d.ts.map +1 -0
- package/lib/bin/cli/repl.js +309 -0
- package/lib/bin/cli/repl.js.map +1 -0
- package/lib/bin/cli/repos.d.ts +2 -0
- package/lib/bin/cli/repos.d.ts.map +1 -0
- package/lib/bin/cli/repos.js +86 -0
- package/lib/bin/cli/repos.js.map +1 -0
- package/lib/bin/cli/resolution.d.ts +2 -0
- package/lib/bin/cli/resolution.d.ts.map +1 -0
- package/lib/bin/cli/resolution.js +139 -0
- package/lib/bin/cli/resolution.js.map +1 -0
- package/lib/bin/cli/serverClient.d.ts +26 -0
- package/lib/bin/cli/serverClient.d.ts.map +1 -0
- package/lib/bin/cli/serverClient.js +111 -0
- package/lib/bin/cli/serverClient.js.map +1 -0
- package/lib/bin/cli/session.d.ts +8 -0
- package/lib/bin/cli/session.d.ts.map +1 -0
- package/lib/bin/cli/session.js +212 -0
- package/lib/bin/cli/session.js.map +1 -0
- package/lib/bin/cli/sessionStore.d.ts +69 -0
- package/lib/bin/cli/sessionStore.d.ts.map +1 -0
- package/lib/bin/cli/sessionStore.js +196 -0
- package/lib/bin/cli/sessionStore.js.map +1 -0
- package/lib/bin/cli/ship.d.ts +33 -0
- package/lib/bin/cli/ship.d.ts.map +1 -0
- package/lib/bin/cli/ship.js +737 -0
- package/lib/bin/cli/ship.js.map +1 -0
- package/lib/bin/cli/types.d.ts +59 -0
- package/lib/bin/cli/types.d.ts.map +1 -0
- package/lib/bin/cli/types.js +2 -0
- package/lib/bin/cli/types.js.map +1 -0
- package/lib/bin/cli/update.d.ts +2 -0
- package/lib/bin/cli/update.d.ts.map +1 -0
- package/lib/bin/cli/update.js +87 -0
- package/lib/bin/cli/update.js.map +1 -0
- package/lib/bin/cli/utils.d.ts +43 -0
- package/lib/bin/cli/utils.d.ts.map +1 -0
- package/lib/bin/cli/utils.js +171 -0
- package/lib/bin/cli/utils.js.map +1 -0
- package/lib/bin/cli/validate.d.ts +2 -0
- package/lib/bin/cli/validate.d.ts.map +1 -0
- package/lib/bin/cli/validate.js +283 -0
- package/lib/bin/cli/validate.js.map +1 -0
- package/lib/bin/cli/watch.d.ts +5 -0
- package/lib/bin/cli/watch.d.ts.map +1 -0
- package/lib/bin/cli/watch.js +263 -0
- package/lib/bin/cli/watch.js.map +1 -0
- package/lib/bin/forge-agent.d.ts +3 -0
- package/lib/bin/forge-agent.d.ts.map +1 -0
- package/{bin → lib/bin}/forge-agent.js +104 -105
- package/lib/bin/forge-agent.js.map +1 -0
- package/lib/server/forge/core/ForgeAgent.d.ts +260 -0
- package/lib/server/forge/core/ForgeAgent.d.ts.map +1 -0
- package/lib/server/forge/core/ForgeAgent.js +995 -0
- package/lib/server/forge/core/ForgeAgent.js.map +1 -0
- package/lib/server/forge/core/agentClient.d.ts +39 -0
- package/lib/server/forge/core/agentClient.d.ts.map +1 -0
- package/{server → lib/server}/forge/core/agentClient.js +7 -12
- package/lib/server/forge/core/agentClient.js.map +1 -0
- package/lib/server/forge/core/branchName.d.ts +20 -0
- package/lib/server/forge/core/branchName.d.ts.map +1 -0
- package/lib/server/forge/core/branchName.js +39 -0
- package/lib/server/forge/core/branchName.js.map +1 -0
- package/lib/server/forge/core/claudeClient.d.ts +60 -0
- package/lib/server/forge/core/claudeClient.d.ts.map +1 -0
- package/lib/server/forge/core/claudeClient.js +347 -0
- package/lib/server/forge/core/claudeClient.js.map +1 -0
- package/lib/server/forge/core/configStore.d.ts +76 -0
- package/lib/server/forge/core/configStore.d.ts.map +1 -0
- package/lib/server/forge/core/configStore.js +213 -0
- package/lib/server/forge/core/configStore.js.map +1 -0
- package/lib/server/forge/core/gitlabClient.d.ts +144 -0
- package/lib/server/forge/core/gitlabClient.d.ts.map +1 -0
- package/{server → lib/server}/forge/core/gitlabClient.js +98 -180
- package/lib/server/forge/core/gitlabClient.js.map +1 -0
- package/lib/server/forge/core/jobs.d.ts +67 -0
- package/lib/server/forge/core/jobs.d.ts.map +1 -0
- package/lib/server/forge/core/jobs.js +185 -0
- package/lib/server/forge/core/jobs.js.map +1 -0
- package/lib/server/forge/core/k8s.d.ts +18 -0
- package/lib/server/forge/core/k8s.d.ts.map +1 -0
- package/lib/server/forge/core/k8s.js +49 -0
- package/lib/server/forge/core/k8s.js.map +1 -0
- package/lib/server/forge/core/localRepo.d.ts +36 -0
- package/lib/server/forge/core/localRepo.d.ts.map +1 -0
- package/lib/server/forge/core/localRepo.js +165 -0
- package/lib/server/forge/core/localRepo.js.map +1 -0
- package/lib/server/forge/core/openclawClient.d.ts +61 -0
- package/lib/server/forge/core/openclawClient.d.ts.map +1 -0
- package/lib/server/forge/core/openclawClient.js +111 -0
- package/lib/server/forge/core/openclawClient.js.map +1 -0
- package/lib/server/forge/core/prompts.d.ts +96 -0
- package/lib/server/forge/core/prompts.d.ts.map +1 -0
- package/lib/server/forge/core/prompts.js +450 -0
- package/lib/server/forge/core/prompts.js.map +1 -0
- package/lib/server/forge/core/providers/azuredevops.d.ts +134 -0
- package/lib/server/forge/core/providers/azuredevops.d.ts.map +1 -0
- package/lib/server/forge/core/providers/azuredevops.js +360 -0
- package/lib/server/forge/core/providers/azuredevops.js.map +1 -0
- package/lib/server/forge/core/providers/base.d.ts +114 -0
- package/lib/server/forge/core/providers/base.d.ts.map +1 -0
- package/lib/server/forge/core/providers/base.js +98 -0
- package/lib/server/forge/core/providers/base.js.map +1 -0
- package/lib/server/forge/core/providers/github.d.ts +133 -0
- package/lib/server/forge/core/providers/github.d.ts.map +1 -0
- package/lib/server/forge/core/providers/github.js +307 -0
- package/lib/server/forge/core/providers/github.js.map +1 -0
- package/lib/server/forge/core/providers/gitlab.d.ts +144 -0
- package/lib/server/forge/core/providers/gitlab.d.ts.map +1 -0
- package/lib/server/forge/core/providers/gitlab.js +407 -0
- package/lib/server/forge/core/providers/gitlab.js.map +1 -0
- package/lib/server/forge/core/providers/index.d.ts +21 -0
- package/lib/server/forge/core/providers/index.d.ts.map +1 -0
- package/lib/server/forge/core/providers/index.js +43 -0
- package/lib/server/forge/core/providers/index.js.map +1 -0
- package/lib/server/forge/core/providers/types.d.ts +80 -0
- package/lib/server/forge/core/providers/types.d.ts.map +1 -0
- package/lib/server/forge/core/providers/types.js +2 -0
- package/lib/server/forge/core/providers/types.js.map +1 -0
- package/lib/server/forge/core/quotaClient.d.ts +48 -0
- package/lib/server/forge/core/quotaClient.d.ts.map +1 -0
- package/lib/server/forge/core/quotaClient.js +88 -0
- package/lib/server/forge/core/quotaClient.js.map +1 -0
- package/lib/server/forge/core/types.d.ts +160 -0
- package/lib/server/forge/core/types.d.ts.map +1 -0
- package/lib/server/forge/core/types.js +2 -0
- package/lib/server/forge/core/types.js.map +1 -0
- package/lib/server/forge/core/validator/attribute.d.ts +31 -0
- package/lib/server/forge/core/validator/attribute.d.ts.map +1 -0
- package/lib/server/forge/core/validator/attribute.js +82 -0
- package/lib/server/forge/core/validator/attribute.js.map +1 -0
- package/lib/server/forge/core/validator/clone.d.ts +14 -0
- package/lib/server/forge/core/validator/clone.d.ts.map +1 -0
- package/lib/server/forge/core/validator/clone.js +99 -0
- package/lib/server/forge/core/validator/clone.js.map +1 -0
- package/lib/server/forge/core/validator/cmd.d.ts +23 -0
- package/lib/server/forge/core/validator/cmd.d.ts.map +1 -0
- package/lib/server/forge/core/validator/cmd.js +87 -0
- package/lib/server/forge/core/validator/cmd.js.map +1 -0
- package/lib/server/forge/core/validator/fs.d.ts +5 -0
- package/lib/server/forge/core/validator/fs.d.ts.map +1 -0
- package/{server → lib/server}/forge/core/validator/fs.js +8 -3
- package/lib/server/forge/core/validator/fs.js.map +1 -0
- package/lib/server/forge/core/validator/overlay.d.ts +13 -0
- package/lib/server/forge/core/validator/overlay.d.ts.map +1 -0
- package/lib/server/forge/core/validator/overlay.js +53 -0
- package/lib/server/forge/core/validator/overlay.js.map +1 -0
- package/lib/server/forge/core/validator/projectType.d.ts +20 -0
- package/lib/server/forge/core/validator/projectType.d.ts.map +1 -0
- package/lib/server/forge/core/validator/projectType.js +94 -0
- package/lib/server/forge/core/validator/projectType.js.map +1 -0
- package/lib/server/forge/core/validator/runners/go.d.ts +21 -0
- package/lib/server/forge/core/validator/runners/go.d.ts.map +1 -0
- package/lib/server/forge/core/validator/runners/go.js +99 -0
- package/lib/server/forge/core/validator/runners/go.js.map +1 -0
- package/lib/server/forge/core/validator/runners/node.d.ts +12 -0
- package/lib/server/forge/core/validator/runners/node.d.ts.map +1 -0
- package/lib/server/forge/core/validator/runners/node.js +75 -0
- package/lib/server/forge/core/validator/runners/node.js.map +1 -0
- package/lib/server/forge/core/validator/tdd.d.ts +30 -0
- package/lib/server/forge/core/validator/tdd.d.ts.map +1 -0
- package/lib/server/forge/core/validator/tdd.js +96 -0
- package/lib/server/forge/core/validator/tdd.js.map +1 -0
- package/lib/server/forge/core/validator.d.ts +58 -0
- package/lib/server/forge/core/validator.d.ts.map +1 -0
- package/lib/server/forge/core/validator.js +150 -0
- package/lib/server/forge/core/validator.js.map +1 -0
- package/lib/server/forge/routes.d.ts +22 -0
- package/lib/server/forge/routes.d.ts.map +1 -0
- package/lib/server/forge/routes.js +984 -0
- package/lib/server/forge/routes.js.map +1 -0
- package/lib/server.d.ts +2 -0
- package/lib/server.d.ts.map +1 -0
- package/lib/server.js +52 -0
- package/lib/server.js.map +1 -0
- package/lib/shared/events.d.ts +12 -0
- package/lib/shared/events.d.ts.map +1 -0
- package/lib/shared/events.js +12 -0
- package/lib/shared/events.js.map +1 -0
- package/package.json +15 -13
- package/scripts/fix-shebang.cjs +10 -0
- package/bin/cli/analyze.js +0 -516
- package/bin/cli/apply.js +0 -264
- package/bin/cli/cifix.js +0 -300
- package/bin/cli/close.js +0 -125
- package/bin/cli/createIssue.js +0 -112
- package/bin/cli/doctor.js +0 -161
- package/bin/cli/init.js +0 -306
- package/bin/cli/issue.js +0 -116
- package/bin/cli/issues.js +0 -155
- package/bin/cli/merge.js +0 -175
- package/bin/cli/refine.js +0 -253
- package/bin/cli/repl.js +0 -301
- package/bin/cli/repos.js +0 -91
- package/bin/cli/resolution.js +0 -126
- package/bin/cli/session.js +0 -230
- package/bin/cli/sessionStore.js +0 -211
- package/bin/cli/ship.js +0 -762
- package/bin/cli/update.js +0 -95
- package/bin/cli/utils.js +0 -145
- package/bin/cli/validate.js +0 -280
- package/bin/cli/watch.js +0 -274
- package/server/forge/core/ForgeAgent.js +0 -1179
- package/server/forge/core/ForgeAgent.test.js +0 -179
- package/server/forge/core/branchName.js +0 -41
- package/server/forge/core/claudeClient.js +0 -378
- package/server/forge/core/configStore.js +0 -229
- package/server/forge/core/configStore.test.js +0 -89
- package/server/forge/core/jobs.js +0 -180
- package/server/forge/core/k8s.js +0 -54
- package/server/forge/core/localRepo.js +0 -163
- package/server/forge/core/openclawClient.js +0 -125
- package/server/forge/core/prompts.js +0 -483
- package/server/forge/core/prompts.test.js +0 -219
- package/server/forge/core/providers/azuredevops.js +0 -409
- package/server/forge/core/providers/base.js +0 -208
- package/server/forge/core/providers/github.js +0 -348
- package/server/forge/core/providers/gitlab.js +0 -529
- package/server/forge/core/providers/index.js +0 -47
- package/server/forge/core/quotaClient.js +0 -101
- package/server/forge/core/validator/attribute.js +0 -84
- package/server/forge/core/validator/clone.js +0 -116
- package/server/forge/core/validator/cmd.js +0 -98
- package/server/forge/core/validator/overlay.js +0 -52
- package/server/forge/core/validator/projectType.js +0 -87
- package/server/forge/core/validator/runners/go.js +0 -107
- package/server/forge/core/validator/runners/node.js +0 -84
- package/server/forge/core/validator/tdd.js +0 -105
- package/server/forge/core/validator.js +0 -167
- package/server/forge/routes.js +0 -1027
|
@@ -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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
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
|
-
|
|
102
|
-
|
|
106
|
+
const pkg = await readPkg();
|
|
107
|
+
console.log(pkg.version);
|
|
103
108
|
}
|
|
104
|
-
|
|
105
109
|
async function cmdStart({ port }) {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
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
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
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
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
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
|
-
|
|
204
|
-
|
|
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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"}
|