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,129 @@
1
+ /**
2
+ * Sandbox images — Pre-defined Docker images for common programming languages.
3
+ *
4
+ * These are used as base images for sandbox containers. Each image definition
5
+ * includes the Docker image name, language/runtime details, and default
6
+ * install/test commands.
7
+ *
8
+ * Images are pulled on first use if not present locally.
9
+ */
10
+ import { existsSync } from 'node:fs';
11
+ import { join } from 'node:path';
12
+ /**
13
+ * Pre-defined sandbox images for common runtimes.
14
+ */
15
+ export const BUILTIN_SANDBOX_IMAGES = [
16
+ // ── Node.js ────────────────────────────────────────────────────────────
17
+ {
18
+ image: 'node:20-slim',
19
+ label: 'Node.js 20 (slim)',
20
+ runtimes: ['node', 'npm', 'npx'],
21
+ installCommand: 'npm install',
22
+ testCommand: 'npm test',
23
+ shell: '/bin/bash',
24
+ },
25
+ {
26
+ image: 'node:20',
27
+ label: 'Node.js 20 (full)',
28
+ runtimes: ['node', 'npm', 'npx'],
29
+ installCommand: 'npm install',
30
+ testCommand: 'npm test',
31
+ shell: '/bin/bash',
32
+ },
33
+ {
34
+ image: 'node:18-slim',
35
+ label: 'Node.js 18 (slim)',
36
+ runtimes: ['node', 'npm', 'npx'],
37
+ installCommand: 'npm install',
38
+ testCommand: 'npm test',
39
+ shell: '/bin/bash',
40
+ },
41
+ // ── Python ─────────────────────────────────────────────────────────────
42
+ {
43
+ image: 'python:3.12-slim',
44
+ label: 'Python 3.12 (slim)',
45
+ runtimes: ['python3', 'pip3'],
46
+ installCommand: 'pip install -r requirements.txt 2>/dev/null; pip install pytest 2>/dev/null',
47
+ testCommand: 'python -m pytest -v 2>&1 || python -m unittest discover 2>&1',
48
+ shell: '/bin/bash',
49
+ },
50
+ {
51
+ image: 'python:3.11-slim',
52
+ label: 'Python 3.11 (slim)',
53
+ runtimes: ['python3', 'pip3'],
54
+ installCommand: 'pip install -r requirements.txt 2>/dev/null; pip install pytest 2>/dev/null',
55
+ testCommand: 'python -m pytest -v 2>&1 || python -m unittest discover 2>&1',
56
+ shell: '/bin/bash',
57
+ },
58
+ // ── Go ─────────────────────────────────────────────────────────────────
59
+ {
60
+ image: 'golang:1.22',
61
+ label: 'Go 1.22',
62
+ runtimes: ['go'],
63
+ installCommand: 'go mod download 2>/dev/null',
64
+ testCommand: 'go test ./... 2>&1',
65
+ shell: '/bin/bash',
66
+ },
67
+ // ── Rust ───────────────────────────────────────────────────────────────
68
+ {
69
+ image: 'rust:1.77-slim',
70
+ label: 'Rust 1.77 (slim)',
71
+ runtimes: ['cargo', 'rustc'],
72
+ installCommand: 'cargo fetch 2>/dev/null',
73
+ testCommand: 'cargo test 2>&1',
74
+ shell: '/bin/bash',
75
+ },
76
+ // ── Universal (multi-runtime) ──────────────────────────────────────────
77
+ {
78
+ image: 'ubuntu:22.04',
79
+ label: 'Ubuntu 22.04 (universal)',
80
+ runtimes: ['bash', 'sh', 'apt-get'],
81
+ installCommand: 'apt-get update -qq && apt-get install -y -qq curl wget git 2>/dev/null',
82
+ testCommand: 'echo "No default test command for universal image"',
83
+ shell: '/bin/bash',
84
+ },
85
+ ];
86
+ /**
87
+ * Find a built-in sandbox image by language/runtime name (case-insensitive).
88
+ *
89
+ * Examples:
90
+ * resolveSandboxImage('node') → node:20-slim
91
+ * resolveSandboxImage('python') → python:3.12-slim
92
+ * resolveSandboxImage('go') → golang:1.22
93
+ * resolveSandboxImage('golang') → golang:1.22
94
+ * resolveSandboxImage('rust') → rust:1.77-slim
95
+ */
96
+ export function resolveSandboxImage(runtime) {
97
+ const normalized = runtime.toLowerCase().trim();
98
+ // Exact match on label
99
+ const byLabel = BUILTIN_SANDBOX_IMAGES.find((img) => img.label.toLowerCase().includes(normalized));
100
+ if (byLabel)
101
+ return byLabel;
102
+ // Match on runtimes
103
+ const byRuntime = BUILTIN_SANDBOX_IMAGES.find((img) => img.runtimes.some((r) => r.includes(normalized)));
104
+ if (byRuntime)
105
+ return byRuntime;
106
+ // Match on image name
107
+ const byImage = BUILTIN_SANDBOX_IMAGES.find((img) => img.image.toLowerCase().includes(normalized));
108
+ if (byImage)
109
+ return byImage;
110
+ return undefined;
111
+ }
112
+ /**
113
+ * Get the default sandbox image based on detected project type.
114
+ * Checks for common project files to determine runtime.
115
+ */
116
+ export function detectProjectImage(projectDir) {
117
+ // Check for common project files
118
+ if (existsSync(join(projectDir, 'package.json')))
119
+ return BUILTIN_SANDBOX_IMAGES[0]; // node:20-slim
120
+ if (existsSync(join(projectDir, 'requirements.txt')) || existsSync(join(projectDir, 'setup.py')) || existsSync(join(projectDir, 'Pipfile')))
121
+ return BUILTIN_SANDBOX_IMAGES[3]; // python:3.12-slim
122
+ if (existsSync(join(projectDir, 'go.mod')))
123
+ return BUILTIN_SANDBOX_IMAGES[5]; // golang:1.22
124
+ if (existsSync(join(projectDir, 'Cargo.toml')))
125
+ return BUILTIN_SANDBOX_IMAGES[6]; // rust:1.77-slim
126
+ // Fall back to Node.js (most common for agent-nuvira)
127
+ return BUILTIN_SANDBOX_IMAGES[0];
128
+ }
129
+ //# sourceMappingURL=images.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"images.js","sourceRoot":"","sources":["../../src/sandbox/images.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,134 @@
1
+ /**
2
+ * SandboxManager — Docker-based sandbox isolation for code execution.
3
+ *
4
+ * Provides:
5
+ * - Container lifecycle management (create, exec, destroy)
6
+ * - Resource limits (CPU, memory, disk, PIDs, network)
7
+ * - Volume/project mounting
8
+ * - Command execution with timeout enforcement
9
+ * - Non-root user execution
10
+ *
11
+ * Usage:
12
+ * ```ts
13
+ * const manager = new SandboxManager();
14
+ *
15
+ * // Check if Docker is available
16
+ * const available = await manager.isDockerAvailable();
17
+ *
18
+ * // Create a sandbox
19
+ * const containerId = await manager.createContainer('node:20-slim', {
20
+ * memoryLimit: '512m',
21
+ * cpuLimit: 1,
22
+ * networkAccess: false,
23
+ * });
24
+ *
25
+ * // Copy project, run commands
26
+ * await manager.copyProjectToContainer(containerId, '/path/to/project');
27
+ * const result = await manager.runCommand(containerId, 'npm test');
28
+ *
29
+ * // Always clean up
30
+ * await manager.destroyContainer(containerId);
31
+ * ```
32
+ */
33
+ import type { ResourceLimits, SandboxConfig, SandboxExecResult, ManagedContainer, ContainerStatus } from './types.js';
34
+ export declare class SandboxManager {
35
+ private config;
36
+ /** Managed containers tracked by this manager instance */
37
+ private containers;
38
+ /** Whether Docker availability has been checked */
39
+ private dockerChecked;
40
+ /** Cached result of Docker availability check */
41
+ private dockerAvailable;
42
+ /** Cached error message from Docker check */
43
+ private dockerError;
44
+ constructor(config?: SandboxConfig);
45
+ /**
46
+ * Check if Docker is installed and the daemon is running.
47
+ * Caches the result so repeated calls are instant.
48
+ */
49
+ isDockerAvailable(): Promise<boolean>;
50
+ /**
51
+ * Get the error message from the last Docker availability check.
52
+ */
53
+ getDockerError(): string;
54
+ /**
55
+ * Force re-check Docker availability on the next call.
56
+ */
57
+ resetDockerCheck(): void;
58
+ /**
59
+ * Create a Docker sandbox container with the given image and resource limits.
60
+ *
61
+ * @param image - Docker image to use (e.g., 'node:20-slim')
62
+ * @param limits - Resource limit overrides
63
+ * @param workDir - Working directory inside the container
64
+ * @returns The container ID
65
+ */
66
+ createContainer(image?: string, limits?: Partial<ResourceLimits>, workDir?: string): Promise<string>;
67
+ /**
68
+ * Copy project files (or a specific directory) into the sandbox container.
69
+ *
70
+ * Uses `docker cp` to copy files into the container's working directory.
71
+ *
72
+ * @param containerId - Container ID
73
+ * @param sourceDir - Source directory on the host
74
+ * @param targetDir - Target directory inside container (defaults to workDir)
75
+ */
76
+ copyProjectToContainer(containerId: string, sourceDir: string, targetDir?: string): Promise<void>;
77
+ /**
78
+ * Execute a command inside the sandbox container with timeout enforcement.
79
+ *
80
+ * @param containerId - Container ID
81
+ * @param command - Command to execute (as a string, passed to /bin/sh -c)
82
+ * @param timeoutMs - Timeout in milliseconds (default: config timeout)
83
+ * @returns Execution result with stdout, stderr, exit code
84
+ */
85
+ runCommand(containerId: string, command: string, timeoutMs?: number): Promise<SandboxExecResult>;
86
+ /**
87
+ * Run a command and stream its stdout output (for long-running commands).
88
+ * Calls onChunk for each line of stdout.
89
+ */
90
+ runCommandWithOutput(containerId: string, command: string, onChunk?: (chunk: string) => void, timeoutMs?: number): Promise<SandboxExecResult>;
91
+ /**
92
+ * Get the status of a managed container.
93
+ */
94
+ getContainerStatus(containerId: string): Promise<ContainerStatus>;
95
+ /**
96
+ * Stop and remove a sandbox container.
97
+ */
98
+ destroyContainer(containerId: string): Promise<void>;
99
+ /**
100
+ * Destroy all managed containers.
101
+ */
102
+ destroyAll(): Promise<void>;
103
+ /**
104
+ * Get information about all managed containers.
105
+ */
106
+ getManagedContainers(): ManagedContainer[];
107
+ /**
108
+ * Ensure a container ID is tracked and still exists.
109
+ */
110
+ private ensureContainer;
111
+ /**
112
+ * Run a command on the host machine (not inside a container).
113
+ * Used for docker CLI operations.
114
+ */
115
+ private execHostCommand;
116
+ /**
117
+ * Execute a command inside a container using docker exec.
118
+ * Used internally for setup operations like mkdir.
119
+ */
120
+ private execInContainer;
121
+ /**
122
+ * Remove containers that have been managed for more than 30 minutes.
123
+ */
124
+ private cleanupStaleContainers;
125
+ }
126
+ /**
127
+ * Get or create the default SandboxManager singleton.
128
+ */
129
+ export declare function getSandboxManager(): SandboxManager;
130
+ /**
131
+ * Reset the default SandboxManager singleton (useful for testing).
132
+ */
133
+ export declare function resetSandboxManager(): void;
134
+ //# sourceMappingURL=manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/sandbox/manager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AASH,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,eAAe,EAChB,MAAM,YAAY,CAAC;AAkBpB,qBAAa,cAAc;IAUb,OAAO,CAAC,MAAM;IAT1B,0DAA0D;IAC1D,OAAO,CAAC,UAAU,CAA4C;IAC9D,mDAAmD;IACnD,OAAO,CAAC,aAAa,CAAS;IAC9B,iDAAiD;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC,6CAA6C;IAC7C,OAAO,CAAC,WAAW,CAAM;gBAEL,MAAM,GAAE,aAAkC;IAI9D;;;OAGG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAgB3C;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,gBAAgB,IAAI,IAAI;IAMxB;;;;;;;OAOG;IACG,eAAe,CACnB,KAAK,CAAC,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC;IAkGlB;;;;;;;;OAQG;IACG,sBAAsB,CAC1B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC;IA+ChB;;;;;;;OAOG;IACG,UAAU,CACd,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC;IA6C7B;;;OAGG;IACG,oBAAoB,CACxB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,EACjC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,iBAAiB,CAAC;IAmE7B;;OAEG;IACG,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC;IAoBvE;;OAEG;IACG,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4B1D;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAMjC;;OAEG;IACH,oBAAoB,IAAI,gBAAgB,EAAE;IAM1C;;OAEG;IACH,OAAO,CAAC,eAAe;IAQvB;;;OAGG;YACW,eAAe;IAoC7B;;;OAGG;YACW,eAAe;IAW7B;;OAEG;YACW,sBAAsB;CAcrC;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAKlD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAE1C"}