@ipul-labs/forge 1.22.0 → 1.35.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 (294) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -78
  3. package/dist/apple-touch-icon.png +0 -0
  4. package/dist/assets/index-BmEuPeOG.js +27 -0
  5. package/dist/assets/index-CSH1OQYQ.css +1 -0
  6. package/dist/boot-check.js +98 -0
  7. package/dist/favicon.svg +8 -0
  8. package/dist/icon-192.png +0 -0
  9. package/dist/icon-512.png +0 -0
  10. package/dist/icon.svg +12 -0
  11. package/dist/index.html +33 -0
  12. package/dist/manifest.webmanifest +18 -0
  13. package/dist/theme-init.js +11 -0
  14. package/lib/bin/cli/analyze.d.ts.map +1 -1
  15. package/lib/bin/cli/analyze.js +3 -44
  16. package/lib/bin/cli/analyze.js.map +1 -1
  17. package/lib/bin/cli/apply.d.ts.map +1 -1
  18. package/lib/bin/cli/apply.js +2 -20
  19. package/lib/bin/cli/apply.js.map +1 -1
  20. package/lib/bin/cli/cifix.d.ts.map +1 -1
  21. package/lib/bin/cli/cifix.js +4 -28
  22. package/lib/bin/cli/cifix.js.map +1 -1
  23. package/lib/bin/cli/close.d.ts.map +1 -1
  24. package/lib/bin/cli/close.js +2 -33
  25. package/lib/bin/cli/close.js.map +1 -1
  26. package/lib/bin/cli/createIssue.d.ts.map +1 -1
  27. package/lib/bin/cli/createIssue.js +3 -12
  28. package/lib/bin/cli/createIssue.js.map +1 -1
  29. package/lib/bin/cli/doctor.d.ts.map +1 -1
  30. package/lib/bin/cli/doctor.js +3 -4
  31. package/lib/bin/cli/doctor.js.map +1 -1
  32. package/lib/bin/cli/init.js +1 -10
  33. package/lib/bin/cli/init.js.map +1 -1
  34. package/lib/bin/cli/issue.d.ts.map +1 -1
  35. package/lib/bin/cli/issue.js +3 -12
  36. package/lib/bin/cli/issue.js.map +1 -1
  37. package/lib/bin/cli/issues.d.ts.map +1 -1
  38. package/lib/bin/cli/issues.js +3 -12
  39. package/lib/bin/cli/issues.js.map +1 -1
  40. package/lib/bin/cli/merge.d.ts.map +1 -1
  41. package/lib/bin/cli/merge.js +4 -20
  42. package/lib/bin/cli/merge.js.map +1 -1
  43. package/lib/bin/cli/refine.d.ts.map +1 -1
  44. package/lib/bin/cli/refine.js +2 -26
  45. package/lib/bin/cli/refine.js.map +1 -1
  46. package/lib/bin/cli/repl.d.ts.map +1 -1
  47. package/lib/bin/cli/repl.js +4 -13
  48. package/lib/bin/cli/repl.js.map +1 -1
  49. package/lib/bin/cli/repos.d.ts.map +1 -1
  50. package/lib/bin/cli/repos.js +1 -11
  51. package/lib/bin/cli/repos.js.map +1 -1
  52. package/lib/bin/cli/resetPassword.d.ts +21 -0
  53. package/lib/bin/cli/resetPassword.d.ts.map +1 -0
  54. package/lib/bin/cli/resetPassword.js +69 -0
  55. package/lib/bin/cli/resetPassword.js.map +1 -0
  56. package/lib/bin/cli/resolution.d.ts.map +1 -1
  57. package/lib/bin/cli/resolution.js +2 -19
  58. package/lib/bin/cli/resolution.js.map +1 -1
  59. package/lib/bin/cli/serverClient.d.ts +2 -0
  60. package/lib/bin/cli/serverClient.d.ts.map +1 -1
  61. package/lib/bin/cli/serverClient.js +8 -4
  62. package/lib/bin/cli/serverClient.js.map +1 -1
  63. package/lib/bin/cli/session.d.ts.map +1 -1
  64. package/lib/bin/cli/session.js.map +1 -1
  65. package/lib/bin/cli/sessionStore.d.ts +1 -1
  66. package/lib/bin/cli/sessionStore.js +2 -2
  67. package/lib/bin/cli/sessionStore.js.map +1 -1
  68. package/lib/bin/cli/ship.d.ts.map +1 -1
  69. package/lib/bin/cli/ship.js +15 -23
  70. package/lib/bin/cli/ship.js.map +1 -1
  71. package/lib/bin/cli/update.d.ts.map +1 -1
  72. package/lib/bin/cli/update.js +34 -28
  73. package/lib/bin/cli/update.js.map +1 -1
  74. package/lib/bin/cli/updatePlan.d.ts +30 -0
  75. package/lib/bin/cli/updatePlan.d.ts.map +1 -0
  76. package/lib/bin/cli/updatePlan.js +50 -0
  77. package/lib/bin/cli/updatePlan.js.map +1 -0
  78. package/lib/bin/cli/utils.d.ts +3 -0
  79. package/lib/bin/cli/utils.d.ts.map +1 -1
  80. package/lib/bin/cli/utils.js +7 -23
  81. package/lib/bin/cli/utils.js.map +1 -1
  82. package/lib/bin/cli/validate.d.ts.map +1 -1
  83. package/lib/bin/cli/validate.js +3 -25
  84. package/lib/bin/cli/validate.js.map +1 -1
  85. package/lib/bin/cli/watch.d.ts.map +1 -1
  86. package/lib/bin/cli/watch.js +3 -12
  87. package/lib/bin/cli/watch.js.map +1 -1
  88. package/lib/bin/forge-agent.js +10 -22
  89. package/lib/bin/forge-agent.js.map +1 -1
  90. package/lib/server/app.d.ts +24 -0
  91. package/lib/server/app.d.ts.map +1 -0
  92. package/lib/server/app.js +58 -0
  93. package/lib/server/app.js.map +1 -0
  94. package/lib/server/forge/analyses/analysisStore.d.ts +53 -0
  95. package/lib/server/forge/analyses/analysisStore.d.ts.map +1 -0
  96. package/lib/server/forge/analyses/analysisStore.js +77 -0
  97. package/lib/server/forge/analyses/analysisStore.js.map +1 -0
  98. package/lib/server/forge/auth/apiTokens.d.ts +34 -0
  99. package/lib/server/forge/auth/apiTokens.d.ts.map +1 -0
  100. package/lib/server/forge/auth/apiTokens.js +44 -0
  101. package/lib/server/forge/auth/apiTokens.js.map +1 -0
  102. package/lib/server/forge/auth/auditLog.d.ts +36 -0
  103. package/lib/server/forge/auth/auditLog.d.ts.map +1 -0
  104. package/lib/server/forge/auth/auditLog.js +56 -0
  105. package/lib/server/forge/auth/auditLog.js.map +1 -0
  106. package/lib/server/forge/auth/authConfig.d.ts +13 -0
  107. package/lib/server/forge/auth/authConfig.d.ts.map +1 -0
  108. package/lib/server/forge/auth/authConfig.js +37 -0
  109. package/lib/server/forge/auth/authConfig.js.map +1 -0
  110. package/lib/server/forge/auth/createAuth.d.ts +130 -0
  111. package/lib/server/forge/auth/createAuth.d.ts.map +1 -0
  112. package/lib/server/forge/auth/createAuth.js +387 -0
  113. package/lib/server/forge/auth/createAuth.js.map +1 -0
  114. package/lib/server/forge/auth/middleware.d.ts +10 -0
  115. package/lib/server/forge/auth/middleware.d.ts.map +1 -0
  116. package/lib/server/forge/auth/middleware.js +22 -0
  117. package/lib/server/forge/auth/middleware.js.map +1 -0
  118. package/lib/server/forge/auth/oidc.d.ts +38 -0
  119. package/lib/server/forge/auth/oidc.d.ts.map +1 -0
  120. package/lib/server/forge/auth/oidc.js +63 -0
  121. package/lib/server/forge/auth/oidc.js.map +1 -0
  122. package/lib/server/forge/auth/passwords.d.ts +7 -0
  123. package/lib/server/forge/auth/passwords.d.ts.map +1 -0
  124. package/lib/server/forge/auth/passwords.js +28 -0
  125. package/lib/server/forge/auth/passwords.js.map +1 -0
  126. package/lib/server/forge/auth/resetPassword.d.ts +14 -0
  127. package/lib/server/forge/auth/resetPassword.d.ts.map +1 -0
  128. package/lib/server/forge/auth/resetPassword.js +29 -0
  129. package/lib/server/forge/auth/resetPassword.js.map +1 -0
  130. package/lib/server/forge/auth/roles.d.ts +7 -0
  131. package/lib/server/forge/auth/roles.d.ts.map +1 -0
  132. package/lib/server/forge/auth/roles.js +15 -0
  133. package/lib/server/forge/auth/roles.js.map +1 -0
  134. package/lib/server/forge/auth/sessions.d.ts +27 -0
  135. package/lib/server/forge/auth/sessions.d.ts.map +1 -0
  136. package/lib/server/forge/auth/sessions.js +37 -0
  137. package/lib/server/forge/auth/sessions.js.map +1 -0
  138. package/lib/server/forge/auth/testHarness.d.ts +104 -0
  139. package/lib/server/forge/auth/testHarness.d.ts.map +1 -0
  140. package/lib/server/forge/auth/testHarness.js +53 -0
  141. package/lib/server/forge/auth/testHarness.js.map +1 -0
  142. package/lib/server/forge/auth/tokenHash.d.ts +3 -0
  143. package/lib/server/forge/auth/tokenHash.d.ts.map +1 -0
  144. package/lib/server/forge/auth/tokenHash.js +4 -0
  145. package/lib/server/forge/auth/tokenHash.js.map +1 -0
  146. package/lib/server/forge/auth/users.d.ts +51 -0
  147. package/lib/server/forge/auth/users.d.ts.map +1 -0
  148. package/lib/server/forge/auth/users.js +118 -0
  149. package/lib/server/forge/auth/users.js.map +1 -0
  150. package/lib/server/forge/core/ForgeAgent.d.ts +43 -1
  151. package/lib/server/forge/core/ForgeAgent.d.ts.map +1 -1
  152. package/lib/server/forge/core/ForgeAgent.js +209 -61
  153. package/lib/server/forge/core/ForgeAgent.js.map +1 -1
  154. package/lib/server/forge/core/agentClient.d.ts +7 -23
  155. package/lib/server/forge/core/agentClient.d.ts.map +1 -1
  156. package/lib/server/forge/core/agentClient.js +10 -25
  157. package/lib/server/forge/core/agentClient.js.map +1 -1
  158. package/lib/server/forge/core/claudeClient.d.ts +24 -1
  159. package/lib/server/forge/core/claudeClient.d.ts.map +1 -1
  160. package/lib/server/forge/core/claudeClient.js +25 -7
  161. package/lib/server/forge/core/claudeClient.js.map +1 -1
  162. package/lib/server/forge/core/configStore.d.ts +11 -1
  163. package/lib/server/forge/core/configStore.d.ts.map +1 -1
  164. package/lib/server/forge/core/configStore.js +33 -2
  165. package/lib/server/forge/core/configStore.js.map +1 -1
  166. package/lib/server/forge/core/dependencyPaths.d.ts +19 -0
  167. package/lib/server/forge/core/dependencyPaths.d.ts.map +1 -0
  168. package/lib/server/forge/core/dependencyPaths.js +32 -0
  169. package/lib/server/forge/core/dependencyPaths.js.map +1 -0
  170. package/lib/server/forge/core/evidence.d.ts +43 -0
  171. package/lib/server/forge/core/evidence.d.ts.map +1 -0
  172. package/lib/server/forge/core/evidence.js +108 -0
  173. package/lib/server/forge/core/evidence.js.map +1 -0
  174. package/lib/server/forge/core/jobs.d.ts +2 -0
  175. package/lib/server/forge/core/jobs.d.ts.map +1 -1
  176. package/lib/server/forge/core/jobs.js +8 -0
  177. package/lib/server/forge/core/jobs.js.map +1 -1
  178. package/lib/server/forge/core/localRepo.d.ts +31 -10
  179. package/lib/server/forge/core/localRepo.d.ts.map +1 -1
  180. package/lib/server/forge/core/localRepo.js +48 -82
  181. package/lib/server/forge/core/localRepo.js.map +1 -1
  182. package/lib/server/forge/core/prompts.d.ts +3 -1
  183. package/lib/server/forge/core/prompts.d.ts.map +1 -1
  184. package/lib/server/forge/core/prompts.js +14 -5
  185. package/lib/server/forge/core/prompts.js.map +1 -1
  186. package/lib/server/forge/core/providers/azuredevops.d.ts +4 -2
  187. package/lib/server/forge/core/providers/azuredevops.d.ts.map +1 -1
  188. package/lib/server/forge/core/providers/azuredevops.js +12 -2
  189. package/lib/server/forge/core/providers/azuredevops.js.map +1 -1
  190. package/lib/server/forge/core/providers/base.d.ts +29 -4
  191. package/lib/server/forge/core/providers/base.d.ts.map +1 -1
  192. package/lib/server/forge/core/providers/base.js +21 -3
  193. package/lib/server/forge/core/providers/base.js.map +1 -1
  194. package/lib/server/forge/core/providers/github.d.ts +7 -7
  195. package/lib/server/forge/core/providers/github.d.ts.map +1 -1
  196. package/lib/server/forge/core/providers/github.js +13 -4
  197. package/lib/server/forge/core/providers/github.js.map +1 -1
  198. package/lib/server/forge/core/providers/gitlab.d.ts +20 -3
  199. package/lib/server/forge/core/providers/gitlab.d.ts.map +1 -1
  200. package/lib/server/forge/core/providers/gitlab.js +65 -5
  201. package/lib/server/forge/core/providers/gitlab.js.map +1 -1
  202. package/lib/server/forge/core/providers/types.d.ts +20 -0
  203. package/lib/server/forge/core/providers/types.d.ts.map +1 -1
  204. package/lib/server/forge/core/secretBox.d.ts +17 -0
  205. package/lib/server/forge/core/secretBox.d.ts.map +1 -0
  206. package/lib/server/forge/core/secretBox.js +74 -0
  207. package/lib/server/forge/core/secretBox.js.map +1 -0
  208. package/lib/server/forge/core/types.d.ts +7 -1
  209. package/lib/server/forge/core/types.d.ts.map +1 -1
  210. package/lib/server/forge/core/validator/clone.d.ts +5 -4
  211. package/lib/server/forge/core/validator/clone.d.ts.map +1 -1
  212. package/lib/server/forge/core/validator/clone.js +6 -86
  213. package/lib/server/forge/core/validator/clone.js.map +1 -1
  214. package/lib/server/forge/core/validator/cmd.d.ts.map +1 -1
  215. package/lib/server/forge/core/validator/cmd.js +4 -1
  216. package/lib/server/forge/core/validator/cmd.js.map +1 -1
  217. package/lib/server/forge/core/validator/projectType.d.ts.map +1 -1
  218. package/lib/server/forge/core/validator/projectType.js +2 -1
  219. package/lib/server/forge/core/validator/projectType.js.map +1 -1
  220. package/lib/server/forge/core/validator/runners/node.d.ts.map +1 -1
  221. package/lib/server/forge/core/validator/runners/node.js +6 -2
  222. package/lib/server/forge/core/validator/runners/node.js.map +1 -1
  223. package/lib/server/forge/core/validator.d.ts.map +1 -1
  224. package/lib/server/forge/core/validator.js +28 -22
  225. package/lib/server/forge/core/validator.js.map +1 -1
  226. package/lib/server/forge/core/workspaces.d.ts +70 -0
  227. package/lib/server/forge/core/workspaces.d.ts.map +1 -0
  228. package/lib/server/forge/core/workspaces.js +348 -0
  229. package/lib/server/forge/core/workspaces.js.map +1 -0
  230. package/lib/server/forge/db/database.d.ts +22 -0
  231. package/lib/server/forge/db/database.d.ts.map +1 -0
  232. package/lib/server/forge/db/database.js +71 -0
  233. package/lib/server/forge/db/database.js.map +1 -0
  234. package/lib/server/forge/db/migrations.d.ts +11 -0
  235. package/lib/server/forge/db/migrations.d.ts.map +1 -0
  236. package/lib/server/forge/db/migrations.js +87 -0
  237. package/lib/server/forge/db/migrations.js.map +1 -0
  238. package/lib/server/forge/routes.d.ts.map +1 -1
  239. package/lib/server/forge/routes.js +413 -163
  240. package/lib/server/forge/routes.js.map +1 -1
  241. package/lib/server/forge/sse.d.ts +10 -0
  242. package/lib/server/forge/sse.d.ts.map +1 -0
  243. package/lib/server/forge/sse.js +22 -0
  244. package/lib/server/forge/sse.js.map +1 -0
  245. package/lib/server/spa.d.ts +12 -0
  246. package/lib/server/spa.d.ts.map +1 -0
  247. package/lib/server/spa.js +23 -0
  248. package/lib/server/spa.js.map +1 -0
  249. package/lib/server.js +9 -24
  250. package/lib/server.js.map +1 -1
  251. package/lib/shared/events.d.ts +3 -0
  252. package/lib/shared/events.d.ts.map +1 -1
  253. package/lib/shared/events.js +3 -0
  254. package/lib/shared/events.js.map +1 -1
  255. package/lib/shared/packageRoot.d.ts +11 -0
  256. package/lib/shared/packageRoot.d.ts.map +1 -0
  257. package/lib/shared/packageRoot.js +23 -0
  258. package/lib/shared/packageRoot.js.map +1 -0
  259. package/lib/shared/project.d.ts +3 -0
  260. package/lib/shared/project.d.ts.map +1 -0
  261. package/lib/shared/project.js +3 -0
  262. package/lib/shared/project.js.map +1 -0
  263. package/package.json +24 -9
  264. package/lib/bin/cli/improve.d.ts +0 -2
  265. package/lib/bin/cli/improve.d.ts.map +0 -1
  266. package/lib/bin/cli/improve.js +0 -189
  267. package/lib/bin/cli/improve.js.map +0 -1
  268. package/lib/bin/cli/stats.d.ts +0 -2
  269. package/lib/bin/cli/stats.d.ts.map +0 -1
  270. package/lib/bin/cli/stats.js +0 -78
  271. package/lib/bin/cli/stats.js.map +0 -1
  272. package/lib/server/forge/core/k8s.d.ts +0 -18
  273. package/lib/server/forge/core/k8s.d.ts.map +0 -1
  274. package/lib/server/forge/core/k8s.js +0 -49
  275. package/lib/server/forge/core/k8s.js.map +0 -1
  276. package/lib/server/forge/core/openclawClient.d.ts +0 -61
  277. package/lib/server/forge/core/openclawClient.d.ts.map +0 -1
  278. package/lib/server/forge/core/openclawClient.js +0 -111
  279. package/lib/server/forge/core/openclawClient.js.map +0 -1
  280. package/lib/server/forge/core/quotaClient.d.ts +0 -48
  281. package/lib/server/forge/core/quotaClient.d.ts.map +0 -1
  282. package/lib/server/forge/core/quotaClient.js +0 -88
  283. package/lib/server/forge/core/quotaClient.js.map +0 -1
  284. package/lib/server/forge/core/selfImprove.d.ts +0 -43
  285. package/lib/server/forge/core/selfImprove.d.ts.map +0 -1
  286. package/lib/server/forge/core/selfImprove.js +0 -372
  287. package/lib/server/forge/core/selfImprove.js.map +0 -1
  288. package/lib/server/forge/core/telemetry.d.ts +0 -100
  289. package/lib/server/forge/core/telemetry.d.ts.map +0 -1
  290. package/lib/server/forge/core/telemetry.js +0 -273
  291. package/lib/server/forge/core/telemetry.js.map +0 -1
  292. package/scripts/fix-shebang.cjs +0 -11
  293. package/scripts/inject-readme.cjs +0 -23
  294. package/scripts/local-rollout.sh +0 -134
