agent-nuvira 1.14.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 (379) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +891 -0
  3. package/dist/agent-sdk/src/agent.d.ts +118 -0
  4. package/dist/agent-sdk/src/agent.d.ts.map +1 -0
  5. package/dist/agent-sdk/src/agent.js +88 -0
  6. package/dist/agent-sdk/src/agent.js.map +1 -0
  7. package/dist/agent-sdk/src/index.d.ts +33 -0
  8. package/dist/agent-sdk/src/index.d.ts.map +1 -0
  9. package/dist/agent-sdk/src/index.js +32 -0
  10. package/dist/agent-sdk/src/index.js.map +1 -0
  11. package/dist/agent-sdk/src/register.d.ts +70 -0
  12. package/dist/agent-sdk/src/register.d.ts.map +1 -0
  13. package/dist/agent-sdk/src/register.js +181 -0
  14. package/dist/agent-sdk/src/register.js.map +1 -0
  15. package/dist/agent-sdk/src/scaffold.d.ts +50 -0
  16. package/dist/agent-sdk/src/scaffold.d.ts.map +1 -0
  17. package/dist/agent-sdk/src/scaffold.js +291 -0
  18. package/dist/agent-sdk/src/scaffold.js.map +1 -0
  19. package/dist/agent-sdk/src/testing.d.ts +187 -0
  20. package/dist/agent-sdk/src/testing.d.ts.map +1 -0
  21. package/dist/agent-sdk/src/testing.js +243 -0
  22. package/dist/agent-sdk/src/testing.js.map +1 -0
  23. package/dist/agent-sdk/src/types.d.ts +202 -0
  24. package/dist/agent-sdk/src/types.d.ts.map +1 -0
  25. package/dist/agent-sdk/src/types.js +11 -0
  26. package/dist/agent-sdk/src/types.js.map +1 -0
  27. package/dist/agents/agent.d.ts +132 -0
  28. package/dist/agents/agent.d.ts.map +1 -0
  29. package/dist/agents/agent.js +19 -0
  30. package/dist/agents/agent.js.map +1 -0
  31. package/dist/agents/agents/context-gatherer.d.ts +42 -0
  32. package/dist/agents/agents/context-gatherer.d.ts.map +1 -0
  33. package/dist/agents/agents/context-gatherer.js +366 -0
  34. package/dist/agents/agents/context-gatherer.js.map +1 -0
  35. package/dist/agents/agents/debugger.d.ts +58 -0
  36. package/dist/agents/agents/debugger.d.ts.map +1 -0
  37. package/dist/agents/agents/debugger.js +257 -0
  38. package/dist/agents/agents/debugger.js.map +1 -0
  39. package/dist/agents/agents/git-agent.d.ts +34 -0
  40. package/dist/agents/agents/git-agent.d.ts.map +1 -0
  41. package/dist/agents/agents/git-agent.js +200 -0
  42. package/dist/agents/agents/git-agent.js.map +1 -0
  43. package/dist/agents/agents/github-release-agent.d.ts +65 -0
  44. package/dist/agents/agents/github-release-agent.d.ts.map +1 -0
  45. package/dist/agents/agents/github-release-agent.js +439 -0
  46. package/dist/agents/agents/github-release-agent.js.map +1 -0
  47. package/dist/agents/agents/package-agent.d.ts +33 -0
  48. package/dist/agents/agents/package-agent.d.ts.map +1 -0
  49. package/dist/agents/agents/package-agent.js +233 -0
  50. package/dist/agents/agents/package-agent.js.map +1 -0
  51. package/dist/agents/agents/planner.d.ts +26 -0
  52. package/dist/agents/agents/planner.d.ts.map +1 -0
  53. package/dist/agents/agents/planner.js +222 -0
  54. package/dist/agents/agents/planner.js.map +1 -0
  55. package/dist/agents/agents/reviewer.d.ts +34 -0
  56. package/dist/agents/agents/reviewer.d.ts.map +1 -0
  57. package/dist/agents/agents/reviewer.js +159 -0
  58. package/dist/agents/agents/reviewer.js.map +1 -0
  59. package/dist/agents/agents/runner.d.ts +73 -0
  60. package/dist/agents/agents/runner.d.ts.map +1 -0
  61. package/dist/agents/agents/runner.js +299 -0
  62. package/dist/agents/agents/runner.js.map +1 -0
  63. package/dist/agents/agents/security-agent.d.ts +33 -0
  64. package/dist/agents/agents/security-agent.d.ts.map +1 -0
  65. package/dist/agents/agents/security-agent.js +184 -0
  66. package/dist/agents/agents/security-agent.js.map +1 -0
  67. package/dist/agents/agents/tester.d.ts +96 -0
  68. package/dist/agents/agents/tester.d.ts.map +1 -0
  69. package/dist/agents/agents/tester.js +410 -0
  70. package/dist/agents/agents/tester.js.map +1 -0
  71. package/dist/agents/agents/writer.d.ts +51 -0
  72. package/dist/agents/agents/writer.d.ts.map +1 -0
  73. package/dist/agents/agents/writer.js +384 -0
  74. package/dist/agents/agents/writer.js.map +1 -0
  75. package/dist/agents/context-vault.d.ts +49 -0
  76. package/dist/agents/context-vault.d.ts.map +1 -0
  77. package/dist/agents/context-vault.js +134 -0
  78. package/dist/agents/context-vault.js.map +1 -0
  79. package/dist/agents/orchestrator.d.ts +97 -0
  80. package/dist/agents/orchestrator.d.ts.map +1 -0
  81. package/dist/agents/orchestrator.js +696 -0
  82. package/dist/agents/orchestrator.js.map +1 -0
  83. package/dist/agents/utils/file-tree.d.ts +28 -0
  84. package/dist/agents/utils/file-tree.d.ts.map +1 -0
  85. package/dist/agents/utils/file-tree.js +93 -0
  86. package/dist/agents/utils/file-tree.js.map +1 -0
  87. package/dist/cli/agent.d.ts +25 -0
  88. package/dist/cli/agent.d.ts.map +1 -0
  89. package/dist/cli/agent.js +374 -0
  90. package/dist/cli/agent.js.map +1 -0
  91. package/dist/cli/benchmark.d.ts +24 -0
  92. package/dist/cli/benchmark.d.ts.map +1 -0
  93. package/dist/cli/benchmark.js +235 -0
  94. package/dist/cli/benchmark.js.map +1 -0
  95. package/dist/cli/cache.d.ts +12 -0
  96. package/dist/cli/cache.d.ts.map +1 -0
  97. package/dist/cli/cache.js +58 -0
  98. package/dist/cli/cache.js.map +1 -0
  99. package/dist/cli/chat.d.ts +37 -0
  100. package/dist/cli/chat.d.ts.map +1 -0
  101. package/dist/cli/chat.js +393 -0
  102. package/dist/cli/chat.js.map +1 -0
  103. package/dist/cli/commands.d.ts +24 -0
  104. package/dist/cli/commands.d.ts.map +1 -0
  105. package/dist/cli/commands.js +18 -0
  106. package/dist/cli/commands.js.map +1 -0
  107. package/dist/cli/config.d.ts +19 -0
  108. package/dist/cli/config.d.ts.map +1 -0
  109. package/dist/cli/config.js +162 -0
  110. package/dist/cli/config.js.map +1 -0
  111. package/dist/cli/dashboard.d.ts +34 -0
  112. package/dist/cli/dashboard.d.ts.map +1 -0
  113. package/dist/cli/dashboard.js +126 -0
  114. package/dist/cli/dashboard.js.map +1 -0
  115. package/dist/cli/doctor.d.ts +68 -0
  116. package/dist/cli/doctor.d.ts.map +1 -0
  117. package/dist/cli/doctor.js +585 -0
  118. package/dist/cli/doctor.js.map +1 -0
  119. package/dist/cli/edit.d.ts +11 -0
  120. package/dist/cli/edit.d.ts.map +1 -0
  121. package/dist/cli/edit.js +86 -0
  122. package/dist/cli/edit.js.map +1 -0
  123. package/dist/cli/execute.d.ts +25 -0
  124. package/dist/cli/execute.d.ts.map +1 -0
  125. package/dist/cli/execute.js +186 -0
  126. package/dist/cli/execute.js.map +1 -0
  127. package/dist/cli/federation.d.ts +31 -0
  128. package/dist/cli/federation.d.ts.map +1 -0
  129. package/dist/cli/federation.js +387 -0
  130. package/dist/cli/federation.js.map +1 -0
  131. package/dist/cli/history.d.ts +22 -0
  132. package/dist/cli/history.d.ts.map +1 -0
  133. package/dist/cli/history.js +140 -0
  134. package/dist/cli/history.js.map +1 -0
  135. package/dist/cli/init.d.ts +49 -0
  136. package/dist/cli/init.d.ts.map +1 -0
  137. package/dist/cli/init.js +423 -0
  138. package/dist/cli/init.js.map +1 -0
  139. package/dist/cli/learn.d.ts +31 -0
  140. package/dist/cli/learn.d.ts.map +1 -0
  141. package/dist/cli/learn.js +320 -0
  142. package/dist/cli/learn.js.map +1 -0
  143. package/dist/cli/memory.d.ts +38 -0
  144. package/dist/cli/memory.d.ts.map +1 -0
  145. package/dist/cli/memory.js +295 -0
  146. package/dist/cli/memory.js.map +1 -0
  147. package/dist/cli/model-picker.d.ts +18 -0
  148. package/dist/cli/model-picker.d.ts.map +1 -0
  149. package/dist/cli/model-picker.js +225 -0
  150. package/dist/cli/model-picker.js.map +1 -0
  151. package/dist/cli/models.d.ts +11 -0
  152. package/dist/cli/models.d.ts.map +1 -0
  153. package/dist/cli/models.js +132 -0
  154. package/dist/cli/models.js.map +1 -0
  155. package/dist/cli/plan.d.ts +11 -0
  156. package/dist/cli/plan.d.ts.map +1 -0
  157. package/dist/cli/plan.js +94 -0
  158. package/dist/cli/plan.js.map +1 -0
  159. package/dist/cli/plugins.d.ts +15 -0
  160. package/dist/cli/plugins.d.ts.map +1 -0
  161. package/dist/cli/plugins.js +123 -0
  162. package/dist/cli/plugins.js.map +1 -0
  163. package/dist/cli/router.d.ts +20 -0
  164. package/dist/cli/router.d.ts.map +1 -0
  165. package/dist/cli/router.js +142 -0
  166. package/dist/cli/router.js.map +1 -0
  167. package/dist/cli/run.d.ts +22 -0
  168. package/dist/cli/run.d.ts.map +1 -0
  169. package/dist/cli/run.js +110 -0
  170. package/dist/cli/run.js.map +1 -0
  171. package/dist/cli/sandbox.d.ts +27 -0
  172. package/dist/cli/sandbox.d.ts.map +1 -0
  173. package/dist/cli/sandbox.js +264 -0
  174. package/dist/cli/sandbox.js.map +1 -0
  175. package/dist/cli/sdk.d.ts +27 -0
  176. package/dist/cli/sdk.d.ts.map +1 -0
  177. package/dist/cli/sdk.js +204 -0
  178. package/dist/cli/sdk.js.map +1 -0
  179. package/dist/cli/stats.d.ts +18 -0
  180. package/dist/cli/stats.d.ts.map +1 -0
  181. package/dist/cli/stats.js +78 -0
  182. package/dist/cli/stats.js.map +1 -0
  183. package/dist/cli/team.d.ts +42 -0
  184. package/dist/cli/team.d.ts.map +1 -0
  185. package/dist/cli/team.js +473 -0
  186. package/dist/cli/team.js.map +1 -0
  187. package/dist/cli/workflow.d.ts +27 -0
  188. package/dist/cli/workflow.d.ts.map +1 -0
  189. package/dist/cli/workflow.js +347 -0
  190. package/dist/cli/workflow.js.map +1 -0
  191. package/dist/config/manager.d.ts +37 -0
  192. package/dist/config/manager.d.ts.map +1 -0
  193. package/dist/config/manager.js +147 -0
  194. package/dist/config/manager.js.map +1 -0
  195. package/dist/config/types.d.ts +53 -0
  196. package/dist/config/types.d.ts.map +1 -0
  197. package/dist/config/types.js +2 -0
  198. package/dist/config/types.js.map +1 -0
  199. package/dist/context/cache.d.ts +27 -0
  200. package/dist/context/cache.d.ts.map +1 -0
  201. package/dist/context/cache.js +116 -0
  202. package/dist/context/cache.js.map +1 -0
  203. package/dist/context/history.d.ts +87 -0
  204. package/dist/context/history.d.ts.map +1 -0
  205. package/dist/context/history.js +249 -0
  206. package/dist/context/history.js.map +1 -0
  207. package/dist/context/parser.d.ts +61 -0
  208. package/dist/context/parser.d.ts.map +1 -0
  209. package/dist/context/parser.js +194 -0
  210. package/dist/context/parser.js.map +1 -0
  211. package/dist/federation/client.d.ts +49 -0
  212. package/dist/federation/client.d.ts.map +1 -0
  213. package/dist/federation/client.js +239 -0
  214. package/dist/federation/client.js.map +1 -0
  215. package/dist/federation/protocol.d.ts +155 -0
  216. package/dist/federation/protocol.d.ts.map +1 -0
  217. package/dist/federation/protocol.js +57 -0
  218. package/dist/federation/protocol.js.map +1 -0
  219. package/dist/federation/server.d.ts +25 -0
  220. package/dist/federation/server.d.ts.map +1 -0
  221. package/dist/federation/server.js +401 -0
  222. package/dist/federation/server.js.map +1 -0
  223. package/dist/index.d.ts +67 -0
  224. package/dist/index.d.ts.map +1 -0
  225. package/dist/index.js +93 -0
  226. package/dist/index.js.map +1 -0
  227. package/dist/inference/factory.d.ts +20 -0
  228. package/dist/inference/factory.d.ts.map +1 -0
  229. package/dist/inference/factory.js +46 -0
  230. package/dist/inference/factory.js.map +1 -0
  231. package/dist/inference/gemini-adapter.d.ts +17 -0
  232. package/dist/inference/gemini-adapter.d.ts.map +1 -0
  233. package/dist/inference/gemini-adapter.js +176 -0
  234. package/dist/inference/gemini-adapter.js.map +1 -0
  235. package/dist/inference/groq-adapter.d.ts +17 -0
  236. package/dist/inference/groq-adapter.d.ts.map +1 -0
  237. package/dist/inference/groq-adapter.js +103 -0
  238. package/dist/inference/groq-adapter.js.map +1 -0
  239. package/dist/inference/interface.d.ts +49 -0
  240. package/dist/inference/interface.d.ts.map +1 -0
  241. package/dist/inference/interface.js +2 -0
  242. package/dist/inference/interface.js.map +1 -0
  243. package/dist/inference/local-adapter.d.ts +35 -0
  244. package/dist/inference/local-adapter.d.ts.map +1 -0
  245. package/dist/inference/local-adapter.js +311 -0
  246. package/dist/inference/local-adapter.js.map +1 -0
  247. package/dist/inference/model-catalog.d.ts +53 -0
  248. package/dist/inference/model-catalog.d.ts.map +1 -0
  249. package/dist/inference/model-catalog.js +306 -0
  250. package/dist/inference/model-catalog.js.map +1 -0
  251. package/dist/inference/nim-adapter.d.ts +17 -0
  252. package/dist/inference/nim-adapter.d.ts.map +1 -0
  253. package/dist/inference/nim-adapter.js +103 -0
  254. package/dist/inference/nim-adapter.js.map +1 -0
  255. package/dist/inference/openrouter-adapter.d.ts +17 -0
  256. package/dist/inference/openrouter-adapter.d.ts.map +1 -0
  257. package/dist/inference/openrouter-adapter.js +105 -0
  258. package/dist/inference/openrouter-adapter.js.map +1 -0
  259. package/dist/inference/sse.d.ts +20 -0
  260. package/dist/inference/sse.d.ts.map +1 -0
  261. package/dist/inference/sse.js +91 -0
  262. package/dist/inference/sse.js.map +1 -0
  263. package/dist/learning/agent-stats.d.ts +109 -0
  264. package/dist/learning/agent-stats.d.ts.map +1 -0
  265. package/dist/learning/agent-stats.js +240 -0
  266. package/dist/learning/agent-stats.js.map +1 -0
  267. package/dist/learning/benchmark.d.ts +161 -0
  268. package/dist/learning/benchmark.d.ts.map +1 -0
  269. package/dist/learning/benchmark.js +589 -0
  270. package/dist/learning/benchmark.js.map +1 -0
  271. package/dist/learning/cost-tracker.d.ts +101 -0
  272. package/dist/learning/cost-tracker.d.ts.map +1 -0
  273. package/dist/learning/cost-tracker.js +224 -0
  274. package/dist/learning/cost-tracker.js.map +1 -0
  275. package/dist/learning/feedback.d.ts +88 -0
  276. package/dist/learning/feedback.d.ts.map +1 -0
  277. package/dist/learning/feedback.js +169 -0
  278. package/dist/learning/feedback.js.map +1 -0
  279. package/dist/learning/hybrid-router.d.ts +201 -0
  280. package/dist/learning/hybrid-router.d.ts.map +1 -0
  281. package/dist/learning/hybrid-router.js +450 -0
  282. package/dist/learning/hybrid-router.js.map +1 -0
  283. package/dist/learning/model-compare.d.ts +76 -0
  284. package/dist/learning/model-compare.d.ts.map +1 -0
  285. package/dist/learning/model-compare.js +252 -0
  286. package/dist/learning/model-compare.js.map +1 -0
  287. package/dist/learning/model-router.d.ts +68 -0
  288. package/dist/learning/model-router.d.ts.map +1 -0
  289. package/dist/learning/model-router.js +140 -0
  290. package/dist/learning/model-router.js.map +1 -0
  291. package/dist/learning/pattern-extractor.d.ts +99 -0
  292. package/dist/learning/pattern-extractor.d.ts.map +1 -0
  293. package/dist/learning/pattern-extractor.js +310 -0
  294. package/dist/learning/pattern-extractor.js.map +1 -0
  295. package/dist/learning/scorer.d.ts +51 -0
  296. package/dist/learning/scorer.d.ts.map +1 -0
  297. package/dist/learning/scorer.js +64 -0
  298. package/dist/learning/scorer.js.map +1 -0
  299. package/dist/learning/self-improver.d.ts +48 -0
  300. package/dist/learning/self-improver.d.ts.map +1 -0
  301. package/dist/learning/self-improver.js +161 -0
  302. package/dist/learning/self-improver.js.map +1 -0
  303. package/dist/memory/embedder.d.ts +65 -0
  304. package/dist/memory/embedder.d.ts.map +1 -0
  305. package/dist/memory/embedder.js +424 -0
  306. package/dist/memory/embedder.js.map +1 -0
  307. package/dist/memory/memory-integration.d.ts +56 -0
  308. package/dist/memory/memory-integration.d.ts.map +1 -0
  309. package/dist/memory/memory-integration.js +95 -0
  310. package/dist/memory/memory-integration.js.map +1 -0
  311. package/dist/memory/trajectory-store.d.ts +149 -0
  312. package/dist/memory/trajectory-store.d.ts.map +1 -0
  313. package/dist/memory/trajectory-store.js +476 -0
  314. package/dist/memory/trajectory-store.js.map +1 -0
  315. package/dist/memory/vector-store.d.ts +78 -0
  316. package/dist/memory/vector-store.d.ts.map +1 -0
  317. package/dist/memory/vector-store.js +186 -0
  318. package/dist/memory/vector-store.js.map +1 -0
  319. package/dist/plugins/agent-plugin.d.ts +73 -0
  320. package/dist/plugins/agent-plugin.d.ts.map +1 -0
  321. package/dist/plugins/agent-plugin.js +199 -0
  322. package/dist/plugins/agent-plugin.js.map +1 -0
  323. package/dist/plugins/registry.d.ts +61 -0
  324. package/dist/plugins/registry.d.ts.map +1 -0
  325. package/dist/plugins/registry.js +67 -0
  326. package/dist/plugins/registry.js.map +1 -0
  327. package/dist/sandbox/images.d.ts +31 -0
  328. package/dist/sandbox/images.d.ts.map +1 -0
  329. package/dist/sandbox/images.js +129 -0
  330. package/dist/sandbox/images.js.map +1 -0
  331. package/dist/sandbox/manager.d.ts +134 -0
  332. package/dist/sandbox/manager.d.ts.map +1 -0
  333. package/dist/sandbox/manager.js +470 -0
  334. package/dist/sandbox/manager.js.map +1 -0
  335. package/dist/sandbox/types.d.ts +113 -0
  336. package/dist/sandbox/types.d.ts.map +1 -0
  337. package/dist/sandbox/types.js +107 -0
  338. package/dist/sandbox/types.js.map +1 -0
  339. package/dist/security/scanner.d.ts +53 -0
  340. package/dist/security/scanner.d.ts.map +1 -0
  341. package/dist/security/scanner.js +271 -0
  342. package/dist/security/scanner.js.map +1 -0
  343. package/dist/team/config.d.ts +50 -0
  344. package/dist/team/config.d.ts.map +1 -0
  345. package/dist/team/config.js +108 -0
  346. package/dist/team/config.js.map +1 -0
  347. package/dist/team/memory.d.ts +63 -0
  348. package/dist/team/memory.d.ts.map +1 -0
  349. package/dist/team/memory.js +282 -0
  350. package/dist/team/memory.js.map +1 -0
  351. package/dist/team/review.d.ts +123 -0
  352. package/dist/team/review.d.ts.map +1 -0
  353. package/dist/team/review.js +293 -0
  354. package/dist/team/review.js.map +1 -0
  355. package/dist/utils/env.d.ts +19 -0
  356. package/dist/utils/env.d.ts.map +1 -0
  357. package/dist/utils/env.js +250 -0
  358. package/dist/utils/env.js.map +1 -0
  359. package/dist/utils/logger.d.ts +11 -0
  360. package/dist/utils/logger.d.ts.map +1 -0
  361. package/dist/utils/logger.js +45 -0
  362. package/dist/utils/logger.js.map +1 -0
  363. package/dist/web-dashboard/server.d.ts +59 -0
  364. package/dist/web-dashboard/server.d.ts.map +1 -0
  365. package/dist/web-dashboard/server.js +418 -0
  366. package/dist/web-dashboard/server.js.map +1 -0
  367. package/dist/workflow/registry.d.ts +127 -0
  368. package/dist/workflow/registry.d.ts.map +1 -0
  369. package/dist/workflow/registry.js +482 -0
  370. package/dist/workflow/registry.js.map +1 -0
  371. package/dist/workflow/templates.d.ts +93 -0
  372. package/dist/workflow/templates.d.ts.map +1 -0
  373. package/dist/workflow/templates.js +481 -0
  374. package/dist/workflow/templates.js.map +1 -0
  375. package/package.json +78 -0
  376. package/src/web-dashboard/public/assets/index-B08nDkSB.css +1 -0
  377. package/src/web-dashboard/public/assets/index-BKL8YOFD.js +135 -0
  378. package/src/web-dashboard/public/assets/index-BKL8YOFD.js.map +1 -0
  379. package/src/web-dashboard/public/index.html +13 -0
