@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,38 @@
1
+ import type { RunEventBus } from "./RunEventBus.js";
2
+ import type { ConversationTurn } from "./types.js";
3
+ import type { AgentRunResult } from "./types.js";
4
+ import type { AgentRunEvent } from "./events.js";
5
+ export type AgentRunOperation = "cancel" | "conversation";
6
+ /** Cursor-SDK-compatible handle for an in-flight agent run. */
7
+ export declare class AgentRun {
8
+ private readonly bus;
9
+ private readonly resultPromise;
10
+ private readonly abortController;
11
+ private readonly getConversation;
12
+ readonly id: string;
13
+ private settled;
14
+ constructor(bus: RunEventBus, resultPromise: Promise<AgentRunResult>, abortController: AbortController, getConversation: () => ConversationTurn[]);
15
+ /** Streams all run events (live + buffered replay). */
16
+ stream(): AsyncIterable<AgentRunEvent>;
17
+ /** Alias for stream() — Cursor SDK parity. */
18
+ messages(): AsyncIterable<AgentRunEvent>;
19
+ /** Waits for the run to finish and returns the final result. */
20
+ wait(): Promise<AgentRunResult>;
21
+ /** Returns the final assistant text (blocks until run completes). */
22
+ text(): Promise<string>;
23
+ /** Yields assistant text chunks from stream events. */
24
+ iterText(): AsyncIterable<string>;
25
+ /** Cancels the in-flight run when supported. */
26
+ cancel(): Promise<void>;
27
+ /** Returns conversation turns recorded on the parent agent. */
28
+ conversation(): Promise<ConversationTurn[]>;
29
+ /** Whether an operation is supported on this run handle. */
30
+ supports(operation: AgentRunOperation): boolean;
31
+ /** Reason an operation is unsupported. */
32
+ unsupportedReason(operation: AgentRunOperation): string;
33
+ /** Returns buffered events synchronously (for tests). */
34
+ getBufferedEvents(): readonly AgentRunEvent[];
35
+ /** Whether the run event stream has been closed. */
36
+ isStreamClosed(): boolean;
37
+ }
38
+ //# sourceMappingURL=AgentRun.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRun.d.ts","sourceRoot":"","sources":["../../src/agent/AgentRun.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,cAAc,CAAC;AAE1D,+DAA+D;AAC/D,qBAAa,QAAQ;IAKjB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,eAAe;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe;IAPlC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,OAAO,CAAS;gBAGL,GAAG,EAAE,WAAW,EAChB,aAAa,EAAE,OAAO,CAAC,cAAc,CAAC,EACtC,eAAe,EAAE,eAAe,EAChC,eAAe,EAAE,MAAM,gBAAgB,EAAE;IAQ5D,uDAAuD;IACvD,MAAM,IAAI,aAAa,CAAC,aAAa,CAAC;IAItC,8CAA8C;IAC9C,QAAQ,IAAI,aAAa,CAAC,aAAa,CAAC;IAIxC,gEAAgE;IAChE,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IAI/B,qEAAqE;IAC/D,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC;IAK7B,uDAAuD;IAChD,QAAQ,IAAI,aAAa,CAAC,MAAM,CAAC;IAmBxC,gDAAgD;IAC1C,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ7B,+DAA+D;IACzD,YAAY,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAOjD,4DAA4D;IAC5D,QAAQ,CAAC,SAAS,EAAE,iBAAiB,GAAG,OAAO;IAU/C,0CAA0C;IAC1C,iBAAiB,CAAC,SAAS,EAAE,iBAAiB,GAAG,MAAM;IAUvD,yDAAyD;IACzD,iBAAiB,IAAI,SAAS,aAAa,EAAE;IAI7C,oDAAoD;IACpD,cAAc,IAAI,OAAO;CAG1B"}
@@ -0,0 +1,101 @@
1
+ import { getAssistantEventText } from "./assistantEvent.js";
2
+ import { isAssistantEvent } from "./events.js";
3
+ /** Cursor-SDK-compatible handle for an in-flight agent run. */
4
+ export class AgentRun {
5
+ bus;
6
+ resultPromise;
7
+ abortController;
8
+ getConversation;
9
+ id;
10
+ settled = false;
11
+ constructor(bus, resultPromise, abortController, getConversation) {
12
+ this.bus = bus;
13
+ this.resultPromise = resultPromise;
14
+ this.abortController = abortController;
15
+ this.getConversation = getConversation;
16
+ this.id = bus.runId;
17
+ void this.resultPromise.finally(() => {
18
+ this.settled = true;
19
+ });
20
+ }
21
+ /** Streams all run events (live + buffered replay). */
22
+ stream() {
23
+ return this.bus.asAsyncIterable();
24
+ }
25
+ /** Alias for stream() — Cursor SDK parity. */
26
+ messages() {
27
+ return this.stream();
28
+ }
29
+ /** Waits for the run to finish and returns the final result. */
30
+ wait() {
31
+ return this.resultPromise;
32
+ }
33
+ /** Returns the final assistant text (blocks until run completes). */
34
+ async text() {
35
+ const result = await this.wait();
36
+ return result.response;
37
+ }
38
+ /** Yields assistant text chunks from stream events. */
39
+ async *iterText() {
40
+ let streamed = false;
41
+ for await (const event of this.stream()) {
42
+ if (isAssistantEvent(event)) {
43
+ const text = getAssistantEventText(event);
44
+ if (text) {
45
+ streamed = true;
46
+ yield text;
47
+ }
48
+ }
49
+ }
50
+ if (!streamed) {
51
+ const result = await this.wait();
52
+ if (result.response) {
53
+ yield result.response;
54
+ }
55
+ }
56
+ }
57
+ /** Cancels the in-flight run when supported. */
58
+ async cancel() {
59
+ if (!this.supports("cancel")) {
60
+ throw new Error(this.unsupportedReason("cancel"));
61
+ }
62
+ this.abortController.abort();
63
+ await this.wait().catch(() => undefined);
64
+ }
65
+ /** Returns conversation turns recorded on the parent agent. */
66
+ async conversation() {
67
+ if (!this.supports("conversation")) {
68
+ throw new Error(this.unsupportedReason("conversation"));
69
+ }
70
+ return this.getConversation();
71
+ }
72
+ /** Whether an operation is supported on this run handle. */
73
+ supports(operation) {
74
+ if (operation === "cancel") {
75
+ return !this.settled;
76
+ }
77
+ if (operation === "conversation") {
78
+ return this.getConversation().length > 0;
79
+ }
80
+ return false;
81
+ }
82
+ /** Reason an operation is unsupported. */
83
+ unsupportedReason(operation) {
84
+ if (operation === "cancel" && this.settled) {
85
+ return "cancel is not supported after the run has completed";
86
+ }
87
+ if (operation === "conversation" && this.getConversation().length === 0) {
88
+ return "conversation is not available until at least one run has completed";
89
+ }
90
+ return `${operation} is not supported`;
91
+ }
92
+ /** Returns buffered events synchronously (for tests). */
93
+ getBufferedEvents() {
94
+ return this.bus.getBufferedEvents();
95
+ }
96
+ /** Whether the run event stream has been closed. */
97
+ isStreamClosed() {
98
+ return this.bus.isClosed();
99
+ }
100
+ }
101
+ //# sourceMappingURL=AgentRun.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AgentRun.js","sourceRoot":"","sources":["../../src/agent/AgentRun.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ConversationTurn } from "./types.js";
2
+ /** In-memory multi-turn conversation history for a reusable Agent. */
3
+ export declare class ConversationStore {
4
+ private turns;
5
+ /** Returns a copy of stored conversation turns. */
6
+ getTurns(): ConversationTurn[];
7
+ /** Whether any turns have been recorded. */
8
+ hasHistory(): boolean;
9
+ /** Appends a user/assistant exchange from a completed run. */
10
+ appendExchange(input: {
11
+ runId: string;
12
+ userPrompt: string;
13
+ assistantResponse: string;
14
+ }): void;
15
+ /** Clears all stored turns. */
16
+ clear(): void;
17
+ }
18
+ //# sourceMappingURL=ConversationStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationStore.d.ts","sourceRoot":"","sources":["../../src/agent/ConversationStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAOnD,sEAAsE;AACtE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,KAAK,CAA0B;IAEvC,mDAAmD;IACnD,QAAQ,IAAI,gBAAgB,EAAE;IAI9B,4CAA4C;IAC5C,UAAU,IAAI,OAAO;IAIrB,8DAA8D;IAC9D,cAAc,CAAC,KAAK,EAAE;QACpB,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,GAAG,IAAI;IAkBR,+BAA+B;IAC/B,KAAK,IAAI,IAAI;CAGd"}
@@ -0,0 +1,38 @@
1
+ function getMaxHistoryTurns() {
2
+ const parsed = Number(process.env.AUVIRA_AGENT_MAX_HISTORY_TURNS ?? "10");
3
+ return Number.isFinite(parsed) && parsed > 0 ? parsed : 10;
4
+ }
5
+ /** In-memory multi-turn conversation history for a reusable Agent. */
6
+ export class ConversationStore {
7
+ turns = [];
8
+ /** Returns a copy of stored conversation turns. */
9
+ getTurns() {
10
+ return [...this.turns];
11
+ }
12
+ /** Whether any turns have been recorded. */
13
+ hasHistory() {
14
+ return this.turns.length > 0;
15
+ }
16
+ /** Appends a user/assistant exchange from a completed run. */
17
+ appendExchange(input) {
18
+ this.turns.push({
19
+ role: "user",
20
+ content: input.userPrompt,
21
+ runId: input.runId,
22
+ });
23
+ this.turns.push({
24
+ role: "assistant",
25
+ content: input.assistantResponse,
26
+ runId: input.runId,
27
+ });
28
+ const maxTurns = getMaxHistoryTurns() * 2;
29
+ if (this.turns.length > maxTurns) {
30
+ this.turns = this.turns.slice(this.turns.length - maxTurns);
31
+ }
32
+ }
33
+ /** Clears all stored turns. */
34
+ clear() {
35
+ this.turns = [];
36
+ }
37
+ }
38
+ //# sourceMappingURL=ConversationStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConversationStore.js","sourceRoot":"","sources":["../../src/agent/ConversationStore.ts"],"names":[],"mappings":"AAEA,SAAS,kBAAkB;IACzB,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,IAAI,CAAC,CAAC;IAC1E,OAAO,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;AAC7D,CAAC;AAED,sEAAsE;AACtE,MAAM,OAAO,iBAAiB;IACpB,KAAK,GAAuB,EAAE,CAAC;IAEvC,mDAAmD;IACnD,QAAQ;QACN,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IACzB,CAAC;IAED,4CAA4C;IAC5C,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,8DAA8D;IAC9D,cAAc,CAAC,KAId;QACC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,MAAM;YACZ,OAAO,EAAE,KAAK,CAAC,UAAU;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,KAAK,CAAC,iBAAiB;YAChC,KAAK,EAAE,KAAK,CAAC,KAAK;SACnB,CAAC,CAAC;QAEH,MAAM,QAAQ,GAAG,kBAAkB,EAAE,GAAG,CAAC,CAAC;QAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,+BAA+B;IAC/B,KAAK;QACH,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;IAClB,CAAC;CACF"}
@@ -0,0 +1,43 @@
1
+ import type { ToolExecutionResult } from "./tools/types.js";
2
+ import type { AgentRunEvent, AgentRunEventInput, AgentRunEventType, AgentToolName } from "./events.js";
3
+ type EventListener = (event: AgentRunEvent) => void;
4
+ /** Buffered event bus for a single agent run (Cursor SDK stream parity). */
5
+ export declare class RunEventBus {
6
+ readonly runId: string;
7
+ private readonly secrets;
8
+ private readonly buffer;
9
+ private readonly listeners;
10
+ private closed;
11
+ private waiters;
12
+ constructor(runId?: string, secrets?: Array<string | undefined>);
13
+ /** Returns secrets used for stream masking (tests). */
14
+ getSecrets(): Array<string | undefined>;
15
+ /** Emits a typed run event to subscribers and the replay buffer. */
16
+ emit<T extends AgentRunEventType>(event: AgentRunEventInput<T> & {
17
+ type: T;
18
+ }): Extract<AgentRunEvent, {
19
+ type: T;
20
+ }>;
21
+ subscribe(listener: EventListener): () => void;
22
+ getBufferedEvents(): readonly AgentRunEvent[];
23
+ /** Whether the bus has been closed (stream will not receive new events). */
24
+ isClosed(): boolean;
25
+ close(): void;
26
+ /** Async iterable of events; replays buffer then streams live events. */
27
+ asAsyncIterable(): AsyncIterable<AgentRunEvent>;
28
+ /** Emits paired tool.start / tool.end events around an operation. */
29
+ withTool<T>(name: AgentToolName, input: Record<string, unknown>, fn: () => Promise<T>): Promise<T>;
30
+ /** Agent tool wrapper — stream enrichment only; returns raw ToolExecutionResult. */
31
+ withAgentTool(name: AgentToolName, input: Record<string, unknown>, fn: () => Promise<ToolExecutionResult>): Promise<ToolExecutionResult>;
32
+ truncate(text: string, max?: number): string;
33
+ private maskAndCap;
34
+ private maskAndCapGeneric;
35
+ private maskAndCapPreview80;
36
+ private maskAndCapPatchPreview;
37
+ private maskAndCapDiffPatch;
38
+ private sanitizeGenericRecord;
39
+ private sanitizeToolOutput;
40
+ private sanitizeEvent;
41
+ }
42
+ export {};
43
+ //# sourceMappingURL=RunEventBus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunEventBus.d.ts","sourceRoot":"","sources":["../../src/agent/RunEventBus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,OAAO,KAAK,EACV,aAAa,EAEb,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACd,MAAM,aAAa,CAAC;AAOrB,KAAK,aAAa,GAAG,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,CAAC;AAEpD,4EAA4E;AAC5E,qBAAa,WAAW;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAA6C;gBAG1D,KAAK,GAAE,MAAqB,EAC5B,OAAO,GAAE,KAAK,CAAC,MAAM,GAAG,SAAS,CAAM;IAMzC,uDAAuD;IACvD,UAAU,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAIvC,oEAAoE;IACpE,IAAI,CAAC,CAAC,SAAS,iBAAiB,EAC9B,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,GACzC,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,CAAC,CAAA;KAAE,CAAC;IA0BtC,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,IAAI;IAK9C,iBAAiB,IAAI,SAAS,aAAa,EAAE;IAI7C,4EAA4E;IAC5E,QAAQ,IAAI,OAAO;IAInB,KAAK,IAAI,IAAI;IAiBb,yEAAyE;IAClE,eAAe,IAAI,aAAa,CAAC,aAAa,CAAC;IA8BtD,qEAAqE;IAC/D,QAAQ,CAAC,CAAC,EACd,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,CAAC;IAiCb,oFAAoF;IAC9E,aAAa,CACjB,IAAI,EAAE,aAAa,EACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,EAAE,EAAE,MAAM,OAAO,CAAC,mBAAmB,CAAC,GACrC,OAAO,CAAC,mBAAmB,CAAC;IAiD/B,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,SAAoB,GAAG,MAAM;IAIvD,OAAO,CAAC,UAAU;IAQlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,sBAAsB;IAI9B,OAAO,CAAC,mBAAmB;IAK3B,OAAO,CAAC,qBAAqB;IAkB7B,OAAO,CAAC,kBAAkB;IAkC1B,OAAO,CAAC,aAAa;CA6DtB"}
@@ -0,0 +1,289 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { maskSecrets } from "../git/maskSecrets.js";
3
+ import { emitEditEventsFromPatch } from "./editEvents.js";
4
+ import { capPatch, getDiffMaxChars } from "./patchUtils.js";
5
+ const MAX_BUFFERED_EVENTS = 500;
6
+ const PREVIEW_MAX_CHARS = 200;
7
+ const PREVIEW80_MAX_CHARS = 80;
8
+ const PATCH_PREVIEW_MAX_CHARS = 2048;
9
+ /** Buffered event bus for a single agent run (Cursor SDK stream parity). */
10
+ export class RunEventBus {
11
+ runId;
12
+ secrets;
13
+ buffer = [];
14
+ listeners = new Set();
15
+ closed = false;
16
+ waiters = [];
17
+ constructor(runId = randomUUID(), secrets = []) {
18
+ this.runId = runId;
19
+ this.secrets = secrets;
20
+ }
21
+ /** Returns secrets used for stream masking (tests). */
22
+ getSecrets() {
23
+ return this.secrets;
24
+ }
25
+ /** Emits a typed run event to subscribers and the replay buffer. */
26
+ emit(event) {
27
+ const full = this.sanitizeEvent({
28
+ ...event,
29
+ runId: this.runId,
30
+ timestamp: Date.now(),
31
+ });
32
+ if (this.buffer.length >= MAX_BUFFERED_EVENTS) {
33
+ this.buffer.shift();
34
+ }
35
+ this.buffer.push(full);
36
+ for (const listener of this.listeners) {
37
+ listener(full);
38
+ }
39
+ if (this.waiters.length > 0) {
40
+ const waiting = this.waiters.splice(0);
41
+ for (const resolve of waiting) {
42
+ resolve(full);
43
+ }
44
+ }
45
+ return full;
46
+ }
47
+ subscribe(listener) {
48
+ this.listeners.add(listener);
49
+ return () => this.listeners.delete(listener);
50
+ }
51
+ getBufferedEvents() {
52
+ return this.buffer;
53
+ }
54
+ /** Whether the bus has been closed (stream will not receive new events). */
55
+ isClosed() {
56
+ return this.closed;
57
+ }
58
+ close() {
59
+ this.closed = true;
60
+ if (this.waiters.length > 0) {
61
+ const waiting = this.waiters.splice(0);
62
+ for (const resolve of waiting) {
63
+ resolve({
64
+ type: "run.failed",
65
+ runId: this.runId,
66
+ timestamp: Date.now(),
67
+ ok: false,
68
+ code: "STREAM_CLOSED",
69
+ message: "Event bus closed",
70
+ });
71
+ }
72
+ }
73
+ }
74
+ /** Async iterable of events; replays buffer then streams live events. */
75
+ async *asAsyncIterable() {
76
+ for (const event of this.buffer) {
77
+ yield event;
78
+ }
79
+ let index = this.buffer.length;
80
+ while (!this.closed || index < this.buffer.length) {
81
+ if (index < this.buffer.length) {
82
+ yield this.buffer[index];
83
+ index += 1;
84
+ continue;
85
+ }
86
+ if (this.closed) {
87
+ break;
88
+ }
89
+ const event = await new Promise((resolve) => {
90
+ this.waiters.push(resolve);
91
+ });
92
+ if (event.type === "run.failed" && event.code === "STREAM_CLOSED") {
93
+ break;
94
+ }
95
+ yield event;
96
+ index += 1;
97
+ }
98
+ }
99
+ /** Emits paired tool.start / tool.end events around an operation. */
100
+ async withTool(name, input, fn) {
101
+ this.emit({
102
+ type: "tool.start",
103
+ name,
104
+ input: this.sanitizeGenericRecord(input),
105
+ });
106
+ try {
107
+ const output = await fn();
108
+ this.emit({
109
+ type: "tool.end",
110
+ name,
111
+ ok: true,
112
+ output: this.sanitizeToolOutput(typeof output === "object" && output !== null
113
+ ? output
114
+ : { result: output }, name),
115
+ });
116
+ return output;
117
+ }
118
+ catch (error) {
119
+ const message = error instanceof Error ? error.message : String(error);
120
+ this.emit({
121
+ type: "tool.end",
122
+ name,
123
+ ok: false,
124
+ output: { error: this.maskAndCapGeneric(message) },
125
+ });
126
+ throw error;
127
+ }
128
+ }
129
+ /** Agent tool wrapper — stream enrichment only; returns raw ToolExecutionResult. */
130
+ async withAgentTool(name, input, fn) {
131
+ this.emit({
132
+ type: "tool.start",
133
+ name,
134
+ input: this.sanitizeGenericRecord(input),
135
+ });
136
+ const result = await fn();
137
+ this.emit({
138
+ type: "tool.end",
139
+ name,
140
+ ok: result.ok,
141
+ output: this.sanitizeToolOutput({
142
+ ...result.meta,
143
+ output: result.output,
144
+ path: result.path,
145
+ applied: result.applied,
146
+ error: result.error,
147
+ }, name),
148
+ });
149
+ if (result.ok === true &&
150
+ result.patch &&
151
+ result.patch.before !== result.patch.after) {
152
+ emitEditEventsFromPatch(this, {
153
+ path: result.patch.path,
154
+ before: result.patch.before,
155
+ after: result.patch.after,
156
+ applied: true,
157
+ });
158
+ }
159
+ else if (result.path && result.applied === false && !result.ok) {
160
+ emitEditEventsFromPatch(this, {
161
+ path: result.path,
162
+ before: "",
163
+ after: "",
164
+ applied: false,
165
+ errorMessage: result.error ?? result.output,
166
+ });
167
+ }
168
+ return result;
169
+ }
170
+ truncate(text, max = PREVIEW_MAX_CHARS) {
171
+ return this.maskAndCap(text, max);
172
+ }
173
+ maskAndCap(text, max) {
174
+ const sanitized = maskSecrets(text, this.secrets);
175
+ if (sanitized.length <= max) {
176
+ return sanitized;
177
+ }
178
+ return `${sanitized.slice(0, max)}…`;
179
+ }
180
+ maskAndCapGeneric(text) {
181
+ return this.maskAndCap(text, PREVIEW_MAX_CHARS);
182
+ }
183
+ maskAndCapPreview80(text) {
184
+ return this.maskAndCap(text, PREVIEW80_MAX_CHARS);
185
+ }
186
+ maskAndCapPatchPreview(text) {
187
+ return this.maskAndCap(text, PATCH_PREVIEW_MAX_CHARS);
188
+ }
189
+ maskAndCapDiffPatch(patch) {
190
+ const masked = maskSecrets(patch, this.secrets);
191
+ return capPatch(masked, getDiffMaxChars());
192
+ }
193
+ sanitizeGenericRecord(record) {
194
+ const out = {};
195
+ for (const [key, value] of Object.entries(record)) {
196
+ if (typeof value === "string") {
197
+ out[key] = this.maskAndCapGeneric(value);
198
+ }
199
+ else if (Array.isArray(value)) {
200
+ out[key] = value.map((item) => typeof item === "string" ? this.maskAndCapGeneric(item) : item);
201
+ }
202
+ else {
203
+ out[key] = value;
204
+ }
205
+ }
206
+ return out;
207
+ }
208
+ sanitizeToolOutput(record, toolName) {
209
+ const out = {};
210
+ for (const [key, value] of Object.entries(record)) {
211
+ if (value === undefined) {
212
+ continue;
213
+ }
214
+ if (typeof value === "string") {
215
+ if (key === "oldPreview" || key === "newPreview") {
216
+ out[key] = this.maskAndCapPreview80(value);
217
+ }
218
+ else if (key === "patchPreview") {
219
+ out[key] = this.maskAndCapPatchPreview(value);
220
+ }
221
+ else if (key === "preview") {
222
+ out[key] = this.maskAndCapGeneric(value);
223
+ }
224
+ else if (key === "output" || key === "error") {
225
+ out[key] = this.maskAndCapGeneric(value);
226
+ }
227
+ else {
228
+ out[key] = this.maskAndCapGeneric(value);
229
+ }
230
+ }
231
+ else if (Array.isArray(value)) {
232
+ const maxItems = toolName === "grep" ? 10 : toolName === "glob" || toolName === "list_dir" ? 20 : value.length;
233
+ out[key] = value.slice(0, maxItems).map((item) => typeof item === "string" ? this.maskAndCapGeneric(item) : item);
234
+ }
235
+ else {
236
+ out[key] = value;
237
+ }
238
+ }
239
+ return out;
240
+ }
241
+ sanitizeEvent(event) {
242
+ const copy = { ...event };
243
+ if (copy.type === "edit.diff" || copy.type === "run.diff") {
244
+ const patch = typeof copy.patch === "string" ? copy.patch : "";
245
+ const capped = this.maskAndCapDiffPatch(patch);
246
+ copy.patch = capped.patch;
247
+ copy.truncated = capped.truncated;
248
+ if (typeof copy.path === "string") {
249
+ copy.path = this.maskAndCapGeneric(copy.path);
250
+ }
251
+ if (copy.type === "run.diff" && Array.isArray(copy.changedFiles)) {
252
+ copy.changedFiles = copy.changedFiles.map((file) => typeof file === "string" ? this.maskAndCapGeneric(file) : file);
253
+ }
254
+ return copy;
255
+ }
256
+ if (copy.type === "run.failed") {
257
+ if (typeof copy.message === "string") {
258
+ copy.message = this.maskAndCapGeneric(copy.message);
259
+ }
260
+ if (Array.isArray(copy.changedFiles)) {
261
+ copy.changedFiles = copy.changedFiles.map((file) => typeof file === "string" ? this.maskAndCapGeneric(file) : file);
262
+ }
263
+ return copy;
264
+ }
265
+ if (copy.type === "edit.applied") {
266
+ if (typeof copy.errorMessage === "string") {
267
+ copy.errorMessage = this.maskAndCapGeneric(copy.errorMessage);
268
+ }
269
+ if (typeof copy.path === "string") {
270
+ copy.path = this.maskAndCapGeneric(copy.path);
271
+ }
272
+ return copy;
273
+ }
274
+ for (const key of Object.keys(copy)) {
275
+ const value = copy[key];
276
+ if (typeof value === "string") {
277
+ copy[key] = this.maskAndCapGeneric(value);
278
+ }
279
+ }
280
+ if (copy.type === "tool.end" && copy.output && typeof copy.output === "object") {
281
+ copy.output = this.sanitizeToolOutput(copy.output, copy.name);
282
+ }
283
+ if (copy.type === "tool.start" && copy.input && typeof copy.input === "object") {
284
+ copy.input = this.sanitizeGenericRecord(copy.input);
285
+ }
286
+ return copy;
287
+ }
288
+ }
289
+ //# sourceMappingURL=RunEventBus.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RunEventBus.js","sourceRoot":"","sources":["../../src/agent/RunEventBus.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { AssistantContentBlock, AssistantEventInput } from "./events.js";
2
+ /** Builds a Cursor-shaped assistant stream event payload. */
3
+ export declare function buildAssistantEvent(text: string): AssistantEventInput;
4
+ /** Extracts assistant text from a block-shaped or legacy flat event. */
5
+ export declare function getAssistantEventText(event: {
6
+ text?: string;
7
+ message?: {
8
+ content?: AssistantContentBlock[];
9
+ };
10
+ }): string;
11
+ //# sourceMappingURL=assistantEvent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistantEvent.d.ts","sourceRoot":"","sources":["../../src/agent/assistantEvent.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAE9E,6DAA6D;AAC7D,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CAOrE;AAED,wEAAwE;AACxE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,qBAAqB,EAAE,CAAA;KAAE,CAAC;CACjD,GAAG,MAAM,CAQT"}
@@ -0,0 +1,20 @@
1
+ /** Builds a Cursor-shaped assistant stream event payload. */
2
+ export function buildAssistantEvent(text) {
3
+ const content = [{ type: "text", text }];
4
+ return {
5
+ type: "assistant",
6
+ message: { role: "assistant", content },
7
+ text,
8
+ };
9
+ }
10
+ /** Extracts assistant text from a block-shaped or legacy flat event. */
11
+ export function getAssistantEventText(event) {
12
+ if (event.message?.content?.length) {
13
+ return event.message.content
14
+ .filter((block) => block.type === "text")
15
+ .map((block) => block.text)
16
+ .join("");
17
+ }
18
+ return event.text ?? "";
19
+ }
20
+ //# sourceMappingURL=assistantEvent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assistantEvent.js","sourceRoot":"","sources":["../../src/agent/assistantEvent.ts"],"names":[],"mappings":"AAEA,6DAA6D;AAC7D,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,OAAO,GAA4B,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE;QACvC,IAAI;KACL,CAAC;AACJ,CAAC;AAED,wEAAwE;AACxE,MAAM,UAAU,qBAAqB,CAAC,KAGrC;IACC,IAAI,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;QACnC,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO;aACzB,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,CAAC;aACxC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;aAC1B,IAAI,CAAC,EAAE,CAAC,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;AAC1B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { SelectedDomContext } from "./types.js";
2
+ export interface BuildAgentPromptInput {
3
+ prompt: string;
4
+ screenshotPath?: string;
5
+ selectedDom?: SelectedDomContext;
6
+ validationCommand: string;
7
+ }
8
+ /** Builds the full agent prompt with visual and validation context. */
9
+ export declare function buildAgentPrompt(input: BuildAgentPromptInput): string;
10
+ //# sourceMappingURL=buildAgentPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"buildAgentPrompt.d.ts","sourceRoot":"","sources":["../../src/agent/buildAgentPrompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,kBAAkB,CAAC;IACjC,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,uEAAuE;AACvE,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,MAAM,CAsCrE"}