@@ -16,6 +16,16 @@ export interface NormalIssue {
16
16
  title: string;
17
17
  } | null;
18
18
  }
19
+ export interface NormalLabel {
20
+ name: string;
21
+ color: string | null;
22
+ description: string | null;
23
+ }
24
+ /** A file stored on the host so MR descriptions can link to it. */
25
+ export interface NormalUpload {
26
+ url: string;
27
+ markdown: string;
28
+ }
19
29
  export interface NormalMR {
20
30
  iid: number;
21
31
  title: string;
@@ -46,6 +56,16 @@ export interface NormalPipeline {
46
56
  web_url: string;
47
57
  created_at: string;
48
58
  }
59
+ /** One row of the project's pipeline history (any ref, any trigger). */
60
+ export interface NormalPipelineSummary extends NormalPipeline {
61
+ ref: string;
62
+ sha: string;
63
+ source: string;
64
+ }
65
+ export interface ListPipelinesParams {
66
+ page: number;
67
+ perPage: number;
68
+ }
49
69
  export interface NormalJob {
50
70
  id: number;
51
71
  name: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/providers/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC3B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,eAAe,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;CACzE;AAED,MAAM,WAAW,QAAQ;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,OAAO,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,KAAK,EAAE,OAAO,CAAC;IACf,aAAa,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC1D,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,4BAA4B,CAAC,EAAE,OAAO,CAAC;CACvC;AAED,MAAM,WAAW,cAAc;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,EAAE,OAAO,CAAC;IACtB,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACrD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/providers/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface SecretBox {
2
+ seal(plaintext: string): string;
3
+ open(value: string): string;
4
+ }
5
+ export declare const isSealed: (value: string) => boolean;
6
+ /** AES-256-GCM. Sealed values are `enc:v1:<iv>.<tag>.<ciphertext>` (base64url). */
7
+ export declare function createSecretBox(key: Buffer): SecretBox;
8
+ export declare function defaultKeyPath(): string;
9
+ /**
10
+ * FORGE_ENCRYPTION_KEY (base64, 32 bytes) wins — use it with a secret manager
11
+ * in production. Otherwise a key file is generated once with 0600 permissions.
12
+ */
13
+ export declare function loadOrCreateKey({ envKey, keyPath }: {
14
+ envKey: string | undefined;
15
+ keyPath: string;
16
+ }): Buffer;
17
+ //# sourceMappingURL=secretBox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretBox.d.ts","sourceRoot":"","sources":["../../../../server/forge/core/secretBox.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACzB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC;IAChC,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC5B;AAED,eAAO,MAAM,QAAQ,GAAI,OAAO,MAAM,YAA6B,CAAC;AAEpE,mFAAmF;AACnF,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAoBtD;AAED,wBAAgB,cAAc,WAE7B;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE;IAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAuB5G"}
@@ -0,0 +1,74 @@
1
+ import { createCipheriv, createDecipheriv, randomBytes } from "node:crypto";
2
+ import { existsSync, linkSync, mkdirSync, readFileSync, unlinkSync, writeFileSync } from "node:fs";
3
+ import os from "node:os";
4
+ import path from "node:path";
5
+ const PREFIX = "enc:v1:";
6
+ export const isSealed = (value) => value.startsWith(PREFIX);
7
+ /** AES-256-GCM. Sealed values are `enc:v1:<iv>.<tag>.<ciphertext>` (base64url). */
8
+ export function createSecretBox(key) {
9
+ if (key.length !== 32)
10
+ throw new Error("Encryption key must be 32 bytes.");
11
+ return {
12
+ seal(plaintext) {
13
+ if (!plaintext)
14
+ return plaintext;
15
+ const iv = randomBytes(12);
16
+ const cipher = createCipheriv("aes-256-gcm", key, iv);
17
+ const ct = Buffer.concat([cipher.update(plaintext, "utf8"), cipher.final()]);
18
+ return `${PREFIX}${iv.toString("base64url")}.${cipher.getAuthTag().toString("base64url")}.${ct.toString("base64url")}`;
19
+ },
20
+ open(value) {
21
+ // Plaintext values come from configs written before encryption existed;
22
+ // they are re-sealed on the next write.
23
+ if (!value || !isSealed(value))
24
+ return value;
25
+ const [iv, tag, ct] = value.slice(PREFIX.length).split(".");
26
+ const decipher = createDecipheriv("aes-256-gcm", key, Buffer.from(iv, "base64url"));
27
+ decipher.setAuthTag(Buffer.from(tag, "base64url"));
28
+ return Buffer.concat([decipher.update(Buffer.from(ct, "base64url")), decipher.final()]).toString("utf8");
29
+ },
30
+ };
31
+ }
32
+ export function defaultKeyPath() {
33
+ return process.env.FORGE_KEY_PATH ?? path.join(os.homedir(), ".forge", "master.key");
34
+ }
35
+ /**
36
+ * FORGE_ENCRYPTION_KEY (base64, 32 bytes) wins — use it with a secret manager
37
+ * in production. Otherwise a key file is generated once with 0600 permissions.
38
+ */
39
+ export function loadOrCreateKey({ envKey, keyPath }) {
40
+ if (envKey) {
41
+ const key = Buffer.from(envKey, "base64");
42
+ if (key.length !== 32)
43
+ throw new Error("FORGE_ENCRYPTION_KEY must decode to 32 bytes.");
44
+ return key;
45
+ }
46
+ if (existsSync(keyPath))
47
+ return readKeyFile(keyPath);
48
+ mkdirSync(path.dirname(keyPath), { recursive: true, mode: 0o700 });
49
+ const key = randomBytes(32);
50
+ // Write to a private temp file, then link it into place: the key file only
51
+ // ever appears complete, and link() never overwrites, so concurrent first
52
+ // starts (e.g. parallel test workers) all converge on the winner's key.
53
+ const tmpPath = `${keyPath}.${process.pid}.${randomBytes(6).toString("hex")}.tmp`;
54
+ writeFileSync(tmpPath, key.toString("base64"), { mode: 0o600, flag: "wx" });
55
+ try {
56
+ linkSync(tmpPath, keyPath);
57
+ return key;
58
+ }
59
+ catch (err) {
60
+ if (err.code !== "EEXIST")
61
+ throw err;
62
+ return readKeyFile(keyPath);
63
+ }
64
+ finally {
65
+ unlinkSync(tmpPath);
66
+ }
67
+ }
68
+ function readKeyFile(keyPath) {
69
+ const key = Buffer.from(readFileSync(keyPath, "utf8").trim(), "base64");
70
+ if (key.length !== 32)
71
+ throw new Error(`Key file ${keyPath} must decode to 32 bytes.`);
72
+ return key;
73
+ }
74
+ //# sourceMappingURL=secretBox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"secretBox.js","sourceRoot":"","sources":["../../../../server/forge/core/secretBox.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,8 @@ export interface AnalysisResult {
17
17
  reasoning: string;
18
18
  changes: ForgeChange[];
19
19
  repos: string[];
20
+ /** Markdown proof the agent gathered (write-up + uploaded screenshots); agentic mode only. */
21
+ evidence?: string;
20
22
  }
21
23
  export interface ApplicationResult {
22
24
  repo: string;
@@ -43,6 +45,8 @@ export interface ForgeEvent {
43
45
  rateLimit?: unknown;
44
46
  resumed?: boolean;
45
47
  text?: string;
48
+ /** `analysis_saved`: the analysis as the server stored it. */
49
+ analysis?: Record<string, unknown>;
46
50
  status?: string;
47
51
  passed?: boolean;
48
52
  exitCode?: number;
@@ -128,7 +132,6 @@ export interface ForgeConfig {
128
132
  testDeployUrlTemplate?: string;
129
133
  maxCiFixAttempts?: number;
130
134
  cliTimeout?: number;
131
- selfImproveEnabled?: boolean;
132
135
  };
133
136
  connections: {
134
137
  gitlab: {
@@ -148,6 +151,9 @@ export interface ForgeConfig {
148
151
  repo: string;
149
152
  baseBranch: string;
150
153
  };
154
+ anthropic: {
155
+ token: string;
156
+ };
151
157
  };
152
158
  }
153
159
  export interface ValidationStepResult {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/forge/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../server/forge/core/types.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,15 @@
1
1
  /**
2
- * Cache + clone management for the validator's per-repo workspaces.
2
+ * Workspace setup for the validator.
3
3
  *
4
4
  * ensureClone(repo, branchName, emit)
5
- * - Lazily clones into ~/.forge/cache/<repo>/ (or FORGE_VALIDATE_CACHE).
6
- * - Always fetch + reset to the remote HEAD, then check out a stable per-issue
5
+ * - Leases the issue's worktree from the shared workspaces store (see
6
+ * ../workspaces.ts), reset to the remote HEAD on a stable per-issue
7
7
  * branch so validation runs are deterministic and old overlays can't
8
8
  * linger across runs.
9
9
  * - GitLab-only for v1; GitHub / Azure DevOps raise a clear error.
10
10
  * - Emits clone-step progress / log / step_result events.
11
11
  */
12
12
  import type { ForgeEvent } from "../types.ts";
13
- export declare function ensureClone(repo: string, branchName: string, emit: (event: ForgeEvent) => void): Promise<string>;
13
+ import type { WorkspaceLease } from "../workspaces.ts";
14
+ export declare function ensureClone(repo: string, branchName: string, emit: (event: ForgeEvent) => void): Promise<WorkspaceLease>;
14
15
  //# sourceMappingURL=clone.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/validator/clone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkD9C,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,mBAgDpG"}
1
+ {"version":3,"file":"clone.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/validator/clone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAEvD,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,cAAc,CAAC,CAK9H"}
@@ -1,99 +1,19 @@
1
1
  /**
2
- * Cache + clone management for the validator's per-repo workspaces.
2
+ * Workspace setup for the validator.
3
3
  *
4
4
  * ensureClone(repo, branchName, emit)
5
- * - Lazily clones into ~/.forge/cache/<repo>/ (or FORGE_VALIDATE_CACHE).
6
- * - Always fetch + reset to the remote HEAD, then check out a stable per-issue
5
+ * - Leases the issue's worktree from the shared workspaces store (see
6
+ * ../workspaces.ts), reset to the remote HEAD on a stable per-issue
7
7
  * branch so validation runs are deterministic and old overlays can't
8
8
  * linger across runs.
9
9
  * - GitLab-only for v1; GitHub / Azure DevOps raise a clear error.
10
10
  * - Emits clone-step progress / log / step_result events.
11
11
  */
12
- import { writeFileSync, unlinkSync } from "node:fs";
13
- import fs from "node:fs/promises";
14
- import os from "node:os";
15
- import path from "node:path";
16
- import { getConnection } from "../configStore.js";
17
- import { runCmd } from "./cmd.js";
18
- import { exists } from "./fs.js";
19
- const CACHE_ROOT = process.env.FORGE_VALIDATE_CACHE
20
- ?? path.join(os.homedir(), ".forge", "cache");
21
- function sanitizeRepo(repo) {
22
- return repo.replace(/[^a-zA-Z0-9_./-]/g, "_");
23
- }
24
- function gitlabCloneUrl(project) {
25
- return `https://gitlab.com/${project}.git`;
26
- }
27
- function createAskpassScript(token) {
28
- const script = path.join(os.tmpdir(), `.forge-askpass-${process.pid}`);
29
- writeFileSync(script, `#!/bin/sh\ncase "$1" in *Username*) echo oauth2;; *) echo "${token}";; esac\n`, { mode: 0o700 });
30
- return script;
31
- }
32
- function gitEnvWithToken() {
33
- const { token } = getConnection("gitlab");
34
- if (!token) {
35
- throw new Error("GitLab token is required to clone the repo for validation. Set it in Settings → Connections or via GITLAB_TOKEN env var.");
36
- }
37
- const askpass = createAskpassScript(token);
38
- return {
39
- env: {
40
- GIT_ASKPASS: askpass,
41
- GIT_TERMINAL_PROMPT: "0",
42
- },
43
- cleanup: () => { try {
44
- unlinkSync(askpass);
45
- }
46
- catch { } },
47
- };
48
- }
49
- function resolveCloneUrl(repoInput) {
50
- // Repos may arrive prefixed — "github:owner/name", "azuredevops:org/proj/repo".
51
- // v1 only supports GitLab; tell the caller clearly when it's something else.
52
- const colon = repoInput.indexOf(":");
53
- if (colon > 0) {
54
- const prefix = repoInput.slice(0, colon).toLowerCase();
55
- if (prefix === "gitlab")
56
- return gitlabCloneUrl(repoInput.slice(colon + 1));
57
- if (prefix === "github" || prefix === "azuredevops" || prefix === "azure") {
58
- throw new Error(`Validation for ${prefix} repos isn't implemented yet — GitLab only for now.`);
59
- }
60
- }
61
- return gitlabCloneUrl(repoInput);
62
- }
12
+ import { acquireWorkingTree } from "../localRepo.js";
63
13
  export async function ensureClone(repo, branchName, emit) {
64
- const dir = path.join(CACHE_ROOT, sanitizeRepo(repo));
65
- const hasRepo = await exists(path.join(dir, ".git"));
66
14
  emit({ type: "progress", step: "clone", status: "running" });
67
- emit({ type: "log", step: "clone", message: hasRepo ? `Reusing clone at ${dir}` : `Cloning ${repo} → ${dir}` });
68
- const { env: gitEnv, cleanup } = gitEnvWithToken();
69
- const envOpts = { env: { ...process.env, ...gitEnv } };
70
- try {
71
- if (!hasRepo) {
72
- await fs.mkdir(dir, { recursive: true });
73
- const clone = await runCmd("git", ["clone", "--depth=1", resolveCloneUrl(repo), dir], envOpts, (l) => emit({ type: "log", step: "clone", message: l }));
74
- if (clone.code !== 0)
75
- throw new Error(`git clone failed (code ${clone.code})`);
76
- }
77
- const fetch = await runCmd("git", ["fetch", "--depth=1", "origin", "HEAD"], { cwd: dir, ...envOpts }, (l) => emit({ type: "log", step: "clone", message: l }));
78
- if (fetch.code !== 0)
79
- throw new Error(`git fetch failed (code ${fetch.code})`);
80
- }
81
- finally {
82
- cleanup();
83
- }
84
- // Two-step reset+clean before the branch switch so any lingering overlay
85
- // from a prior run is wiped — `git checkout -B` alone refuses if dirty.
86
- // `clean -fd` preserves node_modules because it's .gitignored.
87
- emit({ type: "log", step: "clone", message: `Resetting workspace to FETCH_HEAD` });
88
- const reset = await runCmd("git", ["reset", "--hard", "FETCH_HEAD"], { cwd: dir });
89
- if (reset.code !== 0)
90
- throw new Error(`git reset failed (code ${reset.code})`);
91
- await runCmd("git", ["clean", "-fd"], { cwd: dir });
92
- emit({ type: "log", step: "clone", message: `Checking out workspace branch ${branchName}` });
93
- const checkout = await runCmd("git", ["checkout", "-B", branchName], { cwd: dir }, (l) => emit({ type: "log", step: "clone", message: l }));
94
- if (checkout.code !== 0)
95
- throw new Error(`git checkout ${branchName} failed (code ${checkout.code})`);
15
+ const lease = await acquireWorkingTree(repo, branchName, (l) => emit({ type: "log", step: "clone", message: l }));
96
16
  emit({ type: "step_result", step: "clone", passed: true });
97
- return dir;
17
+ return lease;
98
18
  }
99
19
  //# sourceMappingURL=clone.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../../../server/forge/core/validator/clone.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clone.js","sourceRoot":"","sources":["../../../../../server/forge/core/validator/clone.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAIrD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAY,EAAE,UAAkB,EAAE,IAAiC;IACpG,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1H,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3D,OAAO,KAAK,CAAC;AACd,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/validator/cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,eAAO,MAAM,cAAc,KAAK,CAAC;AAMjC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,UAElC;AAED,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAmD9I;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAoBhJ"}
1
+ {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/validator/cmd.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE5D,eAAO,MAAM,cAAc,KAAK,CAAC;AAMjC,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,UAElC;AAED,MAAM,WAAW,UAAU;IAC1B,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACb;AAED,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAsD9I;AAED,wBAAsB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,GAAG,OAAO,CAAC,UAAU,CAAC,CAoBhJ"}
@@ -19,8 +19,11 @@ export function stripAnsi(s) {
19
19
  }
20
20
  export function runCmd(cmd, args, opts = {}, onLine) {
21
21
  return new Promise((resolve) => {
22
+ // Forge runs with NODE_ENV=production; passed on, it makes `npm ci` skip
23
+ // devDependencies and test runners load production builds.
24
+ const { NODE_ENV: _forgeNodeEnv, ...inherited } = process.env;
22
25
  const env = {
23
- ...process.env,
26
+ ...inherited,
24
27
  ...(opts.env ?? {}),
25
28
  FORCE_COLOR: "0",
26
29
  NO_COLOR: "1",
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../../../../server/forge/core/validator/cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../../../../server/forge/core/validator/cmd.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"projectType.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/validator/projectType.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,eAAe,UAAiB,CAAC;AAuD9C,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,mBAc3F"}
1
+ {"version":3,"file":"projectType.d.ts","sourceRoot":"","sources":["../../../../../server/forge/core/validator/projectType.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG/C,eAAO,MAAM,eAAe,UAAiB,CAAC;AAuD9C,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,mBAc3F"}
@@ -17,6 +17,7 @@
17
17
  import fs from "node:fs/promises";
18
18
  import path from "node:path";
19
19
  import * as configStore from "../configStore.js";
20
+ import { isDependencyDir } from "../dependencyPaths.js";
20
21
  import { exists } from "./fs.js";
21
22
  export const SUPPORTED_TYPES = ["node", "go"];
22
23
  const GO_EXTS = new Set([".go"]);
@@ -56,7 +57,7 @@ async function detectFromShallowScan(dir) {
56
57
  for (const entry of entries) {
57
58
  if (!entry.isDirectory())
58
59
  continue;
59
- if (entry.name.startsWith(".") || entry.name === "node_modules" || entry.name === "vendor")
60
+ if (entry.name.startsWith(".") || isDependencyDir(entry.name) || entry.name === "vendor")
60
61
  continue;
61
62
  const sub = path.join(dir, entry.name);
62
63
  if (!hasGo && (await exists(path.join(sub, "go.mod"))))
@@ -1 +1 @@
1
- {"version":3,"file":"projectType.js","sourceRoot":"","sources":["../../../../../server/forge/core/validator/projectType.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"projectType.js","sourceRoot":"","sources":["../../../../../server/forge/core/validator/projectType.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../../../server/forge/core/validator/runners/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAU5C,eAAO,MAAM,UAAU,UAAyF,CAAC;AACjH,eAAO,MAAM,aAAa,UAAgC,CAAC;AAuC3D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,uCAsBvG"}
1
+ {"version":3,"file":"node.d.ts","sourceRoot":"","sources":["../../../../../../server/forge/core/validator/runners/node.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAU5C,eAAO,MAAM,UAAU,UAAyF,CAAC;AACjH,eAAO,MAAM,aAAa,UAAgC,CAAC;AA4C3D,wBAAsB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,uCAsBvG"}
@@ -17,6 +17,8 @@ const SCRIPTS = ["format", "lint", "typecheck", "test"];
17
17
  // proposal bundles new test files with impl changes — see runTddPrecheckNode.
18
18
  export const STEP_ORDER = ["clone", "install", "overlay", "format", "lint", "typecheck", "tdd_precheck", "test"];
19
19
  export const FIXABLE_STEPS = ["lint", "typecheck", "test"];
20
+ // Lint, typecheck and tests come from devDependencies.
21
+ const INSTALL_MODE = "include=dev";
20
22
  async function readPackageScripts(dir) {
21
23
  try {
22
24
  const raw = await fs.readFile(path.join(dir, "package.json"), "utf8");
@@ -32,7 +34,9 @@ async function ensureInstalled(dir, emit) {
32
34
  return; // not an npm-managed project — omit the row entirely.
33
35
  const hashPath = path.join(dir, "node_modules", ".forge-lock-hash");
34
36
  const lockContent = await fs.readFile(lockPath);
35
- const lockHash = crypto.createHash("sha256").update(lockContent).digest("hex");
37
+ // INSTALL_MODE is part of the marker so installs made before devDependencies
38
+ // were included no longer count as up to date.
39
+ const lockHash = crypto.createHash("sha256").update(lockContent).update(INSTALL_MODE).digest("hex");
36
40
  if (await exists(hashPath)) {
37
41
  const stored = (await fs.readFile(hashPath, "utf8")).trim();
38
42
  if (stored === lockHash)
@@ -40,7 +44,7 @@ async function ensureInstalled(dir, emit) {
40
44
  }
41
45
  emit({ type: "progress", step: "install", status: "running" });
42
46
  emit({ type: "log", step: "install", message: "Running npm ci (first run for this lockfile may take a minute)…" });
43
- const install = await runCmd("npm", ["ci", "--prefer-offline", "--no-audit", "--no-fund"], { cwd: dir }, (l) => emit({ type: "log", step: "install", message: l }));
47
+ const install = await runCmd("npm", ["ci", "--include=dev", "--prefer-offline", "--no-audit", "--no-fund"], { cwd: dir }, (l) => emit({ type: "log", step: "install", message: l }));
44
48
  if (install.code !== 0) {
45
49
  throw new Error(`npm ci failed (code ${install.code})`);
46
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../../../server/forge/core/validator/runners/node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"node.js","sourceRoot":"","sources":["../../../../../../server/forge/core/validator/runners/node.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../../server/forge/core/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmBrD,UAAU,aAAa;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AAsDD;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;;;;;;;;;;;;;;GAqE5F"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../../server/forge/core/validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAIH,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAG1D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAmBrD,UAAU,aAAa;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,KAAK,CAAC,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;CACjB;AA0DD;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI;;;;;;;;;;;;;;GAqE5F"}
@@ -48,28 +48,34 @@ async function validateRepo(repo, changes, branchName, emit) {
48
48
  // Idempotent — the candidate-clone phase already populated the cache, so
49
49
  // this is essentially a fetch/reset that completes quickly and gives the
50
50
  // UI its `clone` step events.
51
- const dir = await ensureClone(repo, branchName, repoEmit);
52
- const projectType = await resolveProjectType(repo, dir, changes);
53
- const runner = RUNNERS[projectType] ?? RUNNERS.node;
54
- // Send the runner's step contract up front so the UI can render rows in
55
- // the runner's natural order (e.g. fmt/vet/build/test for Go) and gate
56
- // the "Fix with AI" button on the right step keys.
57
- repoEmit({
58
- type: "repo_started",
59
- projectType,
60
- stepOrder: runner.stepOrder,
61
- fixableSteps: runner.fixableSteps,
62
- });
63
- await overlayChanges(dir, changes, repoEmit);
64
- const results = await runner.run(dir, changes, repoEmit);
65
- const allPassed = Object.values(results).every((r) => r.passed);
66
- repoEmit({
67
- type: "repo_result",
68
- projectType,
69
- allPassed,
70
- checkedAt: new Date().toISOString(),
71
- });
72
- return { repo, branchName, projectType, results, allPassed };
51
+ const lease = await ensureClone(repo, branchName, repoEmit);
52
+ const { dir } = lease;
53
+ try {
54
+ const projectType = await resolveProjectType(repo, dir, changes);
55
+ const runner = RUNNERS[projectType] ?? RUNNERS.node;
56
+ // Send the runner's step contract up front so the UI can render rows in
57
+ // the runner's natural order (e.g. fmt/vet/build/test for Go) and gate
58
+ // the "Fix with AI" button on the right step keys.
59
+ repoEmit({
60
+ type: "repo_started",
61
+ projectType,
62
+ stepOrder: runner.stepOrder,
63
+ fixableSteps: runner.fixableSteps,
64
+ });
65
+ await overlayChanges(dir, changes, repoEmit);
66
+ const results = await runner.run(dir, changes, repoEmit);
67
+ const allPassed = Object.values(results).every((r) => r.passed);
68
+ repoEmit({
69
+ type: "repo_result",
70
+ projectType,
71
+ allPassed,
72
+ checkedAt: new Date().toISOString(),
73
+ });
74
+ return { repo, branchName, projectType, results, allPassed };
75
+ }
76
+ finally {
77
+ lease.release();
78
+ }
73
79
  }
74
80
  function resolveCandidates(analysis) {
75
81
  const fromAnalysis = analysis.repos ?? [];
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../server/forge/core/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../../../server/forge/core/validator.ts"],"names":[],"mappings":"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"}