@auvira.ai/sdk 0.2.9

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 (303) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +414 -0
  3. package/dist/agent/Agent.d.ts +27 -0
  4. package/dist/agent/Agent.d.ts.map +1 -0
  5. package/dist/agent/Agent.js +144 -0
  6. package/dist/agent/Agent.js.map +1 -0
  7. package/dist/agent/AgentRegistry.d.ts +13 -0
  8. package/dist/agent/AgentRegistry.d.ts.map +1 -0
  9. package/dist/agent/AgentRegistry.js +28 -0
  10. package/dist/agent/AgentRegistry.js.map +1 -0
  11. package/dist/agent/AgentRun.d.ts +38 -0
  12. package/dist/agent/AgentRun.d.ts.map +1 -0
  13. package/dist/agent/AgentRun.js +101 -0
  14. package/dist/agent/AgentRun.js.map +1 -0
  15. package/dist/agent/ConversationStore.d.ts +18 -0
  16. package/dist/agent/ConversationStore.d.ts.map +1 -0
  17. package/dist/agent/ConversationStore.js +38 -0
  18. package/dist/agent/ConversationStore.js.map +1 -0
  19. package/dist/agent/RunEventBus.d.ts +43 -0
  20. package/dist/agent/RunEventBus.d.ts.map +1 -0
  21. package/dist/agent/RunEventBus.js +289 -0
  22. package/dist/agent/RunEventBus.js.map +1 -0
  23. package/dist/agent/assistantEvent.d.ts +11 -0
  24. package/dist/agent/assistantEvent.d.ts.map +1 -0
  25. package/dist/agent/assistantEvent.js +20 -0
  26. package/dist/agent/assistantEvent.js.map +1 -0
  27. package/dist/agent/buildAgentPrompt.d.ts +10 -0
  28. package/dist/agent/buildAgentPrompt.d.ts.map +1 -0
  29. package/dist/agent/buildAgentPrompt.js +39 -0
  30. package/dist/agent/buildAgentPrompt.js.map +1 -0
  31. package/dist/agent/cancellation.d.ts +9 -0
  32. package/dist/agent/cancellation.d.ts.map +1 -0
  33. package/dist/agent/cancellation.js +18 -0
  34. package/dist/agent/cancellation.js.map +1 -0
  35. package/dist/agent/editCompletion.d.ts +35 -0
  36. package/dist/agent/editCompletion.d.ts.map +1 -0
  37. package/dist/agent/editCompletion.js +179 -0
  38. package/dist/agent/editCompletion.js.map +1 -0
  39. package/dist/agent/editEvents.d.ts +11 -0
  40. package/dist/agent/editEvents.d.ts.map +1 -0
  41. package/dist/agent/editEvents.js +36 -0
  42. package/dist/agent/editEvents.js.map +1 -0
  43. package/dist/agent/evaluateTaskCompletion.d.ts +49 -0
  44. package/dist/agent/evaluateTaskCompletion.d.ts.map +1 -0
  45. package/dist/agent/evaluateTaskCompletion.js +257 -0
  46. package/dist/agent/evaluateTaskCompletion.js.map +1 -0
  47. package/dist/agent/events.d.ts +182 -0
  48. package/dist/agent/events.d.ts.map +1 -0
  49. package/dist/agent/events.js +25 -0
  50. package/dist/agent/events.js.map +1 -0
  51. package/dist/agent/parseSendPayload.d.ts +24 -0
  52. package/dist/agent/parseSendPayload.d.ts.map +1 -0
  53. package/dist/agent/parseSendPayload.js +71 -0
  54. package/dist/agent/parseSendPayload.js.map +1 -0
  55. package/dist/agent/patchUtils.d.ts +17 -0
  56. package/dist/agent/patchUtils.d.ts.map +1 -0
  57. package/dist/agent/patchUtils.js +90 -0
  58. package/dist/agent/patchUtils.js.map +1 -0
  59. package/dist/agent/resolveModelConfig.d.ts +4 -0
  60. package/dist/agent/resolveModelConfig.d.ts.map +1 -0
  61. package/dist/agent/resolveModelConfig.js +27 -0
  62. package/dist/agent/resolveModelConfig.js.map +1 -0
  63. package/dist/agent/runAgentTask.d.ts +14 -0
  64. package/dist/agent/runAgentTask.d.ts.map +1 -0
  65. package/dist/agent/runAgentTask.js +376 -0
  66. package/dist/agent/runAgentTask.js.map +1 -0
  67. package/dist/agent/runResult.d.ts +10 -0
  68. package/dist/agent/runResult.d.ts.map +1 -0
  69. package/dist/agent/runResult.js +34 -0
  70. package/dist/agent/runResult.js.map +1 -0
  71. package/dist/agent/runValidationWithRepair.d.ts +32 -0
  72. package/dist/agent/runValidationWithRepair.d.ts.map +1 -0
  73. package/dist/agent/runValidationWithRepair.js +114 -0
  74. package/dist/agent/runValidationWithRepair.js.map +1 -0
  75. package/dist/agent/tools/edit.d.ts +4 -0
  76. package/dist/agent/tools/edit.d.ts.map +1 -0
  77. package/dist/agent/tools/edit.js +98 -0
  78. package/dist/agent/tools/edit.js.map +1 -0
  79. package/dist/agent/tools/executeTool.d.ts +8 -0
  80. package/dist/agent/tools/executeTool.d.ts.map +1 -0
  81. package/dist/agent/tools/executeTool.js +104 -0
  82. package/dist/agent/tools/executeTool.js.map +1 -0
  83. package/dist/agent/tools/glob.d.ts +6 -0
  84. package/dist/agent/tools/glob.d.ts.map +1 -0
  85. package/dist/agent/tools/glob.js +77 -0
  86. package/dist/agent/tools/glob.js.map +1 -0
  87. package/dist/agent/tools/grep.d.ts +4 -0
  88. package/dist/agent/tools/grep.d.ts.map +1 -0
  89. package/dist/agent/tools/grep.js +61 -0
  90. package/dist/agent/tools/grep.js.map +1 -0
  91. package/dist/agent/tools/pathGuard.d.ts +11 -0
  92. package/dist/agent/tools/pathGuard.d.ts.map +1 -0
  93. package/dist/agent/tools/pathGuard.js +55 -0
  94. package/dist/agent/tools/pathGuard.js.map +1 -0
  95. package/dist/agent/tools/read.d.ts +4 -0
  96. package/dist/agent/tools/read.d.ts.map +1 -0
  97. package/dist/agent/tools/read.js +41 -0
  98. package/dist/agent/tools/read.js.map +1 -0
  99. package/dist/agent/tools/types.d.ts +46 -0
  100. package/dist/agent/tools/types.d.ts.map +1 -0
  101. package/dist/agent/tools/types.js +2 -0
  102. package/dist/agent/tools/types.js.map +1 -0
  103. package/dist/agent/tools/write.d.ts +4 -0
  104. package/dist/agent/tools/write.d.ts.map +1 -0
  105. package/dist/agent/tools/write.js +63 -0
  106. package/dist/agent/tools/write.js.map +1 -0
  107. package/dist/agent/types.d.ts +193 -0
  108. package/dist/agent/types.d.ts.map +1 -0
  109. package/dist/agent/types.js +18 -0
  110. package/dist/agent/types.js.map +1 -0
  111. package/dist/agent/validateOptions.d.ts +12 -0
  112. package/dist/agent/validateOptions.d.ts.map +1 -0
  113. package/dist/agent/validateOptions.js +91 -0
  114. package/dist/agent/validateOptions.js.map +1 -0
  115. package/dist/git/cloneGitLabProject.d.ts +10 -0
  116. package/dist/git/cloneGitLabProject.d.ts.map +1 -0
  117. package/dist/git/cloneGitLabProject.js +24 -0
  118. package/dist/git/cloneGitLabProject.js.map +1 -0
  119. package/dist/git/createAgentBranch.d.ts +3 -0
  120. package/dist/git/createAgentBranch.d.ts.map +1 -0
  121. package/dist/git/createAgentBranch.js +14 -0
  122. package/dist/git/createAgentBranch.js.map +1 -0
  123. package/dist/git/gitDiff.d.ts +9 -0
  124. package/dist/git/gitDiff.d.ts.map +1 -0
  125. package/dist/git/gitDiff.js +34 -0
  126. package/dist/git/gitDiff.js.map +1 -0
  127. package/dist/git/maskSecrets.d.ts +3 -0
  128. package/dist/git/maskSecrets.d.ts.map +1 -0
  129. package/dist/git/maskSecrets.js +15 -0
  130. package/dist/git/maskSecrets.js.map +1 -0
  131. package/dist/git/resolveGitLabProject.d.ts +26 -0
  132. package/dist/git/resolveGitLabProject.d.ts.map +1 -0
  133. package/dist/git/resolveGitLabProject.js +68 -0
  134. package/dist/git/resolveGitLabProject.js.map +1 -0
  135. package/dist/git/sanitizeGitLabUrl.d.ts +8 -0
  136. package/dist/git/sanitizeGitLabUrl.d.ts.map +1 -0
  137. package/dist/git/sanitizeGitLabUrl.js +38 -0
  138. package/dist/git/sanitizeGitLabUrl.js.map +1 -0
  139. package/dist/index.d.ts +13 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +7 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/providers/agentic/AgenticCustomProvider.d.ts +9 -0
  144. package/dist/providers/agentic/AgenticCustomProvider.d.ts.map +1 -0
  145. package/dist/providers/agentic/AgenticCustomProvider.js +366 -0
  146. package/dist/providers/agentic/AgenticCustomProvider.js.map +1 -0
  147. package/dist/providers/agentic/agentLoop.d.ts +79 -0
  148. package/dist/providers/agentic/agentLoop.d.ts.map +1 -0
  149. package/dist/providers/agentic/agentLoop.js +646 -0
  150. package/dist/providers/agentic/agentLoop.js.map +1 -0
  151. package/dist/providers/agentic/priomptContext.d.ts +29 -0
  152. package/dist/providers/agentic/priomptContext.d.ts.map +1 -0
  153. package/dist/providers/agentic/priomptContext.js +90 -0
  154. package/dist/providers/agentic/priomptContext.js.map +1 -0
  155. package/dist/providers/agentic/seedRetrieval.d.ts +12 -0
  156. package/dist/providers/agentic/seedRetrieval.d.ts.map +1 -0
  157. package/dist/providers/agentic/seedRetrieval.js +58 -0
  158. package/dist/providers/agentic/seedRetrieval.js.map +1 -0
  159. package/dist/providers/agentic/toolPolicy.d.ts +15 -0
  160. package/dist/providers/agentic/toolPolicy.d.ts.map +1 -0
  161. package/dist/providers/agentic/toolPolicy.js +53 -0
  162. package/dist/providers/agentic/toolPolicy.js.map +1 -0
  163. package/dist/providers/agentic/toolSchemas.d.ts +177 -0
  164. package/dist/providers/agentic/toolSchemas.d.ts.map +1 -0
  165. package/dist/providers/agentic/toolSchemas.js +104 -0
  166. package/dist/providers/agentic/toolSchemas.js.map +1 -0
  167. package/dist/providers/agentic/trimAgentHistory.d.ts +18 -0
  168. package/dist/providers/agentic/trimAgentHistory.d.ts.map +1 -0
  169. package/dist/providers/agentic/trimAgentHistory.js +68 -0
  170. package/dist/providers/agentic/trimAgentHistory.js.map +1 -0
  171. package/dist/providers/custom/CustomModelProvider.d.ts +4 -0
  172. package/dist/providers/custom/CustomModelProvider.d.ts.map +1 -0
  173. package/dist/providers/custom/CustomModelProvider.js +538 -0
  174. package/dist/providers/custom/CustomModelProvider.js.map +1 -0
  175. package/dist/providers/custom/discoverTargetFiles.d.ts +16 -0
  176. package/dist/providers/custom/discoverTargetFiles.d.ts.map +1 -0
  177. package/dist/providers/custom/discoverTargetFiles.js +231 -0
  178. package/dist/providers/custom/discoverTargetFiles.js.map +1 -0
  179. package/dist/providers/custom/harnessPinTypes.d.ts +15 -0
  180. package/dist/providers/custom/harnessPinTypes.d.ts.map +1 -0
  181. package/dist/providers/custom/harnessPinTypes.js +46 -0
  182. package/dist/providers/custom/harnessPinTypes.js.map +1 -0
  183. package/dist/providers/custom/harnessPrompt.d.ts +29 -0
  184. package/dist/providers/custom/harnessPrompt.d.ts.map +1 -0
  185. package/dist/providers/custom/harnessPrompt.js +356 -0
  186. package/dist/providers/custom/harnessPrompt.js.map +1 -0
  187. package/dist/providers/custom/harnessSectionContext.d.ts +7 -0
  188. package/dist/providers/custom/harnessSectionContext.d.ts.map +1 -0
  189. package/dist/providers/custom/harnessSectionContext.js +82 -0
  190. package/dist/providers/custom/harnessSectionContext.js.map +1 -0
  191. package/dist/providers/custom/modelRequestDefaults.d.ts +16 -0
  192. package/dist/providers/custom/modelRequestDefaults.d.ts.map +1 -0
  193. package/dist/providers/custom/modelRequestDefaults.js +71 -0
  194. package/dist/providers/custom/modelRequestDefaults.js.map +1 -0
  195. package/dist/providers/custom/parseModelEditPlan.d.ts +21 -0
  196. package/dist/providers/custom/parseModelEditPlan.d.ts.map +1 -0
  197. package/dist/providers/custom/parseModelEditPlan.js +164 -0
  198. package/dist/providers/custom/parseModelEditPlan.js.map +1 -0
  199. package/dist/providers/custom/selectPromptFiles.d.ts +18 -0
  200. package/dist/providers/custom/selectPromptFiles.d.ts.map +1 -0
  201. package/dist/providers/custom/selectPromptFiles.js +180 -0
  202. package/dist/providers/custom/selectPromptFiles.js.map +1 -0
  203. package/dist/providers/custom/visionImages.d.ts +4 -0
  204. package/dist/providers/custom/visionImages.d.ts.map +1 -0
  205. package/dist/providers/custom/visionImages.js +10 -0
  206. package/dist/providers/custom/visionImages.js.map +1 -0
  207. package/dist/providers/openhands/OpenHandsMockProvider.d.ts +6 -0
  208. package/dist/providers/openhands/OpenHandsMockProvider.d.ts.map +1 -0
  209. package/dist/providers/openhands/OpenHandsMockProvider.js +73 -0
  210. package/dist/providers/openhands/OpenHandsMockProvider.js.map +1 -0
  211. package/dist/providers/openhands/OpenHandsProvider.d.ts +4 -0
  212. package/dist/providers/openhands/OpenHandsProvider.d.ts.map +1 -0
  213. package/dist/providers/openhands/OpenHandsProvider.js +163 -0
  214. package/dist/providers/openhands/OpenHandsProvider.js.map +1 -0
  215. package/dist/providers/openhands/openHandsEvents.d.ts +6 -0
  216. package/dist/providers/openhands/openHandsEvents.d.ts.map +1 -0
  217. package/dist/providers/openhands/openHandsEvents.js +54 -0
  218. package/dist/providers/openhands/openHandsEvents.js.map +1 -0
  219. package/dist/providers/openhands/types.d.ts +16 -0
  220. package/dist/providers/openhands/types.d.ts.map +1 -0
  221. package/dist/providers/openhands/types.js +2 -0
  222. package/dist/providers/openhands/types.js.map +1 -0
  223. package/dist/providers/runProvider.d.ts +4 -0
  224. package/dist/providers/runProvider.d.ts.map +1 -0
  225. package/dist/providers/runProvider.js +16 -0
  226. package/dist/providers/runProvider.js.map +1 -0
  227. package/dist/providers/types.d.ts +35 -0
  228. package/dist/providers/types.d.ts.map +1 -0
  229. package/dist/providers/types.js +5 -0
  230. package/dist/providers/types.js.map +1 -0
  231. package/dist/server/routes.d.ts +9 -0
  232. package/dist/server/routes.d.ts.map +1 -0
  233. package/dist/server/routes.js +58 -0
  234. package/dist/server/routes.js.map +1 -0
  235. package/dist/server/server.d.ts +10 -0
  236. package/dist/server/server.d.ts.map +1 -0
  237. package/dist/server/server.js +39 -0
  238. package/dist/server/server.js.map +1 -0
  239. package/dist/tools/fileExists.d.ts +3 -0
  240. package/dist/tools/fileExists.d.ts.map +1 -0
  241. package/dist/tools/fileExists.js +12 -0
  242. package/dist/tools/fileExists.js.map +1 -0
  243. package/dist/tools/resolveBuildValidation.d.ts +8 -0
  244. package/dist/tools/resolveBuildValidation.d.ts.map +1 -0
  245. package/dist/tools/resolveBuildValidation.js +35 -0
  246. package/dist/tools/resolveBuildValidation.js.map +1 -0
  247. package/dist/tools/runCommand.d.ts +17 -0
  248. package/dist/tools/runCommand.d.ts.map +1 -0
  249. package/dist/tools/runCommand.js +92 -0
  250. package/dist/tools/runCommand.js.map +1 -0
  251. package/dist/tools/safeValidateCommand.d.ts +9 -0
  252. package/dist/tools/safeValidateCommand.d.ts.map +1 -0
  253. package/dist/tools/safeValidateCommand.js +59 -0
  254. package/dist/tools/safeValidateCommand.js.map +1 -0
  255. package/dist/util/apiThrottle.d.ts +14 -0
  256. package/dist/util/apiThrottle.d.ts.map +1 -0
  257. package/dist/util/apiThrottle.js +50 -0
  258. package/dist/util/apiThrottle.js.map +1 -0
  259. package/dist/util/globMatch.d.ts +7 -0
  260. package/dist/util/globMatch.d.ts.map +1 -0
  261. package/dist/util/globMatch.js +25 -0
  262. package/dist/util/globMatch.js.map +1 -0
  263. package/dist/util/modelApiClient.d.ts +47 -0
  264. package/dist/util/modelApiClient.d.ts.map +1 -0
  265. package/dist/util/modelApiClient.js +245 -0
  266. package/dist/util/modelApiClient.js.map +1 -0
  267. package/dist/util/screenshotBase64.d.ts +3 -0
  268. package/dist/util/screenshotBase64.d.ts.map +1 -0
  269. package/dist/util/screenshotBase64.js +7 -0
  270. package/dist/util/screenshotBase64.js.map +1 -0
  271. package/dist/workspace/cleanupWorkspace.d.ts +3 -0
  272. package/dist/workspace/cleanupWorkspace.d.ts.map +1 -0
  273. package/dist/workspace/cleanupWorkspace.js +6 -0
  274. package/dist/workspace/cleanupWorkspace.js.map +1 -0
  275. package/dist/workspace/copyLocalRepo.d.ts +5 -0
  276. package/dist/workspace/copyLocalRepo.d.ts.map +1 -0
  277. package/dist/workspace/copyLocalRepo.js +34 -0
  278. package/dist/workspace/copyLocalRepo.js.map +1 -0
  279. package/dist/workspace/createWorkspace.d.ts +7 -0
  280. package/dist/workspace/createWorkspace.d.ts.map +1 -0
  281. package/dist/workspace/createWorkspace.js +10 -0
  282. package/dist/workspace/createWorkspace.js.map +1 -0
  283. package/dist/workspace/prepareWorkspace.d.ts +4 -0
  284. package/dist/workspace/prepareWorkspace.d.ts.map +1 -0
  285. package/dist/workspace/prepareWorkspace.js +46 -0
  286. package/dist/workspace/prepareWorkspace.js.map +1 -0
  287. package/dist/workspace/resolveWorkspaceMode.d.ts +7 -0
  288. package/dist/workspace/resolveWorkspaceMode.d.ts.map +1 -0
  289. package/dist/workspace/resolveWorkspaceMode.js +15 -0
  290. package/dist/workspace/resolveWorkspaceMode.js.map +1 -0
  291. package/dist/workspace/syncRepoToOwner.d.ts +3 -0
  292. package/dist/workspace/syncRepoToOwner.d.ts.map +1 -0
  293. package/dist/workspace/syncRepoToOwner.js +14 -0
  294. package/dist/workspace/syncRepoToOwner.js.map +1 -0
  295. package/dist/workspace/workspaceCheckpoint.d.ts +20 -0
  296. package/dist/workspace/workspaceCheckpoint.d.ts.map +1 -0
  297. package/dist/workspace/workspaceCheckpoint.js +243 -0
  298. package/dist/workspace/workspaceCheckpoint.js.map +1 -0
  299. package/dist/workspace/writeScreenshot.d.ts +15 -0
  300. package/dist/workspace/writeScreenshot.d.ts.map +1 -0
  301. package/dist/workspace/writeScreenshot.js +56 -0
  302. package/dist/workspace/writeScreenshot.js.map +1 -0
  303. package/package.json +53 -0
