@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,646 @@
1
+ import { buildAssistantEvent } from "../../agent/assistantEvent.js";
2
+ import { throwIfCancelled } from "../../agent/cancellation.js";
3
+ import { buildIncompleteContinuationNudge, computeCompletionEvaluationKey, evaluateTaskCompletion, getCompletionMaxContinues, getTaskCompletionConfidenceThreshold, } from "../../agent/evaluateTaskCompletion.js";
4
+ import { evaluateHarnessCompletionGate, getWiringIncompleteNudge, isStyleOnlyDiff, } from "../../agent/editCompletion.js";
5
+ import { executeAgentTool, parseToolArguments, } from "../../agent/tools/executeTool.js";
6
+ import { filterAllowlistedChangedFiles, } from "../../agent/tools/pathGuard.js";
7
+ import { gitDiff } from "../../git/gitDiff.js";
8
+ import { invalidateWorkspaceCheckpointCache, } from "../../workspace/workspaceCheckpoint.js";
9
+ import { withApiConcurrencyLimit } from "../../util/apiThrottle.js";
10
+ import { formatRateLimitReport, formatTimingReport, postJsonWithRetry, } from "../../util/modelApiClient.js";
11
+ import { applyCustomModelRequestDefaults, bumpMaxCompletionTokensForLengthRetry, getMaxCompletionTokens, } from "../custom/modelRequestDefaults.js";
12
+ import { evaluateToolPolicy, getPrimaryMaxToolCalls, } from "./toolPolicy.js";
13
+ import { trimAgentHistory, } from "./trimAgentHistory.js";
14
+ import { AGENT_TOOL_DEFINITIONS } from "./toolSchemas.js";
15
+ const MAX_LOOP_TURNS = 25;
16
+ const LENGTH_RETRY_NUDGE = "Your previous response was truncated (length limit). Call one tool with minimal arguments.";
17
+ function buildUserMessage(userPrompt, imageDataUrls) {
18
+ if (imageDataUrls.length === 0) {
19
+ return userPrompt;
20
+ }
21
+ return [
22
+ {
23
+ type: "text",
24
+ text: `${userPrompt}\n\nUse attached reference image(s) for visual vibe when relevant.`,
25
+ },
26
+ ...imageDataUrls.map((url) => ({
27
+ type: "image_url",
28
+ image_url: { url },
29
+ })),
30
+ ];
31
+ }
32
+ function resolveProfile(hasVision) {
33
+ return hasVision ? "agentic_vision" : "agentic";
34
+ }
35
+ function toAssistantHistoryMessage(message) {
36
+ return {
37
+ role: "assistant",
38
+ ...message,
39
+ };
40
+ }
41
+ async function resolveWorkspaceDiff(input) {
42
+ if (input.workspaceCheckpoint) {
43
+ return input.workspaceCheckpoint.diff();
44
+ }
45
+ const git = await gitDiff(input.repoPath);
46
+ return {
47
+ changedFiles: git.changedFiles,
48
+ diff: git.diff,
49
+ };
50
+ }
51
+ function shouldUseLlmCompletionEvaluator(input) {
52
+ if (!input.harnessMode) {
53
+ return false;
54
+ }
55
+ if (input.completionEvaluationEnabled === false) {
56
+ return false;
57
+ }
58
+ if (input.completion?.auto === false) {
59
+ return false;
60
+ }
61
+ if (input.completionAuto === false) {
62
+ return false;
63
+ }
64
+ if (input.completion?.isComplete) {
65
+ return false;
66
+ }
67
+ return true;
68
+ }
69
+ function buildEarlyFinishResult(input) {
70
+ input.bus?.emit({
71
+ type: "run.early_finish",
72
+ reason: input.finishReason,
73
+ changedFiles: input.allowlistedFiles,
74
+ toolCallCount: input.policyState.toolCallCount,
75
+ elapsedMs: Date.now() - input.loopStartMs,
76
+ styleOnly: input.gate.styleOnly,
77
+ wiringComplete: input.gate.wiringComplete,
78
+ deferredFinishCount: input.completionState.deferredFinishCount,
79
+ confidence: input.confidence,
80
+ completionReason: input.completionReason,
81
+ });
82
+ return {
83
+ ok: true,
84
+ response: input.lastAssistantText || "Harness edit applied",
85
+ summary: `Applied ${input.editsApplied} edit(s) — early finish after allowlisted diff`,
86
+ editsApplied: input.editsApplied,
87
+ toolCallCount: input.policyState.toolCallCount,
88
+ abortReason: input.policyState.abortReason,
89
+ earlyFinish: {
90
+ reason: input.finishReason,
91
+ changedFiles: input.allowlistedFiles,
92
+ styleOnly: input.gate.styleOnly,
93
+ wiringComplete: input.gate.wiringComplete,
94
+ deferredFinishCount: input.completionState.deferredFinishCount,
95
+ confidence: input.confidence,
96
+ completionReason: input.completionReason,
97
+ },
98
+ usage: input.lastUsage,
99
+ };
100
+ }
101
+ async function applyDeterministicCompletionGate(input) {
102
+ const gate = evaluateHarnessCompletionGate({
103
+ changedFiles: input.allowlistedFiles,
104
+ toolCallCount: input.policyState.toolCallCount,
105
+ modelTurnCount: input.modelTurnCount,
106
+ hasVisionImages: Boolean(input.hasVision),
107
+ selectedDom: input.selectedDom,
108
+ completion: input.completion,
109
+ deferredFinishCount: input.completionState.deferredFinishCount,
110
+ });
111
+ if (gate.action === "continue") {
112
+ input.completionState.deferredFinishCount += 1;
113
+ input.bus?.emit({
114
+ type: "run.continue",
115
+ reason: gate.continueReason ?? "style_only_incomplete",
116
+ changedFiles: input.allowlistedFiles,
117
+ toolCallCount: input.policyState.toolCallCount,
118
+ deferredFinishCount: input.completionState.deferredFinishCount,
119
+ styleOnly: gate.styleOnly,
120
+ wiringComplete: gate.wiringComplete,
121
+ });
122
+ input.messages.push({
123
+ role: "user",
124
+ content: getWiringIncompleteNudge(),
125
+ });
126
+ return undefined;
127
+ }
128
+ if (gate.action === "fail") {
129
+ return {
130
+ ok: false,
131
+ response: input.lastAssistantText,
132
+ summary: gate.failMessage ??
133
+ "Multi-step style edit incomplete without config/component wiring",
134
+ editsApplied: input.editsApplied,
135
+ toolCallCount: input.policyState.toolCallCount,
136
+ abortReason: input.policyState.abortReason,
137
+ usage: input.lastUsage,
138
+ error: {
139
+ message: gate.failMessage ??
140
+ "Multi-step style edit incomplete without config/component wiring",
141
+ code: "INCOMPLETE_MULTI_STEP",
142
+ },
143
+ };
144
+ }
145
+ const finishReason = gate.finishReason ?? "diff_detected";
146
+ return buildEarlyFinishResult({
147
+ finishReason,
148
+ allowlistedFiles: input.allowlistedFiles,
149
+ gate,
150
+ policyState: input.policyState,
151
+ editsApplied: input.editsApplied,
152
+ lastAssistantText: input.lastAssistantText,
153
+ loopStartMs: input.loopStartMs,
154
+ lastUsage: input.lastUsage,
155
+ completionState: input.completionState,
156
+ bus: input.bus,
157
+ });
158
+ }
159
+ async function tryHarnessEarlyFinish(input) {
160
+ if (!input.harnessMode || !input.allowedWritePaths?.length) {
161
+ return undefined;
162
+ }
163
+ const diffResult = await resolveWorkspaceDiff({
164
+ workspaceCheckpoint: input.workspaceCheckpoint,
165
+ repoPath: input.repoPath,
166
+ });
167
+ const allowlistedFiles = filterAllowlistedChangedFiles(diffResult.changedFiles, input.allowedWritePaths);
168
+ if (allowlistedFiles.length === 0) {
169
+ return undefined;
170
+ }
171
+ const gateContext = evaluateHarnessCompletionGate({
172
+ changedFiles: allowlistedFiles,
173
+ toolCallCount: input.policyState.toolCallCount,
174
+ modelTurnCount: input.modelTurnCount,
175
+ hasVisionImages: Boolean(input.hasVision),
176
+ selectedDom: input.selectedDom,
177
+ completion: input.completion,
178
+ deferredFinishCount: input.completionState.deferredFinishCount,
179
+ });
180
+ const useLlm = shouldUseLlmCompletionEvaluator({
181
+ harnessMode: input.harnessMode,
182
+ completion: input.completion,
183
+ completionEvaluationEnabled: input.completionEvaluationEnabled,
184
+ completionAuto: input.completionAuto,
185
+ });
186
+ if (useLlm &&
187
+ input.model?.baseURL &&
188
+ input.model.apiKey &&
189
+ input.ownerRequest?.trim()) {
190
+ const threshold = getTaskCompletionConfidenceThreshold(input.completionConfidenceThreshold ??
191
+ input.completion?.confidenceThreshold);
192
+ const includeReferenceImages = input.completionState.evaluationCallCount === 0 ||
193
+ isStyleOnlyDiff(allowlistedFiles, input.completion);
194
+ const evaluationKey = computeCompletionEvaluationKey({
195
+ ownerRequest: input.ownerRequest,
196
+ selectedDom: input.selectedDom,
197
+ changedFiles: allowlistedFiles,
198
+ diffPatch: diffResult.diff,
199
+ recentToolResults: input.completionState.recentToolResults,
200
+ threshold,
201
+ includeReferenceImages,
202
+ });
203
+ let decision;
204
+ if (evaluationKey === input.completionState.lastEvaluationKey &&
205
+ input.completionState.lastEvaluation !== undefined) {
206
+ decision = input.completionState.lastEvaluation;
207
+ input.bus?.emit({
208
+ type: "completion.evaluated",
209
+ source: "cached",
210
+ isComplete: decision?.isComplete,
211
+ confidence: decision?.confidence,
212
+ reason: decision?.reason ?? "Cached completion evaluation",
213
+ missingWork: decision?.missingWork,
214
+ nextActionHint: decision?.nextActionHint,
215
+ changedFiles: allowlistedFiles,
216
+ evaluatorMs: 0,
217
+ });
218
+ }
219
+ else {
220
+ decision = await evaluateTaskCompletion({
221
+ ownerRequest: input.ownerRequest,
222
+ selectedDom: input.selectedDom,
223
+ referenceImages: input.referenceImages,
224
+ includeReferenceImages,
225
+ changedFiles: allowlistedFiles,
226
+ diffPatch: diffResult.diff,
227
+ allowedWritePaths: input.allowedWritePaths,
228
+ recentToolResults: input.completionState.recentToolResults,
229
+ model: input.model,
230
+ signal: input.signal,
231
+ timeoutMs: input.timeoutMs,
232
+ bus: input.bus,
233
+ });
234
+ input.completionState.lastEvaluationKey = evaluationKey;
235
+ input.completionState.lastEvaluation = decision;
236
+ if (decision !== null) {
237
+ input.completionState.evaluationCallCount += 1;
238
+ }
239
+ }
240
+ if (decision?.isComplete &&
241
+ decision.confidence >= threshold) {
242
+ return buildEarlyFinishResult({
243
+ finishReason: "completion_satisfied",
244
+ allowlistedFiles,
245
+ gate: gateContext,
246
+ policyState: input.policyState,
247
+ editsApplied: input.editsApplied,
248
+ lastAssistantText: input.lastAssistantText,
249
+ loopStartMs: input.loopStartMs,
250
+ lastUsage: input.lastUsage,
251
+ completionState: input.completionState,
252
+ confidence: decision.confidence,
253
+ completionReason: decision.reason,
254
+ bus: input.bus,
255
+ });
256
+ }
257
+ if (decision &&
258
+ !decision.isComplete &&
259
+ decision.confidence >= threshold &&
260
+ input.completionState.completionContinueCount < getCompletionMaxContinues()) {
261
+ input.completionState.completionContinueCount += 1;
262
+ input.completionState.lastEvaluationKey = undefined;
263
+ input.completionState.lastEvaluation = undefined;
264
+ input.messages.push({
265
+ role: "user",
266
+ content: buildIncompleteContinuationNudge(decision),
267
+ });
268
+ return undefined;
269
+ }
270
+ if (!decision) {
271
+ input.bus?.emit({
272
+ type: "completion.evaluated",
273
+ source: "error",
274
+ changedFiles: allowlistedFiles,
275
+ reason: "Evaluator unavailable; using deterministic fallback",
276
+ });
277
+ }
278
+ else if (decision.confidence < threshold) {
279
+ input.bus?.emit({
280
+ type: "completion.evaluated",
281
+ source: "skipped",
282
+ isComplete: decision.isComplete,
283
+ confidence: decision.confidence,
284
+ reason: "Confidence below threshold; using deterministic fallback",
285
+ changedFiles: allowlistedFiles,
286
+ });
287
+ }
288
+ }
289
+ else if (useLlm) {
290
+ input.bus?.emit({
291
+ type: "completion.evaluated",
292
+ source: "skipped",
293
+ changedFiles: allowlistedFiles,
294
+ reason: "Missing model credentials or owner request",
295
+ });
296
+ }
297
+ return applyDeterministicCompletionGate({
298
+ harnessMode: input.harnessMode,
299
+ allowedWritePaths: input.allowedWritePaths,
300
+ allowlistedFiles,
301
+ diffPatch: diffResult.diff,
302
+ bus: input.bus,
303
+ policyState: input.policyState,
304
+ editsApplied: input.editsApplied,
305
+ lastAssistantText: input.lastAssistantText,
306
+ loopStartMs: input.loopStartMs,
307
+ lastUsage: input.lastUsage,
308
+ messages: input.messages,
309
+ modelTurnCount: input.modelTurnCount,
310
+ hasVision: input.hasVision,
311
+ selectedDom: input.selectedDom,
312
+ completion: input.completion,
313
+ completionState: input.completionState,
314
+ });
315
+ }
316
+ /** Runs a multi-turn tool-calling loop against an OpenAI-compatible chat API. */
317
+ export async function runAgentToolLoop(input) {
318
+ const messages = [...input.messages];
319
+ const maxToolCalls = input.maxToolCalls ?? getPrimaryMaxToolCalls();
320
+ const profile = resolveProfile(input.hasVision);
321
+ let policyState = { toolCallCount: 0 };
322
+ let editsApplied = 0;
323
+ let lastAssistantText = "";
324
+ let lastUsage;
325
+ const loopStartMs = Date.now();
326
+ const completionState = {
327
+ deferredFinishCount: 0,
328
+ completionContinueCount: 0,
329
+ recentToolResults: [],
330
+ evaluationCallCount: 0,
331
+ };
332
+ const toolCtx = {
333
+ repoPath: input.repoPath,
334
+ allowedWritePaths: input.allowedWritePaths,
335
+ enforceAllowlist: input.enforceAllowlist,
336
+ };
337
+ for (let turn = 0; turn < MAX_LOOP_TURNS; turn += 1) {
338
+ throwIfCancelled(input.signal);
339
+ const modelTurnCount = turn + 1;
340
+ if (policyState.abortReason) {
341
+ const early = await tryHarnessEarlyFinish({
342
+ harnessMode: input.harnessMode,
343
+ allowedWritePaths: input.allowedWritePaths,
344
+ repoPath: input.repoPath,
345
+ workspaceCheckpoint: input.workspaceCheckpoint,
346
+ bus: input.bus,
347
+ policyState,
348
+ editsApplied,
349
+ lastAssistantText,
350
+ loopStartMs,
351
+ lastUsage,
352
+ messages,
353
+ modelTurnCount,
354
+ hasVision: input.hasVision,
355
+ selectedDom: input.selectedDom,
356
+ completion: input.completion,
357
+ completionAuto: input.completionAuto,
358
+ completionEvaluationEnabled: input.completionEvaluationEnabled,
359
+ completionConfidenceThreshold: input.completionConfidenceThreshold,
360
+ referenceImages: input.referenceImages,
361
+ ownerRequest: input.ownerRequest,
362
+ model: input.model,
363
+ timeoutMs: input.timeoutMs,
364
+ signal: input.signal,
365
+ completionState,
366
+ });
367
+ if (early) {
368
+ return early;
369
+ }
370
+ break;
371
+ }
372
+ const trimmedMessages = trimAgentHistory(messages);
373
+ let maxCompletionTokensOverride;
374
+ let lengthRetryUsed = false;
375
+ input.bus?.emit({
376
+ type: "model.attempt",
377
+ attempt: turn + 1,
378
+ maxAttempts: MAX_LOOP_TURNS,
379
+ });
380
+ const requestBody = {
381
+ model: input.modelId,
382
+ messages: trimmedMessages,
383
+ tools: AGENT_TOOL_DEFINITIONS,
384
+ tool_choice: "auto",
385
+ temperature: 0.2,
386
+ };
387
+ applyCustomModelRequestDefaults(requestBody, {
388
+ profile,
389
+ modelId: input.modelId,
390
+ maxCompletionTokensOverride,
391
+ });
392
+ const callModel = async () => {
393
+ input.bus?.emit({
394
+ type: "model.request",
395
+ provider: "custom",
396
+ model: input.modelId,
397
+ hasVision: Boolean(input.hasVision),
398
+ });
399
+ const { value: result } = await withApiConcurrencyLimit((queueWaitMs) => postJsonWithRetry({
400
+ url: `${input.baseURL}/chat/completions`,
401
+ headers: {
402
+ Authorization: `Bearer ${input.apiKey}`,
403
+ "Content-Type": "application/json",
404
+ },
405
+ body: requestBody,
406
+ timeoutMs: input.timeoutMs ?? 300_000,
407
+ signal: input.signal,
408
+ }, queueWaitMs));
409
+ if (result.ok && result.data) {
410
+ const content = result.data.choices?.[0]?.message?.content?.trim() ?? "";
411
+ input.bus?.emit({
412
+ type: "model.response",
413
+ contentPreview: content.slice(0, 500),
414
+ timingMs: result.totalMs,
415
+ httpRetries: result.retries,
416
+ });
417
+ }
418
+ return result;
419
+ };
420
+ let apiResult = input.bus
421
+ ? await input.bus.withTool("model_completion", { turn: turn + 1, model: input.modelId }, callModel)
422
+ : await callModel();
423
+ throwIfCancelled(input.signal);
424
+ if (!apiResult.ok || !apiResult.data) {
425
+ const rateLimit = apiResult.rateLimit;
426
+ return {
427
+ ok: false,
428
+ response: "",
429
+ summary: rateLimit ? "MiniMax rate limit exceeded" : "Model API request failed",
430
+ editsApplied,
431
+ toolCallCount: policyState.toolCallCount,
432
+ error: {
433
+ message: rateLimit
434
+ ? formatRateLimitReport(rateLimit)
435
+ : `${apiResult.errorMessage ?? "Model API request failed"} | ${formatTimingReport(apiResult)}`,
436
+ code: rateLimit ? "RATE_LIMIT" : "PROVIDER_ERROR",
437
+ },
438
+ };
439
+ }
440
+ let payload = apiResult.data;
441
+ let choice = payload.choices?.[0];
442
+ let finishReason = choice?.finish_reason;
443
+ if (finishReason === "length" && !lengthRetryUsed) {
444
+ lengthRetryUsed = true;
445
+ const currentCap = requestBody.max_completion_tokens ??
446
+ getMaxCompletionTokens(profile);
447
+ maxCompletionTokensOverride = bumpMaxCompletionTokensForLengthRetry(profile, currentCap);
448
+ messages.push({ role: "user", content: LENGTH_RETRY_NUDGE });
449
+ applyCustomModelRequestDefaults(requestBody, {
450
+ profile,
451
+ modelId: input.modelId,
452
+ maxCompletionTokensOverride,
453
+ });
454
+ requestBody.messages = trimAgentHistory(messages);
455
+ input.bus?.emit({
456
+ type: "model.repair",
457
+ reason: "length",
458
+ priorOutputSnippet: (choice?.message?.content ?? "").slice(0, 200),
459
+ });
460
+ apiResult = input.bus
461
+ ? await input.bus.withTool("model_completion", { turn: turn + 1, model: input.modelId, lengthRetry: true }, callModel)
462
+ : await callModel();
463
+ if (!apiResult.ok || !apiResult.data) {
464
+ const rateLimit = apiResult.rateLimit;
465
+ return {
466
+ ok: false,
467
+ response: lastAssistantText,
468
+ summary: "Model API request failed after length retry",
469
+ editsApplied,
470
+ toolCallCount: policyState.toolCallCount,
471
+ error: {
472
+ message: rateLimit?.message ??
473
+ apiResult.errorMessage ??
474
+ "Model API request failed",
475
+ code: rateLimit ? "RATE_LIMIT" : "PROVIDER_ERROR",
476
+ },
477
+ };
478
+ }
479
+ payload = apiResult.data;
480
+ choice = payload.choices?.[0];
481
+ finishReason = choice?.finish_reason;
482
+ }
483
+ lastUsage = payload.usage;
484
+ const message = choice?.message;
485
+ if (!message) {
486
+ return {
487
+ ok: false,
488
+ response: lastAssistantText,
489
+ summary: "Model returned empty message",
490
+ editsApplied,
491
+ toolCallCount: policyState.toolCallCount,
492
+ error: { message: "Empty model response", code: "PROVIDER_ERROR" },
493
+ };
494
+ }
495
+ const toolCalls = message.tool_calls ?? [];
496
+ const assistantContent = typeof message.content === "string" ? message.content.trim() : "";
497
+ if (assistantContent) {
498
+ lastAssistantText = assistantContent;
499
+ input.bus?.emit(buildAssistantEvent(assistantContent));
500
+ }
501
+ messages.push(toAssistantHistoryMessage(message));
502
+ if (toolCalls.length === 0) {
503
+ const harnessOk = input.harnessMode && input.allowedWritePaths?.length
504
+ ? editsApplied > 0
505
+ : editsApplied > 0 || assistantContent.length > 0;
506
+ return {
507
+ ok: harnessOk,
508
+ response: assistantContent || lastAssistantText || "Agent completed",
509
+ summary: editsApplied > 0 ? `Applied ${editsApplied} edit(s)` : assistantContent.slice(0, 200),
510
+ editsApplied,
511
+ toolCallCount: policyState.toolCallCount,
512
+ usage: lastUsage,
513
+ };
514
+ }
515
+ let mutatingEditsThisTurn = 0;
516
+ for (const toolCall of toolCalls) {
517
+ throwIfCancelled(input.signal);
518
+ const toolName = toolCall.function.name;
519
+ policyState = evaluateToolPolicy(toolName, policyState, maxToolCalls);
520
+ if (policyState.abortReason) {
521
+ messages.push({
522
+ role: "tool",
523
+ tool_call_id: toolCall.id,
524
+ content: `Tool blocked: ${policyState.abortReason}`,
525
+ });
526
+ break;
527
+ }
528
+ const args = parseToolArguments(toolCall.function.arguments);
529
+ const result = await executeAgentTool(toolName, args, toolCtx, input.bus);
530
+ const toolPath = typeof args.path === "string"
531
+ ? args.path
532
+ : typeof args.file_path === "string"
533
+ ? args.file_path
534
+ : undefined;
535
+ completionState.recentToolResults.push({
536
+ name: toolName,
537
+ ok: result.ok,
538
+ output: result.output,
539
+ path: toolPath,
540
+ });
541
+ if (completionState.recentToolResults.length > 5) {
542
+ completionState.recentToolResults.shift();
543
+ }
544
+ if (result.applied) {
545
+ editsApplied += 1;
546
+ mutatingEditsThisTurn += 1;
547
+ invalidateWorkspaceCheckpointCache(input.workspaceCheckpoint);
548
+ }
549
+ messages.push({
550
+ role: "tool",
551
+ tool_call_id: toolCall.id,
552
+ content: result.output,
553
+ });
554
+ }
555
+ if (mutatingEditsThisTurn > 0) {
556
+ const early = await tryHarnessEarlyFinish({
557
+ harnessMode: input.harnessMode,
558
+ allowedWritePaths: input.allowedWritePaths,
559
+ repoPath: input.repoPath,
560
+ workspaceCheckpoint: input.workspaceCheckpoint,
561
+ bus: input.bus,
562
+ policyState,
563
+ editsApplied,
564
+ lastAssistantText,
565
+ loopStartMs,
566
+ lastUsage,
567
+ messages,
568
+ modelTurnCount,
569
+ hasVision: input.hasVision,
570
+ selectedDom: input.selectedDom,
571
+ completion: input.completion,
572
+ completionAuto: input.completionAuto,
573
+ completionEvaluationEnabled: input.completionEvaluationEnabled,
574
+ completionConfidenceThreshold: input.completionConfidenceThreshold,
575
+ referenceImages: input.referenceImages,
576
+ ownerRequest: input.ownerRequest,
577
+ model: input.model,
578
+ timeoutMs: input.timeoutMs,
579
+ signal: input.signal,
580
+ completionState,
581
+ });
582
+ if (early) {
583
+ return early;
584
+ }
585
+ }
586
+ if (editsApplied > 0 && toolCalls.every((call) => !isMutatingTool(call.function.name))) {
587
+ continue;
588
+ }
589
+ }
590
+ if (input.harnessMode &&
591
+ input.allowedWritePaths?.length &&
592
+ editsApplied > 0) {
593
+ const early = await tryHarnessEarlyFinish({
594
+ harnessMode: input.harnessMode,
595
+ allowedWritePaths: input.allowedWritePaths,
596
+ repoPath: input.repoPath,
597
+ workspaceCheckpoint: input.workspaceCheckpoint,
598
+ bus: input.bus,
599
+ policyState,
600
+ editsApplied,
601
+ lastAssistantText,
602
+ loopStartMs,
603
+ lastUsage,
604
+ messages,
605
+ modelTurnCount: MAX_LOOP_TURNS,
606
+ hasVision: input.hasVision,
607
+ selectedDom: input.selectedDom,
608
+ completion: input.completion,
609
+ completionAuto: input.completionAuto,
610
+ completionEvaluationEnabled: input.completionEvaluationEnabled,
611
+ completionConfidenceThreshold: input.completionConfidenceThreshold,
612
+ referenceImages: input.referenceImages,
613
+ ownerRequest: input.ownerRequest,
614
+ model: input.model,
615
+ timeoutMs: input.timeoutMs,
616
+ signal: input.signal,
617
+ completionState,
618
+ });
619
+ if (early) {
620
+ return early;
621
+ }
622
+ }
623
+ return {
624
+ ok: editsApplied > 0,
625
+ response: lastAssistantText || "Agent loop ended",
626
+ summary: editsApplied > 0
627
+ ? `Applied ${editsApplied} edit(s) via tools`
628
+ : policyState.abortReason ?? "Agent loop ended without edits",
629
+ editsApplied,
630
+ toolCallCount: policyState.toolCallCount,
631
+ abortReason: policyState.abortReason,
632
+ usage: lastUsage,
633
+ error: editsApplied === 0
634
+ ? {
635
+ message: policyState.abortReason ?? "No edits applied",
636
+ code: "EDIT_NOT_APPLIED",
637
+ }
638
+ : undefined,
639
+ };
640
+ }
641
+ function isMutatingTool(toolName) {
642
+ const name = toolName.toLowerCase();
643
+ return name === "write" || name === "search_replace" || name === "edit";
644
+ }
645
+ export { buildUserMessage };
646
+ //# sourceMappingURL=agentLoop.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agentLoop.js","sourceRoot":"","sources":["../../../src/providers/agentic/agentLoop.ts"],"names":[],"mappings":"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"}