@@ -0,0 +1,110 @@
1
+ /**
2
+ * Run command โ€” Execute a shell command directly using the RunnerAgent.
3
+ *
4
+ * This is a lightweight shortcut that bypasses the multi-agent pipeline
5
+ * and runs a command immediately, showing stdout/stderr output.
6
+ *
7
+ * Usage:
8
+ * buff run "echo hello world"
9
+ * buff run "npm test" --verbose
10
+ * buff run "python hello.py" --timeout 30000
11
+ * buff run "node index.js" --provider groq --model "llama-3.1-8b-instant"
12
+ */
13
+ import { Command } from 'commander';
14
+ import { BaseCommand } from './commands.js';
15
+ import { RunnerAgent } from '../agents/agents/runner.js';
16
+ import { logger } from '../utils/logger.js';
17
+ /**
18
+ * Run command โ€” lightweight shell command execution via RunnerAgent.
19
+ */
20
+ export class RunCommand extends BaseCommand {
21
+ create() {
22
+ const command = new Command('run')
23
+ .description('Execute a shell command and show output (lightweight alternative to the full pipeline)')
24
+ .argument('<command>', 'The shell command to execute (wrap in quotes if it contains spaces)')
25
+ .option('-t, --timeout <ms>', 'Command timeout in milliseconds', parseInt, 120_000)
26
+ .option('-v, --verbose', 'Show detailed execution info', false)
27
+ .action(async (command, options) => {
28
+ await this.execute(command, options || {});
29
+ });
30
+ return command;
31
+ }
32
+ async execute(command, options) {
33
+ // โ”€โ”€ Setup โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
34
+ if (options.verbose) {
35
+ logger.info(`Command: ${command}`);
36
+ console.log('');
37
+ }
38
+ // โ”€โ”€ Build minimal agent context โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
39
+ // The RunnerAgent expects a taskPlan with a 'runner' step so it can
40
+ // extract the command from the task description using its determineCommand logic.
41
+ // We pass the command as the description with "Run:" prefix for direct execution.
42
+ const context = {
43
+ goal: command,
44
+ workingDirectory: process.cwd(),
45
+ taskPlan: [
46
+ {
47
+ id: 'step-1',
48
+ description: `Run: ${command}`,
49
+ agentType: 'runner',
50
+ dependsOn: [],
51
+ status: 'running',
52
+ },
53
+ ],
54
+ artifacts: [],
55
+ conversations: [],
56
+ fileChanges: [],
57
+ metadata: {
58
+ runnerTimeout: options.timeout,
59
+ },
60
+ };
61
+ // โ”€โ”€ Execute via RunnerAgent โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
62
+ const runner = new RunnerAgent();
63
+ try {
64
+ const startTime = Date.now();
65
+ const result = await runner.execute(context, async () => {
66
+ // No LLM fallback needed โ€” the "Run:" prefix in the task description
67
+ // is used directly by determineCommand. This mock is never called.
68
+ throw new Error('Unexpected LLM call in run command');
69
+ });
70
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
71
+ // โ”€โ”€ Display Results โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
72
+ const runResult = context.metadata['runResult'];
73
+ // Header
74
+ const statusIcon = result.success ? 'โœ…' : 'โŒ';
75
+ logger.highlight(`${'โ•'.repeat(60)}`);
76
+ logger.highlight(` ${statusIcon} Run Result โ€” ${elapsed}s`);
77
+ logger.highlight(`${'โ•'.repeat(60)}`);
78
+ console.log(`\n $ ${command}`);
79
+ console.log(` Exit code: ${runResult?.exitCode ?? '?'} | Duration: ${elapsed}s`);
80
+ // Show stdout (always)
81
+ if (runResult?.stdout) {
82
+ console.log('');
83
+ // Print stdout directly (not indented) for cleaner display
84
+ process.stdout.write(runResult.stdout);
85
+ if (!runResult.stdout.endsWith('\n'))
86
+ console.log('');
87
+ }
88
+ // Show stderr if there was an error
89
+ if (runResult?.stderr && runResult.exitCode !== 0) {
90
+ console.log('');
91
+ logger.error('stderr:');
92
+ process.stderr.write(runResult.stderr);
93
+ if (!runResult.stderr.endsWith('\n'))
94
+ console.log('');
95
+ }
96
+ // Error message
97
+ if (result.error) {
98
+ console.log('');
99
+ logger.error(`Error: ${result.error}`);
100
+ }
101
+ console.log('');
102
+ logger.highlight(`${'โ•'.repeat(60)}`);
103
+ console.log('');
104
+ }
105
+ catch (err) {
106
+ logger.error(`Run failed: ${err instanceof Error ? err.message : String(err)}`);
107
+ }
108
+ }
109
+ }
110
+ //# sourceMappingURL=run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/cli/run.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Sandbox command โ€” Manage Docker sandbox isolation for code execution.
3
+ *
4
+ * Usage:
5
+ * buff sandbox status โ€” Check if Docker is available
6
+ * buff sandbox config โ€” Show current sandbox config
7
+ * buff sandbox config --enable โ€” Enable Docker sandbox mode
8
+ * buff sandbox config --disable โ€” Disable Docker sandbox mode
9
+ * buff sandbox config --memory 2g โ€” Set memory limit
10
+ * buff sandbox config --cpu 2 โ€” Set CPU limit
11
+ * buff sandbox config --network โ€” Enable network access
12
+ * buff sandbox config --image python:3.12-slim โ€” Set sandbox image
13
+ * buff sandbox images โ€” List available pre-defined images
14
+ * buff sandbox run <command> โ€” Run a command inside a sandbox container
15
+ * buff sandbox cleanup โ€” Destroy all active sandbox containers
16
+ */
17
+ import { Command } from 'commander';
18
+ import { BaseCommand } from './commands.js';
19
+ export declare class SandboxCommand extends BaseCommand {
20
+ create(): Command;
21
+ private showStatus;
22
+ private manageConfig;
23
+ private listImages;
24
+ private runInSandbox;
25
+ private cleanupAll;
26
+ }
27
+ //# sourceMappingURL=sandbox.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.d.ts","sourceRoot":"","sources":["../../src/cli/sandbox.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAa5C,qBAAa,cAAe,SAAQ,WAAW;IAC7C,MAAM,IAAI,OAAO;YA8EH,UAAU;YAgDV,YAAY;IAqE1B,OAAO,CAAC,UAAU;YAmBJ,YAAY;YA6EZ,UAAU;CAazB"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Sandbox command โ€” Manage Docker sandbox isolation for code execution.
3
+ *
4
+ * Usage:
5
+ * buff sandbox status โ€” Check if Docker is available
6
+ * buff sandbox config โ€” Show current sandbox config
7
+ * buff sandbox config --enable โ€” Enable Docker sandbox mode
8
+ * buff sandbox config --disable โ€” Disable Docker sandbox mode
9
+ * buff sandbox config --memory 2g โ€” Set memory limit
10
+ * buff sandbox config --cpu 2 โ€” Set CPU limit
11
+ * buff sandbox config --network โ€” Enable network access
12
+ * buff sandbox config --image python:3.12-slim โ€” Set sandbox image
13
+ * buff sandbox images โ€” List available pre-defined images
14
+ * buff sandbox run <command> โ€” Run a command inside a sandbox container
15
+ * buff sandbox cleanup โ€” Destroy all active sandbox containers
16
+ */
17
+ import { Command } from 'commander';
18
+ import { BaseCommand } from './commands.js';
19
+ import { logger } from '../utils/logger.js';
20
+ import { getSandboxManager } from '../sandbox/manager.js';
21
+ import { getSandboxConfig, setSandboxConfig, DEFAULT_RESOURCE_LIMITS, } from '../sandbox/types.js';
22
+ import { BUILTIN_SANDBOX_IMAGES } from '../sandbox/images.js';
23
+ export class SandboxCommand extends BaseCommand {
24
+ create() {
25
+ const command = new Command('sandbox')
26
+ .description('Manage Docker sandbox isolation for code execution');
27
+ // โ”€โ”€ status โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
28
+ command
29
+ .command('status')
30
+ .description('Check Docker availability and sandbox status')
31
+ .action(async () => {
32
+ await this.showStatus();
33
+ });
34
+ // โ”€โ”€ config โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
35
+ command
36
+ .command('config')
37
+ .description('Show or update sandbox configuration')
38
+ .option('--enable', 'Enable Docker sandbox mode')
39
+ .option('--disable', 'Disable Docker sandbox mode')
40
+ .option('--memory <limit>', 'Set memory limit (e.g., 512m, 2g)')
41
+ .option('--cpu <count>', 'Set CPU limit', parseFloat)
42
+ .option('--disk <limit>', 'Set disk limit (e.g., 1g, 10g)')
43
+ .option('--timeout <ms>', 'Set command timeout in milliseconds', parseInt)
44
+ .option('--network', 'Enable network access in containers')
45
+ .option('--image <image>', 'Set sandbox Docker image')
46
+ .action(async (options) => {
47
+ await this.manageConfig(options || {});
48
+ });
49
+ // โ”€โ”€ images โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
50
+ command
51
+ .command('images')
52
+ .description('List available pre-defined sandbox images')
53
+ .action(() => {
54
+ this.listImages();
55
+ });
56
+ // โ”€โ”€ run โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
57
+ command
58
+ .command('run')
59
+ .description('Run a command inside a new sandbox container')
60
+ .argument('<command>', 'Command to execute inside the sandbox')
61
+ .option('--image <image>', 'Docker image to use')
62
+ .option('--memory <limit>', 'Memory limit (e.g., 512m)')
63
+ .option('--cpu <count>', 'CPU limit', parseFloat)
64
+ .option('--timeout <ms>', 'Command timeout', parseInt)
65
+ .option('--network', 'Enable network access')
66
+ .option('--project <path>', 'Project directory to mount (default: current dir)')
67
+ .action(async (command, options) => {
68
+ await this.runInSandbox(command, options || {});
69
+ });
70
+ // โ”€โ”€ cleanup โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€
71
+ command
72
+ .command('cleanup')
73
+ .description('Destroy all active sandbox containers')
74
+ .action(async () => {
75
+ await this.cleanupAll();
76
+ });
77
+ return command;
78
+ }
79
+ async showStatus() {
80
+ const manager = getSandboxManager();
81
+ const available = await manager.isDockerAvailable();
82
+ const config = getSandboxConfig();
83
+ logger.highlight('โ•'.repeat(60));
84
+ logger.highlight(' ๐Ÿณ Sandbox Status');
85
+ logger.highlight('โ•'.repeat(60));
86
+ console.log('');
87
+ // Docker availability
88
+ const dockerIcon = available ? 'โœ…' : 'โŒ';
89
+ console.log(` ${dockerIcon} Docker: ${available ? 'Available' : 'Not available'}`);
90
+ if (!available) {
91
+ const error = manager.getDockerError();
92
+ if (error)
93
+ console.log(` Error: ${error}`);
94
+ }
95
+ // Sandbox mode
96
+ const modeIcon = config.enabled ? 'โœ…' : 'โธ๏ธ';
97
+ console.log(` ${modeIcon} Sandbox mode: ${config.enabled ? 'Enabled' : 'Disabled'}`);
98
+ // Resource limits
99
+ console.log(`\n ๐Ÿ“ฆ Resource Limits:`);
100
+ console.log(` Memory: ${config.limits.memoryLimit}`);
101
+ console.log(` CPU: ${config.limits.cpuLimit} core(s)`);
102
+ console.log(` Disk: ${config.limits.diskLimit}`);
103
+ console.log(` PIDs: ${config.limits.pidsLimit}`);
104
+ console.log(` Network: ${config.limits.networkAccess ? 'Enabled' : 'Disabled'}`);
105
+ console.log(` Timeout: ${(config.limits.timeoutMs / 1000).toFixed(0)}s`);
106
+ // Image
107
+ console.log(`\n ๐Ÿ–ผ๏ธ Default image: ${config.image.image} (${config.image.label})`);
108
+ // Active containers
109
+ const containers = manager.getManagedContainers();
110
+ if (containers.length > 0) {
111
+ console.log(`\n ๐Ÿ”— Active containers: ${containers.length}`);
112
+ for (const c of containers) {
113
+ console.log(` ${c.name} (${c.image}) โ€” ${c.status}`);
114
+ }
115
+ }
116
+ console.log('');
117
+ logger.highlight('โ•'.repeat(60));
118
+ console.log('');
119
+ }
120
+ async manageConfig(options) {
121
+ const updates = {};
122
+ const limits = { ...DEFAULT_RESOURCE_LIMITS };
123
+ if (options.enable)
124
+ updates.enabled = true;
125
+ if (options.disable)
126
+ updates.enabled = false;
127
+ if (options.memory)
128
+ limits.memoryLimit = options.memory;
129
+ if (options.cpu !== undefined)
130
+ limits.cpuLimit = options.cpu;
131
+ if (options.disk)
132
+ limits.diskLimit = options.disk;
133
+ if (options.timeout !== undefined)
134
+ limits.timeoutMs = options.timeout;
135
+ if (options.network !== undefined)
136
+ limits.networkAccess = true;
137
+ const imageOption = options.image;
138
+ if (imageOption) {
139
+ // Try to find a matching built-in image
140
+ const builtin = BUILTIN_SANDBOX_IMAGES.find((img) => img.image === imageOption || img.label.toLowerCase().includes(imageOption.toLowerCase()));
141
+ if (builtin) {
142
+ updates.image = builtin;
143
+ }
144
+ else {
145
+ // Use a custom image
146
+ updates.image = {
147
+ image: imageOption,
148
+ label: imageOption,
149
+ runtimes: ['custom'],
150
+ shell: '/bin/bash',
151
+ };
152
+ }
153
+ }
154
+ // Apply resource limit updates
155
+ if (Object.keys(limits || {}).length > 0) {
156
+ updates.limits = limits;
157
+ }
158
+ if (Object.keys(updates).length === 0) {
159
+ // Just show current config
160
+ const config = getSandboxConfig();
161
+ logger.info('Current sandbox configuration:');
162
+ logger.info(` Enabled: ${config.enabled}`);
163
+ logger.info(` Memory: ${config.limits.memoryLimit}`);
164
+ logger.info(` CPU: ${config.limits.cpuLimit}`);
165
+ logger.info(` Disk: ${config.limits.diskLimit}`);
166
+ logger.info(` PIDs: ${config.limits.pidsLimit}`);
167
+ logger.info(` Network: ${config.limits.networkAccess}`);
168
+ logger.info(` Timeout: ${config.limits.timeoutMs}ms`);
169
+ logger.info(` Image: ${config.image.image} (${config.image.label})`);
170
+ logger.info(` Work dir: ${config.workDir}`);
171
+ logger.info(` Container user: ${config.containerUser}`);
172
+ return;
173
+ }
174
+ const updated = setSandboxConfig(updates);
175
+ logger.success('Sandbox configuration updated.');
176
+ logger.info(` Enabled: ${updated.enabled}`);
177
+ if (updates.limits)
178
+ logger.info(` Limits: memory=${updated.limits.memoryLimit}, cpu=${updated.limits.cpuLimit}, disk=${updated.limits.diskLimit}`);
179
+ if (updates.image)
180
+ logger.info(` Image: ${updated.image.image}`);
181
+ }
182
+ listImages() {
183
+ logger.highlight('โ•'.repeat(60));
184
+ logger.highlight(' ๐Ÿ–ผ๏ธ Available Sandbox Images');
185
+ logger.highlight('โ•'.repeat(60));
186
+ console.log('');
187
+ for (const img of BUILTIN_SANDBOX_IMAGES) {
188
+ console.log(` ${img.image}`);
189
+ console.log(` Label: ${img.label}`);
190
+ console.log(` Runtimes: ${img.runtimes.join(', ')}`);
191
+ console.log(` Install: ${img.installCommand || 'N/A'}`);
192
+ console.log(` Test: ${img.testCommand || 'N/A'}`);
193
+ console.log('');
194
+ }
195
+ console.log(' Configure: buff sandbox config --image <name>');
196
+ console.log('');
197
+ }
198
+ async runInSandbox(command, options) {
199
+ const manager = getSandboxManager();
200
+ const available = await manager.isDockerAvailable();
201
+ if (!available) {
202
+ logger.error(`Docker is not available. ${manager.getDockerError()}`);
203
+ logger.info('Install Docker Desktop: https://docs.docker.com/get-docker/');
204
+ return;
205
+ }
206
+ const projectDir = options.project || process.cwd();
207
+ try {
208
+ logger.info('๐Ÿณ Creating sandbox container...');
209
+ // Build resource limits from CLI options, filtering undefined values
210
+ const sandboxLimits = {};
211
+ if (options.memory)
212
+ sandboxLimits.memoryLimit = options.memory;
213
+ if (options.cpu !== undefined)
214
+ sandboxLimits.cpuLimit = options.cpu;
215
+ if (options.timeout !== undefined)
216
+ sandboxLimits.timeoutMs = options.timeout;
217
+ if (options.network)
218
+ sandboxLimits.networkAccess = true;
219
+ // Use provided image or default from config
220
+ const imageName = typeof options.image === 'string'
221
+ ? options.image
222
+ : getSandboxConfig().image.image;
223
+ const containerId = await manager.createContainer(imageName, Object.keys(sandboxLimits).length > 0 ? sandboxLimits : undefined);
224
+ logger.info(` Container: ${containerId.slice(0, 12)}...`);
225
+ // Copy project files if requested
226
+ if (options.project || true) {
227
+ logger.info(' Copying project files...');
228
+ await manager.copyProjectToContainer(containerId, projectDir);
229
+ }
230
+ logger.info(` Running: ${command}`);
231
+ console.log('');
232
+ const result = await manager.runCommand(containerId, command);
233
+ // Display result
234
+ if (result.stdout) {
235
+ console.log(result.stdout);
236
+ }
237
+ if (result.stderr) {
238
+ console.error(result.stderr);
239
+ }
240
+ if (result.timedOut) {
241
+ logger.warn(`Command timed out after ${(options.timeout || 600000) / 1000}s`);
242
+ }
243
+ logger.info(`Exit code: ${result.exitCode} | Duration: ${result.durationMs}ms`);
244
+ // Cleanup
245
+ logger.info('๐Ÿงน Cleaning up container...');
246
+ await manager.destroyContainer(containerId);
247
+ }
248
+ catch (err) {
249
+ logger.error(`Sandbox execution failed: ${err instanceof Error ? err.message : String(err)}`);
250
+ }
251
+ }
252
+ async cleanupAll() {
253
+ const manager = getSandboxManager();
254
+ const containers = manager.getManagedContainers();
255
+ if (containers.length === 0) {
256
+ logger.info('No active sandbox containers to clean up.');
257
+ return;
258
+ }
259
+ logger.info(`๐Ÿงน Cleaning up ${containers.length} sandbox container(s)...`);
260
+ await manager.destroyAll();
261
+ logger.success('All sandbox containers cleaned up.');
262
+ }
263
+ }
264
+ //# sourceMappingURL=sandbox.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sandbox.js","sourceRoot":"","sources":["../../src/cli/sandbox.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * SDK Command โ€” Create and manage custom agents with the Agent-Baba-D SDK.
3
+ *
4
+ * Usage:
5
+ * buff sdk scaffold <outDir> <agentName> [description] โ€” Generate a new agent project
6
+ * buff sdk scaffold --template basic-agent ... โ€” Use a minimal template
7
+ * buff sdk scaffold --template agent-pack ... โ€” Multi-agent package template
8
+ * buff sdk templates โ€” List available templates
9
+ * buff sdk info โ€” Show SDK package info
10
+ *
11
+ * The scaffold subcommand creates a complete, ready-to-extend agent package with:
12
+ * - TypeScript configuration
13
+ * - A custom agent class extending Agent
14
+ * - Unit tests using the SDK testing utilities
15
+ * - Package.json with build/test scripts
16
+ */
17
+ import { Command } from 'commander';
18
+ import { BaseCommand } from './commands.js';
19
+ export declare class SDKCommand extends BaseCommand {
20
+ create(): Command;
21
+ private handleScaffold;
22
+ private handleListTemplates;
23
+ private handleInfo;
24
+ private handleRegister;
25
+ private handleUnregister;
26
+ }
27
+ //# sourceMappingURL=sdk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk.d.ts","sourceRoot":"","sources":["../../src/cli/sdk.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,qBAAa,UAAW,SAAQ,WAAW;IACzC,MAAM,IAAI,OAAO;YAkEH,cAAc;IA6D5B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,UAAU;YAiBJ,cAAc;YA6Cd,gBAAgB;CAiB/B"}