@@ -0,0 +1,41 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { fileExists } from "../../tools/fileExists.js";
3
+ import { resolveRepoPath, toRepoRelativePath } from "./pathGuard.js";
4
+ const MAX_READ_CHARS = 48_000;
5
+ /** Reads a file from the workspace with optional line range. */
6
+ export async function executeReadTool(ctx, input) {
7
+ if (!input.path?.trim()) {
8
+ return { ok: false, output: "read requires path" };
9
+ }
10
+ const absolutePath = resolveRepoPath(ctx.repoPath, input.path);
11
+ if (!(await fileExists(absolutePath))) {
12
+ return { ok: false, output: `File not found: ${input.path}` };
13
+ }
14
+ const content = await fs.readFile(absolutePath, "utf8");
15
+ const lines = content.split("\n");
16
+ const offset = Math.max(1, input.offset ?? 1);
17
+ const limit = input.limit ?? lines.length;
18
+ const slice = lines.slice(offset - 1, offset - 1 + limit);
19
+ const numbered = slice
20
+ .map((line, index) => `${offset + index}|${line}`)
21
+ .join("\n");
22
+ const relPath = toRepoRelativePath(ctx.repoPath, absolutePath);
23
+ const output = numbered.length > MAX_READ_CHARS
24
+ ? `${numbered.slice(0, MAX_READ_CHARS)}\n... (truncated)`
25
+ : numbered;
26
+ const previewLines = slice.slice(0, 8);
27
+ const preview = previewLines
28
+ .map((line, index) => `${offset + index}|${line}`)
29
+ .join("\n");
30
+ return {
31
+ ok: true,
32
+ output: `--- ${relPath} ---\n${output}`,
33
+ path: relPath,
34
+ meta: {
35
+ path: relPath,
36
+ lineCount: slice.length,
37
+ preview,
38
+ },
39
+ };
40
+ }
41
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/agent/tools/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AAGrE,MAAM,cAAc,GAAG,MAAM,CAAC;AAE9B,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,GAAyB,EACzB,KAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACxB,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;IACrD,CAAC;IAED,MAAM,YAAY,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/D,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;QACtC,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;IAChE,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACxD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC;IAC9C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAE1D,MAAM,QAAQ,GAAG,KAAK;SACnB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;SACjD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC/D,MAAM,MAAM,GACV,QAAQ,CAAC,MAAM,GAAG,cAAc;QAC9B,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,mBAAmB;QACzD,CAAC,CAAC,QAAQ,CAAC;IAEf,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,OAAO,GAAG,YAAY;SACzB,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,GAAG,MAAM,GAAG,KAAK,IAAI,IAAI,EAAE,CAAC;SACjD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,EAAE,EAAE,IAAI;QACR,MAAM,EAAE,OAAO,OAAO,SAAS,MAAM,EAAE;QACvC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,SAAS,EAAE,KAAK,CAAC,MAAM;YACvB,OAAO;SACR;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,46 @@
1
+ export interface ToolExecutionResult {
2
+ ok: boolean;
3
+ output: string;
4
+ /** True when a mutating tool changed file content. */
5
+ applied?: boolean;
6
+ path?: string;
7
+ error?: string;
8
+ meta?: Record<string, unknown>;
9
+ patch?: {
10
+ path: string;
11
+ before: string;
12
+ after: string;
13
+ };
14
+ }
15
+ export interface ToolExecutionContext {
16
+ repoPath: string;
17
+ allowedWritePaths?: string[];
18
+ enforceAllowlist?: boolean;
19
+ }
20
+ export interface GrepToolInput {
21
+ pattern: string;
22
+ path?: string;
23
+ glob?: string;
24
+ }
25
+ export interface ReadToolInput {
26
+ path: string;
27
+ offset?: number;
28
+ limit?: number;
29
+ }
30
+ export interface GlobToolInput {
31
+ globPattern: string;
32
+ targetDirectory?: string;
33
+ }
34
+ export interface SearchReplaceToolInput {
35
+ path: string;
36
+ old_string: string;
37
+ new_string: string;
38
+ }
39
+ export interface WriteToolInput {
40
+ path: string;
41
+ contents: string;
42
+ }
43
+ export interface ListDirToolInput {
44
+ path?: string;
45
+ }
46
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,sDAAsD;IACtD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/agent/tools/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import type { ToolExecutionContext, ToolExecutionResult, WriteToolInput } from "./types.js";
2
+ /** Writes full file contents (Cursor write tool / full-file fallback). */
3
+ export declare function executeWriteTool(ctx: ToolExecutionContext, input: WriteToolInput): Promise<ToolExecutionResult>;
4
+ //# sourceMappingURL=write.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/agent/tools/write.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAE5F,0EAA0E;AAC1E,wBAAsB,gBAAgB,CACpC,GAAG,EAAE,oBAAoB,EACzB,KAAK,EAAE,cAAc,GACpB,OAAO,CAAC,mBAAmB,CAAC,CA8D9B"}
@@ -0,0 +1,63 @@
1
+ import { promises as fs } from "node:fs";
2
+ import { dirname } from "node:path";
3
+ import { fileExists } from "../../tools/fileExists.js";
4
+ import { countLineStats, previewText } from "../../agent/patchUtils.js";
5
+ import { isPathAllowlisted, resolveRepoPath, toRepoRelativePath } from "./pathGuard.js";
6
+ /** Writes full file contents (Cursor write tool / full-file fallback). */
7
+ export async function executeWriteTool(ctx, input) {
8
+ if (!input.path?.trim()) {
9
+ return { ok: false, output: "write requires path" };
10
+ }
11
+ if (input.contents === undefined) {
12
+ return { ok: false, output: "write requires contents" };
13
+ }
14
+ const absolutePath = resolveRepoPath(ctx.repoPath, input.path);
15
+ const relPath = toRepoRelativePath(ctx.repoPath, absolutePath);
16
+ if (ctx.enforceAllowlist && ctx.allowedWritePaths?.length) {
17
+ if (!isPathAllowlisted(relPath, ctx.allowedWritePaths)) {
18
+ const error = `Write blocked: ${relPath} is not under ALLOWED_WRITE_PATHS`;
19
+ return {
20
+ ok: false,
21
+ output: error,
22
+ path: relPath,
23
+ applied: false,
24
+ error,
25
+ meta: { path: relPath, applied: false },
26
+ };
27
+ }
28
+ }
29
+ const existed = await fileExists(absolutePath);
30
+ const original = existed ? await fs.readFile(absolutePath, "utf8") : "";
31
+ if (existed && original === input.contents) {
32
+ return {
33
+ ok: true,
34
+ output: `No change: ${relPath} already matches contents`,
35
+ path: relPath,
36
+ applied: false,
37
+ meta: { path: relPath, applied: false },
38
+ };
39
+ }
40
+ if (!existed) {
41
+ await fs.mkdir(dirname(absolutePath), { recursive: true });
42
+ }
43
+ await fs.writeFile(absolutePath, input.contents, "utf8");
44
+ const stats = countLineStats(original, input.contents);
45
+ const bytesWritten = Buffer.byteLength(input.contents, "utf8");
46
+ return {
47
+ ok: true,
48
+ output: existed ? `Wrote ${relPath}` : `Created ${relPath}`,
49
+ path: relPath,
50
+ applied: true,
51
+ patch: { path: relPath, before: original, after: input.contents },
52
+ meta: {
53
+ path: relPath,
54
+ bytesWritten,
55
+ applied: true,
56
+ oldPreview: previewText(original),
57
+ newPreview: previewText(input.contents),
58
+ linesAdded: stats.linesAdded,
59
+ linesRemoved: stats.linesRemoved,
60
+ },
61
+ };
62
+ }
63
+ //# sourceMappingURL=write.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write.js","sourceRoot":"","sources":["../../../src/agent/tools/write.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ export interface AgentModelConfig {
2
+ id: string;
3
+ provider?: "openhands" | "custom";
4
+ baseURL?: string;
5
+ apiKey?: string;
6
+ }
7
+ export type AgentWorkspaceMode = "in_place" | "git_copy";
8
+ export interface AgentLocalConfig {
9
+ cwd: string;
10
+ /**
11
+ * `in_place` (default): edit `cwd` directly — Cursor website harness parity.
12
+ * `git_copy`: isolated scratch copy (legacy tests / sandbox experiments).
13
+ */
14
+ workspaceMode?: AgentWorkspaceMode;
15
+ }
16
+ export interface AgentGitLabConfig {
17
+ projectUrl?: string;
18
+ /** GitLab numeric project ID resolved via GITLAB_BASE_URL API. */
19
+ projectId?: string | number;
20
+ token?: string;
21
+ branch?: string;
22
+ }
23
+ export interface SelectedDomContext {
24
+ tagName?: string;
25
+ text?: string;
26
+ className?: string;
27
+ id?: string;
28
+ testId?: string;
29
+ href?: string;
30
+ boundingBox?: {
31
+ x: number;
32
+ y: number;
33
+ width: number;
34
+ height: number;
35
+ };
36
+ componentHint?: string;
37
+ route?: string;
38
+ /** Pinned section index from preview UI. */
39
+ sectionIndex?: number;
40
+ sectionType?: string;
41
+ sectionTitle?: string;
42
+ kind?: "hero" | "section";
43
+ }
44
+ export interface AgentValidationOptions {
45
+ command?: string;
46
+ timeoutMs?: number;
47
+ /** When true, skips post-edit validation (useful for repos with known build issues). */
48
+ skip?: boolean;
49
+ }
50
+ /** Context passed to harness completion callbacks after each diff check. */
51
+ export interface CompletionContractContext {
52
+ changedFiles: string[];
53
+ toolCallCount: number;
54
+ modelTurnCount: number;
55
+ hasVisionImages: boolean;
56
+ hasSelectedDom: boolean;
57
+ deferredFinishCount: number;
58
+ }
59
+ /** Optional harness completion contract for multi-step vibe/style edits. */
60
+ export interface AgentCompletionOptions {
61
+ /** Harness marks multi-step edits that need more than one file class. */
62
+ mode?: "default" | "multi_file_required";
63
+ /** When true, block early finish until a wiring/config path changes after style assets. */
64
+ requireWiringAfterStyle?: boolean;
65
+ /** In-process callback — not serializable over HTTP. */
66
+ isComplete?: (ctx: CompletionContractContext) => boolean | "continue" | "complete";
67
+ multiStep?: {
68
+ minToolCalls?: number;
69
+ minModelTurns?: number;
70
+ maxExtraTurnsAfterStyleOnly?: number;
71
+ };
72
+ /** Optional regex pattern overrides for style-asset paths. */
73
+ styleAssetPatterns?: string[];
74
+ /** Optional regex pattern overrides for wiring paths. */
75
+ wiringPatterns?: string[];
76
+ /** When false, skips LLM post-checkpoint completion evaluation. Default true in harness mode. */
77
+ auto?: boolean;
78
+ /** Optional per-run confidence threshold override for completion evaluation. */
79
+ confidenceThreshold?: number;
80
+ }
81
+ export interface AgentCreateOptions {
82
+ apiKey?: string;
83
+ model: AgentModelConfig;
84
+ local?: AgentLocalConfig;
85
+ gitlab?: AgentGitLabConfig;
86
+ timeoutMs?: number;
87
+ /**
88
+ * @deprecated Use `local.workspaceMode: 'git_copy'` instead.
89
+ * `true` forces git_copy; omitted defaults to in_place for local cwd.
90
+ */
91
+ cleanupWorkspace?: boolean;
92
+ }
93
+ export interface AgentImageInput {
94
+ data: string;
95
+ mimeType: string;
96
+ }
97
+ export type AgentSendPayload = string | {
98
+ text: string;
99
+ images?: AgentImageInput[];
100
+ };
101
+ export interface AgentSendOptions {
102
+ screenshotBase64?: string;
103
+ screenshotPath?: string;
104
+ selectedDom?: SelectedDomContext;
105
+ validation?: AgentValidationOptions;
106
+ /** Harness completion hints for multi-step vibe/style edits. */
107
+ completion?: AgentCompletionOptions;
108
+ timeoutMs?: number;
109
+ /** External abort signal (merged with run.cancel()). */
110
+ signal?: AbortSignal;
111
+ /** Reuse the last prepared workspace for multi-turn follow-ups. */
112
+ reuseWorkspace?: boolean;
113
+ }
114
+ export type AgentPromptOptions = AgentCreateOptions & AgentSendOptions;
115
+ export type AgentRunStatus = "finished" | "error" | "cancelled";
116
+ export interface ConversationTurn {
117
+ role: "user" | "assistant";
118
+ content: string;
119
+ runId?: string;
120
+ }
121
+ export interface AgentRunResult {
122
+ ok: boolean;
123
+ /** Cursor-compatible terminal status. */
124
+ status: AgentRunStatus;
125
+ /** Run id (matches AgentRun.id / stream runId). */
126
+ id: string;
127
+ /** Stable session id for `Agent.resume` across turns. */
128
+ agentId?: string;
129
+ response: string;
130
+ summary: string;
131
+ changedFiles: string[];
132
+ diff: string;
133
+ validation?: {
134
+ command: string;
135
+ ok: boolean;
136
+ stdout: string;
137
+ stderr: string;
138
+ exitCode: number | null;
139
+ };
140
+ workspace?: {
141
+ id: string;
142
+ path: string;
143
+ repoPath: string;
144
+ branchName: string;
145
+ };
146
+ usage?: {
147
+ model: string;
148
+ provider: string;
149
+ inputTokens?: number;
150
+ outputTokens?: number;
151
+ totalTokens?: number;
152
+ };
153
+ error?: {
154
+ message: string;
155
+ code: string;
156
+ rateLimit?: {
157
+ httpStatus?: number;
158
+ providerStatusCode?: number;
159
+ retryAfterMs?: number;
160
+ headers?: Record<string, string>;
161
+ };
162
+ timing?: {
163
+ queueWaitMs: number;
164
+ requestMs: number;
165
+ totalMs: number;
166
+ retries: number;
167
+ };
168
+ /** Number of model completion attempts (including repairs). */
169
+ attempts?: number;
170
+ /** Last parse/apply failure before giving up. */
171
+ lastFailure?: string;
172
+ /** Truncated raw model output from the final attempt. */
173
+ lastOutputSnippet?: string;
174
+ /** Whether the failure is safe to retry (Cursor SDK parity). */
175
+ isRetryable?: boolean;
176
+ };
177
+ }
178
+ export interface PreparedWorkspace {
179
+ id: string;
180
+ path: string;
181
+ repoPath: string;
182
+ branchName: string;
183
+ }
184
+ export declare class AgentConfigError extends Error {
185
+ readonly code: string;
186
+ readonly isRetryable: boolean;
187
+ constructor(message: string, code?: string, isRetryable?: boolean);
188
+ }
189
+ /** Cursor SDK alias for startup/config failures. */
190
+ export declare class CursorAgentError extends AgentConfigError {
191
+ constructor(message: string, code?: string, isRetryable?: boolean);
192
+ }
193
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export class AgentConfigError extends Error {
2
+ code;
3
+ isRetryable;
4
+ constructor(message, code = "INVALID_CONFIG", isRetryable = false) {
5
+ super(message);
6
+ this.code = code;
7
+ this.isRetryable = isRetryable;
8
+ this.name = "AgentConfigError";
9
+ }
10
+ }
11
+ /** Cursor SDK alias for startup/config failures. */
12
+ export class CursorAgentError extends AgentConfigError {
13
+ constructor(message, code = "INVALID_CONFIG", isRetryable = false) {
14
+ super(message, code, isRetryable);
15
+ this.name = "CursorAgentError";
16
+ }
17
+ }
18
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/agent/types.ts"],"names":[],"mappings":"AAuMA,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAGvB;IACA;IAHlB,YACE,OAAe,EACC,OAAe,gBAAgB,EAC/B,cAAuB,KAAK;QAE5C,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAA2B;QAC/B,gBAAW,GAAX,WAAW,CAAiB;QAG5C,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED,oDAAoD;AACpD,MAAM,OAAO,gBAAiB,SAAQ,gBAAgB;IACpD,YACE,OAAe,EACf,OAAe,gBAAgB,EAC/B,cAAuB,KAAK;QAE5B,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAClC,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import { AgentCreateOptions, AgentSendOptions } from "./types.js";
2
+ /** Validates agent creation options; throws AgentConfigError on failure. */
3
+ export declare function validateCreateOptions(options: AgentCreateOptions): void;
4
+ /** Async validation that resolves GitLab project URL from projectId when needed. */
5
+ export declare function resolveCreateOptions(options: AgentCreateOptions): Promise<AgentCreateOptions>;
6
+ /** Validates send options; throws AgentConfigError on failure. */
7
+ export declare function validateSendOptions(options?: AgentSendOptions): void;
8
+ export declare function splitPromptOptions(options: AgentCreateOptions & AgentSendOptions): {
9
+ createOptions: AgentCreateOptions;
10
+ sendOptions: AgentSendOptions;
11
+ };
12
+ //# sourceMappingURL=validateOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOptions.d.ts","sourceRoot":"","sources":["../../src/agent/validateOptions.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,kBAAkB,EAClB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAEpB,4EAA4E;AAC5E,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CA2DvE;AAED,oFAAoF;AACpF,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAwB7B;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAWpE;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,kBAAkB,GAAG,gBAAgB,GAAG;IAClF,aAAa,EAAE,kBAAkB,CAAC;IAClC,WAAW,EAAE,gBAAgB,CAAC;CAC/B,CAwBA"}
@@ -0,0 +1,91 @@
1
+ import { resolveGitLabProject } from "../git/resolveGitLabProject.js";
2
+ import { GitLabUrlError, sanitizeGitLabUrl } from "../git/sanitizeGitLabUrl.js";
3
+ import { resolveModelConfig } from "./resolveModelConfig.js";
4
+ import { AgentConfigError, } from "./types.js";
5
+ /** Validates agent creation options; throws AgentConfigError on failure. */
6
+ export function validateCreateOptions(options) {
7
+ if (!options.model?.id?.trim()) {
8
+ throw new AgentConfigError("model.id is required", "INVALID_CONFIG");
9
+ }
10
+ const hasLocal = Boolean(options.local);
11
+ const hasGitlab = Boolean(options.gitlab);
12
+ if (hasLocal && hasGitlab) {
13
+ throw new AgentConfigError("Provide exactly one of local or gitlab, not both", "INVALID_CONFIG");
14
+ }
15
+ if (!hasLocal && !hasGitlab) {
16
+ throw new AgentConfigError("Provide exactly one of local or gitlab", "INVALID_CONFIG");
17
+ }
18
+ if (options.local && !options.local.cwd?.trim()) {
19
+ throw new AgentConfigError("local.cwd is required", "INVALID_CONFIG");
20
+ }
21
+ if (options.gitlab) {
22
+ const hasProjectUrl = Boolean(options.gitlab.projectUrl?.trim());
23
+ const hasProjectId = options.gitlab.projectId !== undefined &&
24
+ String(options.gitlab.projectId).trim() !== "";
25
+ if (!hasProjectUrl && !hasProjectId) {
26
+ throw new AgentConfigError("gitlab.projectUrl or gitlab.projectId is required", "INVALID_CONFIG");
27
+ }
28
+ const token = options.gitlab.token?.trim() || process.env.GITLAB_TOKEN?.trim();
29
+ if (!token) {
30
+ throw new AgentConfigError("gitlab.token or GITLAB_TOKEN env var is required", "INVALID_CONFIG");
31
+ }
32
+ if (hasProjectUrl) {
33
+ try {
34
+ sanitizeGitLabUrl(options.gitlab.projectUrl);
35
+ }
36
+ catch (error) {
37
+ if (error instanceof GitLabUrlError) {
38
+ throw new AgentConfigError(error.message, "INVALID_CONFIG");
39
+ }
40
+ throw error;
41
+ }
42
+ }
43
+ }
44
+ }
45
+ /** Async validation that resolves GitLab project URL from projectId when needed. */
46
+ export async function resolveCreateOptions(options) {
47
+ validateCreateOptions(options);
48
+ const resolved = {
49
+ ...options,
50
+ model: resolveModelConfig(options.model),
51
+ };
52
+ if (!resolved.gitlab) {
53
+ return resolved;
54
+ }
55
+ const gitlabResolved = await resolveGitLabProject(resolved.gitlab);
56
+ return {
57
+ ...resolved,
58
+ gitlab: {
59
+ ...resolved.gitlab,
60
+ projectUrl: gitlabResolved.projectUrl,
61
+ token: gitlabResolved.token,
62
+ branch: gitlabResolved.branch,
63
+ projectId: gitlabResolved.gitlabProjectId ?? resolved.gitlab.projectId,
64
+ },
65
+ };
66
+ }
67
+ /** Validates send options; throws AgentConfigError on failure. */
68
+ export function validateSendOptions(options) {
69
+ if (!options) {
70
+ return;
71
+ }
72
+ if (options.screenshotBase64 && options.screenshotPath) {
73
+ throw new AgentConfigError("Provide screenshotBase64 or screenshotPath, not both", "INVALID_CONFIG");
74
+ }
75
+ }
76
+ export function splitPromptOptions(options) {
77
+ const { screenshotBase64, screenshotPath, selectedDom, validation, completion, timeoutMs: sendTimeoutMs, ...createFields } = options;
78
+ const sendOptions = {
79
+ screenshotBase64,
80
+ screenshotPath,
81
+ selectedDom,
82
+ validation,
83
+ completion,
84
+ timeoutMs: sendTimeoutMs,
85
+ };
86
+ return {
87
+ createOptions: createFields,
88
+ sendOptions,
89
+ };
90
+ }
91
+ //# sourceMappingURL=validateOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validateOptions.js","sourceRoot":"","sources":["../../src/agent/validateOptions.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { AgentGitLabConfig } from "../agent/types.js";
2
+ export interface CloneGitLabResult {
3
+ repoPath: string;
4
+ branchName: string;
5
+ }
6
+ /** Clones a GitLab project into the workspace and creates an agent branch. */
7
+ export declare function cloneGitLabProject(workspacePath: string, config: AgentGitLabConfig): Promise<CloneGitLabResult>;
8
+ /** Initializes git in a copied local repo. */
9
+ export declare function prepareLocalGitRepo(repoPath: string): Promise<string>;
10
+ //# sourceMappingURL=cloneGitLabProject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneGitLabProject.d.ts","sourceRoot":"","sources":["../../src/git/cloneGitLabProject.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8EAA8E;AAC9E,wBAAsB,kBAAkB,CACtC,aAAa,EAAE,MAAM,EACrB,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,iBAAiB,CAAC,CAkB5B;AAED,8CAA8C;AAC9C,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAG3E"}
@@ -0,0 +1,24 @@
1
+ import { runCommand } from "../tools/runCommand.js";
2
+ import { createAgentBranch } from "./createAgentBranch.js";
3
+ import { initGitRepo } from "./gitDiff.js";
4
+ import { buildGitLabCloneUrl } from "./sanitizeGitLabUrl.js";
5
+ import { resolveGitLabProject } from "./resolveGitLabProject.js";
6
+ /** Clones a GitLab project into the workspace and creates an agent branch. */
7
+ export async function cloneGitLabProject(workspacePath, config) {
8
+ const resolved = await resolveGitLabProject(config);
9
+ const repoPath = `${workspacePath}/repo`;
10
+ const cloneUrl = buildGitLabCloneUrl(resolved.projectUrl, resolved.token);
11
+ const branch = resolved.branch;
12
+ const clone = await runCommand(["git", "clone", "--depth", "1", "--branch", branch, cloneUrl, repoPath], { cwd: workspacePath, timeoutMs: 180_000 });
13
+ if (!clone.ok) {
14
+ throw new Error(`GitLab clone failed: ${clone.stderr || clone.stdout}`);
15
+ }
16
+ const branchName = await createAgentBranch(repoPath);
17
+ return { repoPath, branchName };
18
+ }
19
+ /** Initializes git in a copied local repo. */
20
+ export async function prepareLocalGitRepo(repoPath) {
21
+ await initGitRepo(repoPath);
22
+ return createAgentBranch(repoPath);
23
+ }
24
+ //# sourceMappingURL=cloneGitLabProject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloneGitLabProject.js","sourceRoot":"","sources":["../../src/git/cloneGitLabProject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAQjE,8EAA8E;AAC9E,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,aAAqB,EACrB,MAAyB;IAEzB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,GAAG,aAAa,OAAO,CAAC;IACzC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;IAE/B,MAAM,KAAK,GAAG,MAAM,UAAU,CAC5B,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EACxE,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,CAC3C,CAAC;IAEF,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAErD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC;AAClC,CAAC;AAED,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB;IACxD,MAAM,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC5B,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Creates a new agent branch in the repository. */
2
+ export declare function createAgentBranch(repoPath: string): Promise<string>;
3
+ //# sourceMappingURL=createAgentBranch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAgentBranch.d.ts","sourceRoot":"","sources":["../../src/git/createAgentBranch.ts"],"names":[],"mappings":"AAEA,oDAAoD;AACpD,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAezE"}
@@ -0,0 +1,14 @@
1
+ import { runCommand } from "../tools/runCommand.js";
2
+ /** Creates a new agent branch in the repository. */
3
+ export async function createAgentBranch(repoPath) {
4
+ const shortRandom = Math.random().toString(36).slice(2, 8);
5
+ const branchName = `auvira/edit-${Date.now()}-${shortRandom}`;
6
+ const checkout = await runCommand(["git", "checkout", "-b", branchName], {
7
+ cwd: repoPath,
8
+ });
9
+ if (!checkout.ok) {
10
+ throw new Error(`Failed to create agent branch: ${checkout.stderr || checkout.stdout}`);
11
+ }
12
+ return branchName;
13
+ }
14
+ //# sourceMappingURL=createAgentBranch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAgentBranch.js","sourceRoot":"","sources":["../../src/git/createAgentBranch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,oDAAoD;AACpD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAG,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,WAAW,EAAE,CAAC;IAE9D,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE;QACvE,GAAG,EAAE,QAAQ;KACd,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,kCAAkC,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,MAAM,EAAE,CACvE,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -0,0 +1,9 @@
1
+ export interface GitDiffResult {
2
+ changedFiles: string[];
3
+ diff: string;
4
+ }
5
+ /** Returns changed files and unified diff for the current repo state. */
6
+ export declare function gitDiff(repoPath: string): Promise<GitDiffResult>;
7
+ /** Initializes git and creates an initial commit when needed. */
8
+ export declare function initGitRepo(repoPath: string): Promise<void>;
9
+ //# sourceMappingURL=gitDiff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gitDiff.d.ts","sourceRoot":"","sources":["../../src/git/gitDiff.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;CACd;AAOD,yEAAyE;AACzE,wBAAsB,OAAO,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmBtE;AAED,iEAAiE;AACjE,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAajE"}