@nexus-cortex/executors 4.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/LICENSE +202 -0
  2. package/NOTICE +2 -0
  3. package/README.md +13 -0
  4. package/dist/ExecutorRegistry.d.ts +89 -0
  5. package/dist/ExecutorRegistry.d.ts.map +1 -0
  6. package/dist/ExecutorRegistry.js +219 -0
  7. package/dist/ExecutorRegistry.js.map +1 -0
  8. package/dist/base/BaseTool.d.ts +108 -0
  9. package/dist/base/BaseTool.d.ts.map +1 -0
  10. package/dist/base/BaseTool.js +111 -0
  11. package/dist/base/BaseTool.js.map +1 -0
  12. package/dist/base/ToolRegistry.d.ts +141 -0
  13. package/dist/base/ToolRegistry.d.ts.map +1 -0
  14. package/dist/base/ToolRegistry.js +241 -0
  15. package/dist/base/ToolRegistry.js.map +1 -0
  16. package/dist/base/ToolResult.d.ts +63 -0
  17. package/dist/base/ToolResult.d.ts.map +1 -0
  18. package/dist/base/ToolResult.js +8 -0
  19. package/dist/base/ToolResult.js.map +1 -0
  20. package/dist/base/index.d.ts +10 -0
  21. package/dist/base/index.d.ts.map +1 -0
  22. package/dist/base/index.js +8 -0
  23. package/dist/base/index.js.map +1 -0
  24. package/dist/implementations/addon/CreateArtifactTool.d.ts +221 -0
  25. package/dist/implementations/addon/CreateArtifactTool.d.ts.map +1 -0
  26. package/dist/implementations/addon/CreateArtifactTool.js +1042 -0
  27. package/dist/implementations/addon/CreateArtifactTool.js.map +1 -0
  28. package/dist/implementations/addon/FrameDiffCache.d.ts +166 -0
  29. package/dist/implementations/addon/FrameDiffCache.d.ts.map +1 -0
  30. package/dist/implementations/addon/FrameDiffCache.js +395 -0
  31. package/dist/implementations/addon/FrameDiffCache.js.map +1 -0
  32. package/dist/implementations/addon/H264StreamEncoder.d.ts +84 -0
  33. package/dist/implementations/addon/H264StreamEncoder.d.ts.map +1 -0
  34. package/dist/implementations/addon/H264StreamEncoder.js +203 -0
  35. package/dist/implementations/addon/H264StreamEncoder.js.map +1 -0
  36. package/dist/implementations/addon/HybridScreenshotManager.d.ts +197 -0
  37. package/dist/implementations/addon/HybridScreenshotManager.d.ts.map +1 -0
  38. package/dist/implementations/addon/HybridScreenshotManager.js +415 -0
  39. package/dist/implementations/addon/HybridScreenshotManager.js.map +1 -0
  40. package/dist/implementations/addon/InspectSandboxTool.d.ts +54 -0
  41. package/dist/implementations/addon/InspectSandboxTool.d.ts.map +1 -0
  42. package/dist/implementations/addon/InspectSandboxTool.js +226 -0
  43. package/dist/implementations/addon/InspectSandboxTool.js.map +1 -0
  44. package/dist/implementations/addon/InteractWithSandboxTool.d.ts +90 -0
  45. package/dist/implementations/addon/InteractWithSandboxTool.d.ts.map +1 -0
  46. package/dist/implementations/addon/InteractWithSandboxTool.js +367 -0
  47. package/dist/implementations/addon/InteractWithSandboxTool.js.map +1 -0
  48. package/dist/implementations/addon/KeyframeDetector.d.ts +140 -0
  49. package/dist/implementations/addon/KeyframeDetector.d.ts.map +1 -0
  50. package/dist/implementations/addon/KeyframeDetector.js +390 -0
  51. package/dist/implementations/addon/KeyframeDetector.js.map +1 -0
  52. package/dist/implementations/addon/ModifySandboxTool.d.ts +62 -0
  53. package/dist/implementations/addon/ModifySandboxTool.d.ts.map +1 -0
  54. package/dist/implementations/addon/ModifySandboxTool.js +266 -0
  55. package/dist/implementations/addon/ModifySandboxTool.js.map +1 -0
  56. package/dist/implementations/addon/ReactArtifactBuilder.d.ts +27 -0
  57. package/dist/implementations/addon/ReactArtifactBuilder.d.ts.map +1 -0
  58. package/dist/implementations/addon/ReactArtifactBuilder.js +198 -0
  59. package/dist/implementations/addon/ReactArtifactBuilder.js.map +1 -0
  60. package/dist/implementations/addon/SandboxEventBroadcaster.d.ts +143 -0
  61. package/dist/implementations/addon/SandboxEventBroadcaster.d.ts.map +1 -0
  62. package/dist/implementations/addon/SandboxEventBroadcaster.js +258 -0
  63. package/dist/implementations/addon/SandboxEventBroadcaster.js.map +1 -0
  64. package/dist/implementations/addon/SandboxIntrospectionTools.d.ts +77 -0
  65. package/dist/implementations/addon/SandboxIntrospectionTools.d.ts.map +1 -0
  66. package/dist/implementations/addon/SandboxIntrospectionTools.js +292 -0
  67. package/dist/implementations/addon/SandboxIntrospectionTools.js.map +1 -0
  68. package/dist/implementations/addon/SandboxViewServer.d.ts +127 -0
  69. package/dist/implementations/addon/SandboxViewServer.d.ts.map +1 -0
  70. package/dist/implementations/addon/SandboxViewServer.js +775 -0
  71. package/dist/implementations/addon/SandboxViewServer.js.map +1 -0
  72. package/dist/implementations/addon/ScreenStream.d.ts +149 -0
  73. package/dist/implementations/addon/ScreenStream.d.ts.map +1 -0
  74. package/dist/implementations/addon/ScreenStream.js +306 -0
  75. package/dist/implementations/addon/ScreenStream.js.map +1 -0
  76. package/dist/implementations/addon/StopSandboxTool.d.ts +61 -0
  77. package/dist/implementations/addon/StopSandboxTool.d.ts.map +1 -0
  78. package/dist/implementations/addon/StopSandboxTool.js +252 -0
  79. package/dist/implementations/addon/StopSandboxTool.js.map +1 -0
  80. package/dist/implementations/addon/TerminalSandbox.d.ts +111 -0
  81. package/dist/implementations/addon/TerminalSandbox.d.ts.map +1 -0
  82. package/dist/implementations/addon/TerminalSandbox.js +345 -0
  83. package/dist/implementations/addon/TerminalSandbox.js.map +1 -0
  84. package/dist/implementations/addon/VisualFeedbackBridge.d.ts +367 -0
  85. package/dist/implementations/addon/VisualFeedbackBridge.d.ts.map +1 -0
  86. package/dist/implementations/addon/VisualFeedbackBridge.js +888 -0
  87. package/dist/implementations/addon/VisualFeedbackBridge.js.map +1 -0
  88. package/dist/implementations/addon/WindowManager.d.ts +138 -0
  89. package/dist/implementations/addon/WindowManager.d.ts.map +1 -0
  90. package/dist/implementations/addon/WindowManager.js +276 -0
  91. package/dist/implementations/addon/WindowManager.js.map +1 -0
  92. package/dist/implementations/addon/index.d.ts +29 -0
  93. package/dist/implementations/addon/index.d.ts.map +1 -0
  94. package/dist/implementations/addon/index.js +29 -0
  95. package/dist/implementations/addon/index.js.map +1 -0
  96. package/dist/implementations/addon/injectables/reactIntrospection.d.ts +57 -0
  97. package/dist/implementations/addon/injectables/reactIntrospection.d.ts.map +1 -0
  98. package/dist/implementations/addon/injectables/reactIntrospection.js +480 -0
  99. package/dist/implementations/addon/injectables/reactIntrospection.js.map +1 -0
  100. package/dist/implementations/addon/terminal-client.html +253 -0
  101. package/dist/implementations/agent/PRAgentTool.d.ts +37 -0
  102. package/dist/implementations/agent/PRAgentTool.d.ts.map +1 -0
  103. package/dist/implementations/agent/PRAgentTool.js +257 -0
  104. package/dist/implementations/agent/PRAgentTool.js.map +1 -0
  105. package/dist/implementations/agent/TaskTool.d.ts +76 -0
  106. package/dist/implementations/agent/TaskTool.d.ts.map +1 -0
  107. package/dist/implementations/agent/TaskTool.js +424 -0
  108. package/dist/implementations/agent/TaskTool.js.map +1 -0
  109. package/dist/implementations/agent/index.d.ts +5 -0
  110. package/dist/implementations/agent/index.d.ts.map +1 -0
  111. package/dist/implementations/agent/index.js +3 -0
  112. package/dist/implementations/agent/index.js.map +1 -0
  113. package/dist/implementations/execution/BackgroundProcessRegistry.d.ts +68 -0
  114. package/dist/implementations/execution/BackgroundProcessRegistry.d.ts.map +1 -0
  115. package/dist/implementations/execution/BackgroundProcessRegistry.js +146 -0
  116. package/dist/implementations/execution/BackgroundProcessRegistry.js.map +1 -0
  117. package/dist/implementations/execution/BashOutputTool.d.ts +42 -0
  118. package/dist/implementations/execution/BashOutputTool.d.ts.map +1 -0
  119. package/dist/implementations/execution/BashOutputTool.js +168 -0
  120. package/dist/implementations/execution/BashOutputTool.js.map +1 -0
  121. package/dist/implementations/execution/CodeExecuteTool.d.ts +31 -0
  122. package/dist/implementations/execution/CodeExecuteTool.d.ts.map +1 -0
  123. package/dist/implementations/execution/CodeExecuteTool.js +127 -0
  124. package/dist/implementations/execution/CodeExecuteTool.js.map +1 -0
  125. package/dist/implementations/execution/KillShellTool.d.ts +37 -0
  126. package/dist/implementations/execution/KillShellTool.d.ts.map +1 -0
  127. package/dist/implementations/execution/KillShellTool.js +144 -0
  128. package/dist/implementations/execution/KillShellTool.js.map +1 -0
  129. package/dist/implementations/execution/SearchToolsTool.d.ts +32 -0
  130. package/dist/implementations/execution/SearchToolsTool.d.ts.map +1 -0
  131. package/dist/implementations/execution/SearchToolsTool.js +109 -0
  132. package/dist/implementations/execution/SearchToolsTool.js.map +1 -0
  133. package/dist/implementations/execution/ShellTool.d.ts +108 -0
  134. package/dist/implementations/execution/ShellTool.d.ts.map +1 -0
  135. package/dist/implementations/execution/ShellTool.js +546 -0
  136. package/dist/implementations/execution/ShellTool.js.map +1 -0
  137. package/dist/implementations/execution/WorkspaceManagerTool.d.ts +40 -0
  138. package/dist/implementations/execution/WorkspaceManagerTool.d.ts.map +1 -0
  139. package/dist/implementations/execution/WorkspaceManagerTool.js +370 -0
  140. package/dist/implementations/execution/WorkspaceManagerTool.js.map +1 -0
  141. package/dist/implementations/execution/index.d.ts +13 -0
  142. package/dist/implementations/execution/index.d.ts.map +1 -0
  143. package/dist/implementations/execution/index.js +13 -0
  144. package/dist/implementations/execution/index.js.map +1 -0
  145. package/dist/implementations/extensions/EndTurnTool.d.ts +62 -0
  146. package/dist/implementations/extensions/EndTurnTool.d.ts.map +1 -0
  147. package/dist/implementations/extensions/EndTurnTool.js +172 -0
  148. package/dist/implementations/extensions/EndTurnTool.js.map +1 -0
  149. package/dist/implementations/extensions/ResearchBacklogTool.d.ts +37 -0
  150. package/dist/implementations/extensions/ResearchBacklogTool.d.ts.map +1 -0
  151. package/dist/implementations/extensions/ResearchBacklogTool.js +102 -0
  152. package/dist/implementations/extensions/ResearchBacklogTool.js.map +1 -0
  153. package/dist/implementations/extensions/SkillTool.d.ts +108 -0
  154. package/dist/implementations/extensions/SkillTool.d.ts.map +1 -0
  155. package/dist/implementations/extensions/SkillTool.js +351 -0
  156. package/dist/implementations/extensions/SkillTool.js.map +1 -0
  157. package/dist/implementations/extensions/SlashCommandTool.d.ts +112 -0
  158. package/dist/implementations/extensions/SlashCommandTool.d.ts.map +1 -0
  159. package/dist/implementations/extensions/SlashCommandTool.js +315 -0
  160. package/dist/implementations/extensions/SlashCommandTool.js.map +1 -0
  161. package/dist/implementations/extensions/index.d.ts +14 -0
  162. package/dist/implementations/extensions/index.d.ts.map +1 -0
  163. package/dist/implementations/extensions/index.js +10 -0
  164. package/dist/implementations/extensions/index.js.map +1 -0
  165. package/dist/implementations/file/EditTool.d.ts +232 -0
  166. package/dist/implementations/file/EditTool.d.ts.map +1 -0
  167. package/dist/implementations/file/EditTool.js +707 -0
  168. package/dist/implementations/file/EditTool.js.map +1 -0
  169. package/dist/implementations/file/ReadFileTool.d.ts +49 -0
  170. package/dist/implementations/file/ReadFileTool.d.ts.map +1 -0
  171. package/dist/implementations/file/ReadFileTool.js +225 -0
  172. package/dist/implementations/file/ReadFileTool.js.map +1 -0
  173. package/dist/implementations/file/WriteBinaryTool.d.ts +21 -0
  174. package/dist/implementations/file/WriteBinaryTool.d.ts.map +1 -0
  175. package/dist/implementations/file/WriteBinaryTool.js +153 -0
  176. package/dist/implementations/file/WriteBinaryTool.js.map +1 -0
  177. package/dist/implementations/file/WriteFileTool.d.ts +41 -0
  178. package/dist/implementations/file/WriteFileTool.d.ts.map +1 -0
  179. package/dist/implementations/file/WriteFileTool.js +220 -0
  180. package/dist/implementations/file/WriteFileTool.js.map +1 -0
  181. package/dist/implementations/file/index.d.ts +8 -0
  182. package/dist/implementations/file/index.d.ts.map +1 -0
  183. package/dist/implementations/file/index.js +8 -0
  184. package/dist/implementations/file/index.js.map +1 -0
  185. package/dist/implementations/historical/GetConversationSegmentTool.d.ts +44 -0
  186. package/dist/implementations/historical/GetConversationSegmentTool.d.ts.map +1 -0
  187. package/dist/implementations/historical/GetConversationSegmentTool.js +220 -0
  188. package/dist/implementations/historical/GetConversationSegmentTool.js.map +1 -0
  189. package/dist/implementations/historical/ListCompactionBoundariesTool.d.ts +36 -0
  190. package/dist/implementations/historical/ListCompactionBoundariesTool.d.ts.map +1 -0
  191. package/dist/implementations/historical/ListCompactionBoundariesTool.js +174 -0
  192. package/dist/implementations/historical/ListCompactionBoundariesTool.js.map +1 -0
  193. package/dist/implementations/historical/ListSessionsTool.d.ts +38 -0
  194. package/dist/implementations/historical/ListSessionsTool.d.ts.map +1 -0
  195. package/dist/implementations/historical/ListSessionsTool.js +140 -0
  196. package/dist/implementations/historical/ListSessionsTool.js.map +1 -0
  197. package/dist/implementations/historical/LoadSessionTool.d.ts +39 -0
  198. package/dist/implementations/historical/LoadSessionTool.d.ts.map +1 -0
  199. package/dist/implementations/historical/LoadSessionTool.js +171 -0
  200. package/dist/implementations/historical/LoadSessionTool.js.map +1 -0
  201. package/dist/implementations/historical/RequestHistoricalContextTool.d.ts +46 -0
  202. package/dist/implementations/historical/RequestHistoricalContextTool.d.ts.map +1 -0
  203. package/dist/implementations/historical/RequestHistoricalContextTool.js +224 -0
  204. package/dist/implementations/historical/RequestHistoricalContextTool.js.map +1 -0
  205. package/dist/implementations/historical/SearchConversationHistoryTool.d.ts +51 -0
  206. package/dist/implementations/historical/SearchConversationHistoryTool.d.ts.map +1 -0
  207. package/dist/implementations/historical/SearchConversationHistoryTool.js +306 -0
  208. package/dist/implementations/historical/SearchConversationHistoryTool.js.map +1 -0
  209. package/dist/implementations/historical/index.d.ts +12 -0
  210. package/dist/implementations/historical/index.d.ts.map +1 -0
  211. package/dist/implementations/historical/index.js +12 -0
  212. package/dist/implementations/historical/index.js.map +1 -0
  213. package/dist/implementations/index.d.ts +16 -0
  214. package/dist/implementations/index.d.ts.map +1 -0
  215. package/dist/implementations/index.js +28 -0
  216. package/dist/implementations/index.js.map +1 -0
  217. package/dist/implementations/mcp/DiscoveredMcpTool.d.ts +58 -0
  218. package/dist/implementations/mcp/DiscoveredMcpTool.d.ts.map +1 -0
  219. package/dist/implementations/mcp/DiscoveredMcpTool.js +269 -0
  220. package/dist/implementations/mcp/DiscoveredMcpTool.js.map +1 -0
  221. package/dist/implementations/mcp/index.d.ts +9 -0
  222. package/dist/implementations/mcp/index.d.ts.map +1 -0
  223. package/dist/implementations/mcp/index.js +8 -0
  224. package/dist/implementations/mcp/index.js.map +1 -0
  225. package/dist/implementations/notebook/NotebookEditTool.d.ts +96 -0
  226. package/dist/implementations/notebook/NotebookEditTool.d.ts.map +1 -0
  227. package/dist/implementations/notebook/NotebookEditTool.js +390 -0
  228. package/dist/implementations/notebook/NotebookEditTool.js.map +1 -0
  229. package/dist/implementations/notebook/index.d.ts +7 -0
  230. package/dist/implementations/notebook/index.d.ts.map +1 -0
  231. package/dist/implementations/notebook/index.js +7 -0
  232. package/dist/implementations/notebook/index.js.map +1 -0
  233. package/dist/implementations/search/GlobTool.d.ts +73 -0
  234. package/dist/implementations/search/GlobTool.d.ts.map +1 -0
  235. package/dist/implementations/search/GlobTool.js +213 -0
  236. package/dist/implementations/search/GlobTool.js.map +1 -0
  237. package/dist/implementations/search/GrepTool.d.ts +102 -0
  238. package/dist/implementations/search/GrepTool.d.ts.map +1 -0
  239. package/dist/implementations/search/GrepTool.js +754 -0
  240. package/dist/implementations/search/GrepTool.js.map +1 -0
  241. package/dist/implementations/search/index.d.ts +6 -0
  242. package/dist/implementations/search/index.d.ts.map +1 -0
  243. package/dist/implementations/search/index.js +6 -0
  244. package/dist/implementations/search/index.js.map +1 -0
  245. package/dist/implementations/tmux/TmuxSessionTool.d.ts +82 -0
  246. package/dist/implementations/tmux/TmuxSessionTool.d.ts.map +1 -0
  247. package/dist/implementations/tmux/TmuxSessionTool.js +371 -0
  248. package/dist/implementations/tmux/TmuxSessionTool.js.map +1 -0
  249. package/dist/implementations/tmux/TmuxViewServer.d.ts +86 -0
  250. package/dist/implementations/tmux/TmuxViewServer.d.ts.map +1 -0
  251. package/dist/implementations/tmux/TmuxViewServer.js +480 -0
  252. package/dist/implementations/tmux/TmuxViewServer.js.map +1 -0
  253. package/dist/implementations/tmux/index.d.ts +6 -0
  254. package/dist/implementations/tmux/index.d.ts.map +1 -0
  255. package/dist/implementations/tmux/index.js +6 -0
  256. package/dist/implementations/tmux/index.js.map +1 -0
  257. package/dist/implementations/ui/AskUserQuestionTool.d.ts +77 -0
  258. package/dist/implementations/ui/AskUserQuestionTool.d.ts.map +1 -0
  259. package/dist/implementations/ui/AskUserQuestionTool.js +241 -0
  260. package/dist/implementations/ui/AskUserQuestionTool.js.map +1 -0
  261. package/dist/implementations/ui/ExitPlanModeTool.d.ts +44 -0
  262. package/dist/implementations/ui/ExitPlanModeTool.d.ts.map +1 -0
  263. package/dist/implementations/ui/ExitPlanModeTool.js +150 -0
  264. package/dist/implementations/ui/ExitPlanModeTool.js.map +1 -0
  265. package/dist/implementations/ui/TodoWriteTool.d.ts +59 -0
  266. package/dist/implementations/ui/TodoWriteTool.d.ts.map +1 -0
  267. package/dist/implementations/ui/TodoWriteTool.js +315 -0
  268. package/dist/implementations/ui/TodoWriteTool.js.map +1 -0
  269. package/dist/implementations/ui/index.d.ts +9 -0
  270. package/dist/implementations/ui/index.d.ts.map +1 -0
  271. package/dist/implementations/ui/index.js +9 -0
  272. package/dist/implementations/ui/index.js.map +1 -0
  273. package/dist/implementations/web/BrowseTool.d.ts +43 -0
  274. package/dist/implementations/web/BrowseTool.d.ts.map +1 -0
  275. package/dist/implementations/web/BrowseTool.js +181 -0
  276. package/dist/implementations/web/BrowseTool.js.map +1 -0
  277. package/dist/implementations/web/SandboxTransferTool.d.ts +30 -0
  278. package/dist/implementations/web/SandboxTransferTool.d.ts.map +1 -0
  279. package/dist/implementations/web/SandboxTransferTool.js +261 -0
  280. package/dist/implementations/web/SandboxTransferTool.js.map +1 -0
  281. package/dist/implementations/web/WebFetchTool.d.ts +93 -0
  282. package/dist/implementations/web/WebFetchTool.d.ts.map +1 -0
  283. package/dist/implementations/web/WebFetchTool.js +484 -0
  284. package/dist/implementations/web/WebFetchTool.js.map +1 -0
  285. package/dist/implementations/web/WebSearchTool.d.ts +53 -0
  286. package/dist/implementations/web/WebSearchTool.d.ts.map +1 -0
  287. package/dist/implementations/web/WebSearchTool.js +227 -0
  288. package/dist/implementations/web/WebSearchTool.js.map +1 -0
  289. package/dist/implementations/web/escalateDirective.d.ts +11 -0
  290. package/dist/implementations/web/escalateDirective.d.ts.map +1 -0
  291. package/dist/implementations/web/escalateDirective.js +20 -0
  292. package/dist/implementations/web/escalateDirective.js.map +1 -0
  293. package/dist/implementations/web/index.d.ts +10 -0
  294. package/dist/implementations/web/index.d.ts.map +1 -0
  295. package/dist/implementations/web/index.js +10 -0
  296. package/dist/implementations/web/index.js.map +1 -0
  297. package/dist/implementations/web/webBackends.d.ts +65 -0
  298. package/dist/implementations/web/webBackends.d.ts.map +1 -0
  299. package/dist/implementations/web/webBackends.js +430 -0
  300. package/dist/implementations/web/webBackends.js.map +1 -0
  301. package/dist/implementations/web/webFetchRequestInit.d.ts +9 -0
  302. package/dist/implementations/web/webFetchRequestInit.d.ts.map +1 -0
  303. package/dist/implementations/web/webFetchRequestInit.js +21 -0
  304. package/dist/implementations/web/webFetchRequestInit.js.map +1 -0
  305. package/dist/index.d.ts +14 -0
  306. package/dist/index.d.ts.map +1 -0
  307. package/dist/index.js +18 -0
  308. package/dist/index.js.map +1 -0
  309. package/dist/utils/ArtifactRegistry.d.ts +138 -0
  310. package/dist/utils/ArtifactRegistry.d.ts.map +1 -0
  311. package/dist/utils/ArtifactRegistry.js +259 -0
  312. package/dist/utils/ArtifactRegistry.js.map +1 -0
  313. package/dist/utils/ChromiumBrowserManager.d.ts +56 -0
  314. package/dist/utils/ChromiumBrowserManager.d.ts.map +1 -0
  315. package/dist/utils/ChromiumBrowserManager.js +243 -0
  316. package/dist/utils/ChromiumBrowserManager.js.map +1 -0
  317. package/dist/utils/FileUtils.d.ts +81 -0
  318. package/dist/utils/FileUtils.d.ts.map +1 -0
  319. package/dist/utils/FileUtils.js +148 -0
  320. package/dist/utils/FileUtils.js.map +1 -0
  321. package/dist/utils/GitPolicy.d.ts +70 -0
  322. package/dist/utils/GitPolicy.d.ts.map +1 -0
  323. package/dist/utils/GitPolicy.js +166 -0
  324. package/dist/utils/GitPolicy.js.map +1 -0
  325. package/dist/utils/GitUtils.d.ts +18 -0
  326. package/dist/utils/GitUtils.d.ts.map +1 -0
  327. package/dist/utils/GitUtils.js +62 -0
  328. package/dist/utils/GitUtils.js.map +1 -0
  329. package/dist/utils/SandboxRegistry.d.ts +110 -0
  330. package/dist/utils/SandboxRegistry.d.ts.map +1 -0
  331. package/dist/utils/SandboxRegistry.js +220 -0
  332. package/dist/utils/SandboxRegistry.js.map +1 -0
  333. package/dist/utils/SchemaValidator.d.ts +21 -0
  334. package/dist/utils/SchemaValidator.d.ts.map +1 -0
  335. package/dist/utils/SchemaValidator.js +67 -0
  336. package/dist/utils/SchemaValidator.js.map +1 -0
  337. package/dist/utils/SessionLock.d.ts +96 -0
  338. package/dist/utils/SessionLock.d.ts.map +1 -0
  339. package/dist/utils/SessionLock.js +276 -0
  340. package/dist/utils/SessionLock.js.map +1 -0
  341. package/dist/utils/SessionPersistence.d.ts +89 -0
  342. package/dist/utils/SessionPersistence.d.ts.map +1 -0
  343. package/dist/utils/SessionPersistence.js +244 -0
  344. package/dist/utils/SessionPersistence.js.map +1 -0
  345. package/dist/utils/TextUtils.d.ts +77 -0
  346. package/dist/utils/TextUtils.d.ts.map +1 -0
  347. package/dist/utils/TextUtils.js +112 -0
  348. package/dist/utils/TextUtils.js.map +1 -0
  349. package/dist/utils/TmuxCapture.d.ts +94 -0
  350. package/dist/utils/TmuxCapture.d.ts.map +1 -0
  351. package/dist/utils/TmuxCapture.js +131 -0
  352. package/dist/utils/TmuxCapture.js.map +1 -0
  353. package/dist/utils/TmuxManager.d.ts +65 -0
  354. package/dist/utils/TmuxManager.d.ts.map +1 -0
  355. package/dist/utils/TmuxManager.js +304 -0
  356. package/dist/utils/TmuxManager.js.map +1 -0
  357. package/dist/utils/autoResearchPlanGate.d.ts +10 -0
  358. package/dist/utils/autoResearchPlanGate.d.ts.map +1 -0
  359. package/dist/utils/autoResearchPlanGate.js +57 -0
  360. package/dist/utils/autoResearchPlanGate.js.map +1 -0
  361. package/dist/utils/index.d.ts +19 -0
  362. package/dist/utils/index.d.ts.map +1 -0
  363. package/dist/utils/index.js +13 -0
  364. package/dist/utils/index.js.map +1 -0
  365. package/package.json +83 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * AskUserQuestion Tool Executor
3
+ *
4
+ * Present multiple-choice questions to users during execution.
5
+ * Allows agent to gather user preferences, clarify ambiguous instructions,
6
+ * and get decisions on implementation choices.
7
+ */
8
+ import { BaseTool } from '../../base/index.js';
9
+ import { SchemaValidator } from '../../utils/SchemaValidator.js';
10
+ /**
11
+ * AskUserQuestion Tool Executor
12
+ *
13
+ * Features:
14
+ * - Present 1-4 multiple choice questions
15
+ * - Each question has 2-4 options
16
+ * - Support for single or multi-select
17
+ * - Clear formatting for user interaction
18
+ */
19
+ export class AskUserQuestionTool extends BaseTool {
20
+ config;
21
+ constructor(config) {
22
+ super('AskUserQuestion', 'AskUserQuestion', `Use this tool when you need to ask the user questions during execution. This allows you to:
23
+ 1. Gather user preferences or requirements
24
+ 2. Clarify ambiguous instructions
25
+ 3. Get decisions on implementation choices as you work
26
+ 4. Offer choices to the user about what direction to take.
27
+
28
+ Usage notes:
29
+ - Users will always be able to select "Other" to provide custom text input
30
+ - Use multiSelect: true to allow multiple answers to be selected for a question`, {
31
+ type: 'object',
32
+ properties: {
33
+ questions: {
34
+ type: 'array',
35
+ minItems: 1,
36
+ maxItems: 4,
37
+ items: {
38
+ type: 'object',
39
+ properties: {
40
+ question: {
41
+ type: 'string',
42
+ description: 'The complete question to ask the user. Should be clear, specific, and end with a question mark.',
43
+ minLength: 5,
44
+ },
45
+ header: {
46
+ type: 'string',
47
+ maxLength: 12,
48
+ description: 'Very short label displayed as a chip/tag (max 12 chars). Examples: "Auth method", "Library", "Approach".',
49
+ minLength: 1,
50
+ },
51
+ options: {
52
+ type: 'array',
53
+ minItems: 2,
54
+ maxItems: 4,
55
+ items: {
56
+ type: 'object',
57
+ properties: {
58
+ label: {
59
+ type: 'string',
60
+ description: 'The display text for this option (1-5 words)',
61
+ minLength: 1,
62
+ },
63
+ description: {
64
+ type: 'string',
65
+ description: 'Explanation of what this option means or what will happen if chosen',
66
+ minLength: 1,
67
+ },
68
+ },
69
+ required: ['label', 'description'],
70
+ },
71
+ description: 'Available choices (2-4 options)',
72
+ },
73
+ multiSelect: {
74
+ type: 'boolean',
75
+ description: 'Set to true to allow multiple selections. Default: false',
76
+ default: false,
77
+ },
78
+ },
79
+ required: ['question', 'header', 'options', 'multiSelect'],
80
+ },
81
+ description: 'Questions to ask the user (1-4 questions)',
82
+ },
83
+ answers: {
84
+ type: 'object',
85
+ description: 'User answers collected by the permission component (filled by client)',
86
+ },
87
+ },
88
+ required: ['questions'],
89
+ });
90
+ this.config = config;
91
+ }
92
+ validateToolParams(params) {
93
+ // Schema validation
94
+ const schemaError = SchemaValidator.validate(this.parameterSchema, params);
95
+ if (schemaError) {
96
+ return schemaError;
97
+ }
98
+ // Validate questions array
99
+ if (!params.questions || params.questions.length === 0) {
100
+ return 'Questions array cannot be empty.';
101
+ }
102
+ if (params.questions.length > 4) {
103
+ return `Too many questions. Maximum: 4, provided: ${params.questions.length}`;
104
+ }
105
+ // Validate each question
106
+ for (let i = 0; i < params.questions.length; i++) {
107
+ const q = params.questions[i];
108
+ if (!q) {
109
+ return `Question ${i + 1} is undefined.`;
110
+ }
111
+ // Validate question text
112
+ if (!q.question || q.question.trim().length < 5) {
113
+ return `Question ${i + 1}: Question text must be at least 5 characters.`;
114
+ }
115
+ // Validate header
116
+ if (!q.header || q.header.trim().length === 0) {
117
+ return `Question ${i + 1}: Header cannot be empty.`;
118
+ }
119
+ if (q.header.length > 12) {
120
+ return `Question ${i + 1}: Header too long (${q.header.length} chars, max 12).`;
121
+ }
122
+ // Validate options
123
+ if (!q.options || q.options.length < 2) {
124
+ return `Question ${i + 1}: Must have at least 2 options.`;
125
+ }
126
+ if (q.options.length > 4) {
127
+ return `Question ${i + 1}: Too many options (${q.options.length}, max 4).`;
128
+ }
129
+ // Validate each option
130
+ for (let j = 0; j < q.options.length; j++) {
131
+ const opt = q.options[j];
132
+ if (!opt) {
133
+ return `Question ${i + 1}, Option ${j + 1} is undefined.`;
134
+ }
135
+ if (!opt.label || opt.label.trim().length === 0) {
136
+ return `Question ${i + 1}, Option ${j + 1}: Label cannot be empty.`;
137
+ }
138
+ if (!opt.description || opt.description.trim().length === 0) {
139
+ return `Question ${i + 1}, Option ${j + 1}: Description cannot be empty.`;
140
+ }
141
+ }
142
+ // Validate multiSelect is boolean
143
+ if (typeof q.multiSelect !== 'boolean') {
144
+ return `Question ${i + 1}: multiSelect must be a boolean.`;
145
+ }
146
+ }
147
+ return null;
148
+ }
149
+ getDescription(params) {
150
+ const count = params.questions.length;
151
+ return `Asking ${count} question${count > 1 ? 's' : ''}`;
152
+ }
153
+ async execute(params, signal, updateOutput) {
154
+ const startTime = Date.now();
155
+ try {
156
+ // Check for abort
157
+ if (signal.aborted) {
158
+ return {
159
+ ...this.createErrorResult('Question prompt was cancelled'),
160
+ metadata: {
161
+ executionTime: Date.now() - startTime,
162
+ },
163
+ };
164
+ }
165
+ // Validate parameters
166
+ const validationError = this.validateToolParams(params);
167
+ if (validationError) {
168
+ return {
169
+ ...this.createErrorResult(validationError),
170
+ metadata: {
171
+ executionTime: Date.now() - startTime,
172
+ },
173
+ };
174
+ }
175
+ // Format questions for display
176
+ const formattedOutput = this.formatQuestions(params.questions);
177
+ return {
178
+ ...this.createSuccessResult(formattedOutput),
179
+ metadata: {
180
+ executionTime: Date.now() - startTime,
181
+ questionCount: params.questions.length,
182
+ questions: params.questions.map((q) => ({
183
+ header: q.header,
184
+ question: q.question,
185
+ optionCount: q.options.length,
186
+ multiSelect: q.multiSelect,
187
+ })),
188
+ },
189
+ };
190
+ }
191
+ catch (error) {
192
+ // Check for abort
193
+ if (signal.aborted) {
194
+ return {
195
+ ...this.createErrorResult('Question prompt was cancelled'),
196
+ metadata: {
197
+ executionTime: Date.now() - startTime,
198
+ },
199
+ };
200
+ }
201
+ const errorMessage = error.message || String(error);
202
+ return {
203
+ ...this.createErrorResult(`Error presenting questions: ${errorMessage}`),
204
+ metadata: {
205
+ executionTime: Date.now() - startTime,
206
+ error: errorMessage,
207
+ },
208
+ };
209
+ }
210
+ }
211
+ /**
212
+ * Format questions for user display
213
+ */
214
+ formatQuestions(questions) {
215
+ const lines = [];
216
+ lines.push('=== User Questions ===\n\n');
217
+ questions.forEach((q, i) => {
218
+ // Header
219
+ lines.push(`[${q.header}]\n`);
220
+ // Question
221
+ lines.push(`${q.question}\n`);
222
+ // Multi-select indicator
223
+ if (q.multiSelect) {
224
+ lines.push('(You can select multiple options)\n');
225
+ }
226
+ lines.push('\n');
227
+ // Options
228
+ q.options.forEach((opt, j) => {
229
+ lines.push(`${j + 1}. ${opt.label}\n`);
230
+ lines.push(` ${opt.description}\n\n`);
231
+ });
232
+ // Separator between questions
233
+ if (i < questions.length - 1) {
234
+ lines.push('---\n\n');
235
+ }
236
+ });
237
+ lines.push('\nNote: The client will present these as interactive choices.\n');
238
+ return lines.join('');
239
+ }
240
+ }
241
+ //# sourceMappingURL=AskUserQuestionTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AskUserQuestionTool.js","sourceRoot":"","sources":["../../../src/implementations/ui/AskUserQuestionTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * ExitPlanMode Tool Executor
3
+ *
4
+ * Signals transition from planning mode to execution mode.
5
+ * Used when agent has finished planning and is ready to implement.
6
+ */
7
+ import { BaseTool, type ToolResult } from '../../base/index.js';
8
+ import type { ExecutorConfig } from '../../base/ToolRegistry.js';
9
+ /**
10
+ * Parameters for the ExitPlanMode tool
11
+ */
12
+ export interface ExitPlanModeToolParams {
13
+ /**
14
+ * The plan to present to the user for approval
15
+ * Supports markdown formatting
16
+ */
17
+ plan: string;
18
+ }
19
+ /**
20
+ * ExitPlanMode Tool Executor
21
+ *
22
+ * Features:
23
+ * - Present finalized plan to user
24
+ * - Signal mode transition
25
+ * - Wait for user approval before execution
26
+ *
27
+ * Usage:
28
+ * - ONLY use when task requires planning implementation steps
29
+ * - For research tasks (gathering info, searching files) - do NOT use
30
+ * - Plan should be clear and unambiguous
31
+ * - If multiple approaches exist, use AskUserQuestion first to clarify
32
+ */
33
+ export declare class ExitPlanModeTool extends BaseTool<ExitPlanModeToolParams, ToolResult> {
34
+ private config;
35
+ constructor(config: ExecutorConfig);
36
+ validateToolParams(params: ExitPlanModeToolParams): string | null;
37
+ getDescription(params: ExitPlanModeToolParams): string;
38
+ execute(params: ExitPlanModeToolParams, signal: AbortSignal, updateOutput?: (output: string) => void): Promise<ToolResult>;
39
+ /**
40
+ * Format plan for user presentation
41
+ */
42
+ private formatPlan;
43
+ }
44
+ //# sourceMappingURL=ExitPlanModeTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExitPlanModeTool.d.ts","sourceRoot":"","sources":["../../../src/implementations/ui/ExitPlanModeTool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAGjE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ,CAC5C,sBAAsB,EACtB,UAAU,CACX;IACa,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,cAAc;IA6B1C,kBAAkB,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM,GAAG,IAAI;IA0BjE,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,MAAM;IAKhD,OAAO,CACX,MAAM,EAAE,sBAAsB,EAC9B,MAAM,EAAE,WAAW,EACnB,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACtC,OAAO,CAAC,UAAU,CAAC;IAyEtB;;OAEG;IACH,OAAO,CAAC,UAAU;CAanB"}
@@ -0,0 +1,150 @@
1
+ /**
2
+ * ExitPlanMode Tool Executor
3
+ *
4
+ * Signals transition from planning mode to execution mode.
5
+ * Used when agent has finished planning and is ready to implement.
6
+ */
7
+ import { BaseTool } from '../../base/index.js';
8
+ import { SchemaValidator } from '../../utils/SchemaValidator.js';
9
+ import { markAutoResearchPlanMode } from '../../utils/autoResearchPlanGate.js';
10
+ /**
11
+ * ExitPlanMode Tool Executor
12
+ *
13
+ * Features:
14
+ * - Present finalized plan to user
15
+ * - Signal mode transition
16
+ * - Wait for user approval before execution
17
+ *
18
+ * Usage:
19
+ * - ONLY use when task requires planning implementation steps
20
+ * - For research tasks (gathering info, searching files) - do NOT use
21
+ * - Plan should be clear and unambiguous
22
+ * - If multiple approaches exist, use AskUserQuestion first to clarify
23
+ */
24
+ export class ExitPlanModeTool extends BaseTool {
25
+ config;
26
+ constructor(config) {
27
+ super('ExitPlanMode', 'ExitPlanMode', `Use this tool when you are in plan mode and have finished presenting your plan and are ready to code. This will prompt the user to exit plan mode.
28
+
29
+ IMPORTANT: Only use this tool when the task requires planning the implementation steps of a task that requires writing code. For research tasks where you're gathering information, searching files, reading files or in general trying to understand the codebase - do NOT use this tool.
30
+
31
+ ## Handling Ambiguity in Plans
32
+ Before using this tool, ensure your plan is clear and unambiguous. If there are multiple valid approaches or unclear requirements:
33
+ 1. Use the AskUserQuestion tool to clarify with the user
34
+ 2. Ask about specific implementation choices (e.g., architectural patterns, which library to use)
35
+ 3. Clarify any assumptions that could affect the implementation
36
+ 4. Only proceed with ExitPlanMode after resolving ambiguities`, {
37
+ type: 'object',
38
+ properties: {
39
+ plan: {
40
+ type: 'string',
41
+ description: 'The plan you came up with, that you want to run by the user for approval. Supports markdown. The plan should be pretty concise.',
42
+ minLength: 10,
43
+ },
44
+ },
45
+ required: ['plan'],
46
+ });
47
+ this.config = config;
48
+ }
49
+ validateToolParams(params) {
50
+ // Schema validation
51
+ const schemaError = SchemaValidator.validate(this.parameterSchema, params);
52
+ if (schemaError) {
53
+ return schemaError;
54
+ }
55
+ // Validate plan is not empty
56
+ if (!params.plan || !params.plan.trim()) {
57
+ return 'Plan cannot be empty.';
58
+ }
59
+ // Validate minimum length (should be a meaningful plan)
60
+ if (params.plan.trim().length < 10) {
61
+ return 'Plan is too short. Please provide a meaningful plan (at least 10 characters).';
62
+ }
63
+ // Warn if plan is very long (should be concise)
64
+ if (params.plan.length > 5000) {
65
+ // Don't error, just note in metadata
66
+ // Plan can be long if needed, but typically should be concise
67
+ }
68
+ return null;
69
+ }
70
+ getDescription(params) {
71
+ const wordCount = params.plan.split(/\s+/).length;
72
+ return `Presenting plan for approval (~${wordCount} words)`;
73
+ }
74
+ async execute(params, signal, updateOutput) {
75
+ const startTime = Date.now();
76
+ try {
77
+ // Check for abort
78
+ if (signal.aborted) {
79
+ return {
80
+ ...this.createErrorResult('Plan presentation was cancelled'),
81
+ metadata: {
82
+ executionTime: Date.now() - startTime,
83
+ },
84
+ };
85
+ }
86
+ // Validate parameters
87
+ const validationError = this.validateToolParams(params);
88
+ if (validationError) {
89
+ return {
90
+ ...this.createErrorResult(validationError),
91
+ metadata: {
92
+ executionTime: Date.now() - startTime,
93
+ },
94
+ };
95
+ }
96
+ // A valid plan was presented — satisfies the interactive auto-research plan-gate.
97
+ markAutoResearchPlanMode();
98
+ // Format the plan for presentation
99
+ const formattedOutput = this.formatPlan(params.plan);
100
+ // Calculate plan metrics
101
+ const wordCount = params.plan.split(/\s+/).length;
102
+ const lineCount = params.plan.split('\n').length;
103
+ const hasMarkdown = params.plan.includes('**') ||
104
+ params.plan.includes('##') ||
105
+ params.plan.includes('- ');
106
+ return {
107
+ ...this.createSuccessResult(formattedOutput),
108
+ metadata: {
109
+ executionTime: Date.now() - startTime,
110
+ planLength: params.plan.length,
111
+ wordCount,
112
+ lineCount,
113
+ hasMarkdown,
114
+ },
115
+ };
116
+ }
117
+ catch (error) {
118
+ // Check for abort
119
+ if (signal.aborted) {
120
+ return {
121
+ ...this.createErrorResult('Plan presentation was cancelled'),
122
+ metadata: {
123
+ executionTime: Date.now() - startTime,
124
+ },
125
+ };
126
+ }
127
+ const errorMessage = error.message || String(error);
128
+ return {
129
+ ...this.createErrorResult(`Error presenting plan: ${errorMessage}`),
130
+ metadata: {
131
+ executionTime: Date.now() - startTime,
132
+ error: errorMessage,
133
+ },
134
+ };
135
+ }
136
+ }
137
+ /**
138
+ * Format plan for user presentation
139
+ */
140
+ formatPlan(plan) {
141
+ const lines = [];
142
+ lines.push('=== Plan Ready for Execution ===\n\n');
143
+ lines.push(plan);
144
+ lines.push('\n\n---\n');
145
+ lines.push('Ready to exit plan mode and begin implementation.\n');
146
+ lines.push('Waiting for user approval...\n');
147
+ return lines.join('');
148
+ }
149
+ }
150
+ //# sourceMappingURL=ExitPlanModeTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ExitPlanModeTool.js","sourceRoot":"","sources":["../../../src/implementations/ui/ExitPlanModeTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Split-Tool Todo Executors — TodoCreate, TodoUpdate, TodoList
3
+ *
4
+ * Three targeted tools matching the TaskCreate/TaskUpdate/TaskList.
5
+ * Key design decisions:
6
+ * - TodoCreate/TodoUpdate return ONLY the affected task (compact output)
7
+ * - TodoList returns the full list (use it when you need the overview)
8
+ * - TodoUpdate accepts multiple taskIds for batch status changes
9
+ * - Shared in-memory state via module-level Map
10
+ */
11
+ import { BaseTool, type ToolResult } from '../../base/index.js';
12
+ import type { ExecutorConfig } from '../../base/ToolRegistry.js';
13
+ export type TodoStatus = 'pending' | 'in_progress' | 'completed';
14
+ export interface TodoItem {
15
+ id: string;
16
+ content: string;
17
+ description: string;
18
+ activeForm: string;
19
+ status: TodoStatus;
20
+ createdAt: number;
21
+ updatedAt: number;
22
+ }
23
+ /** Reset state (for testing) */
24
+ export declare function resetTodoState(): void;
25
+ /** Get current todos (for SystemReminderInjector) */
26
+ export declare function getCurrentTodos(): TodoItem[];
27
+ export interface TodoCreateParams {
28
+ content: string;
29
+ description?: string;
30
+ activeForm?: string;
31
+ }
32
+ export declare class TodoCreateTool extends BaseTool<TodoCreateParams, ToolResult> {
33
+ constructor(config: ExecutorConfig);
34
+ validateToolParams(params: TodoCreateParams): string | null;
35
+ getDescription(params: TodoCreateParams): string;
36
+ execute(params: TodoCreateParams, signal: AbortSignal): Promise<ToolResult>;
37
+ }
38
+ export interface TodoUpdateParams {
39
+ taskId: string;
40
+ status?: TodoStatus;
41
+ content?: string;
42
+ description?: string;
43
+ activeForm?: string;
44
+ }
45
+ export declare class TodoUpdateTool extends BaseTool<TodoUpdateParams, ToolResult> {
46
+ constructor(config: ExecutorConfig);
47
+ validateToolParams(params: TodoUpdateParams): string | null;
48
+ getDescription(params: TodoUpdateParams): string;
49
+ execute(params: TodoUpdateParams, signal: AbortSignal): Promise<ToolResult>;
50
+ }
51
+ export interface TodoListParams {
52
+ }
53
+ export declare class TodoListTool extends BaseTool<TodoListParams, ToolResult> {
54
+ constructor(config: ExecutorConfig);
55
+ validateToolParams(_params: TodoListParams): string | null;
56
+ getDescription(_params: TodoListParams): string;
57
+ execute(_params: TodoListParams, signal: AbortSignal): Promise<ToolResult>;
58
+ }
59
+ //# sourceMappingURL=TodoWriteTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TodoWriteTool.d.ts","sourceRoot":"","sources":["../../../src/implementations/ui/TodoWriteTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAIjE,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,CAAC;AAEjE,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAOD,gCAAgC;AAChC,wBAAgB,cAAc,IAAI,IAAI,CAGrC;AAED,qDAAqD;AACrD,wBAAgB,eAAe,IAAI,QAAQ,EAAE,CAI5C;AAyCD,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAe,SAAQ,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;gBAC5D,MAAM,EAAE,cAAc;IAiClC,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI;IAO3D,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAI1C,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC;CA6CvB;AAID,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,UAAU,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,qBAAa,cAAe,SAAQ,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC;gBAC5D,MAAM,EAAE,cAAc;IA2ClC,kBAAkB,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM,GAAG,IAAI;IAa3D,cAAc,CAAC,MAAM,EAAE,gBAAgB,GAAG,MAAM;IAO1C,OAAO,CACX,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC;CAgHvB;AAID,MAAM,WAAW,cAAc;CAE9B;AAED,qBAAa,YAAa,SAAQ,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC;gBACxD,MAAM,EAAE,cAAc;IAalC,kBAAkB,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM,GAAG,IAAI;IAI1D,cAAc,CAAC,OAAO,EAAE,cAAc,GAAG,MAAM;IAIzC,OAAO,CACX,OAAO,EAAE,cAAc,EACvB,MAAM,EAAE,WAAW,GAClB,OAAO,CAAC,UAAU,CAAC;CA2BvB"}