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.
- package/LICENSE +21 -0
- package/README.md +891 -0
- package/dist/agent-sdk/src/agent.d.ts +118 -0
- package/dist/agent-sdk/src/agent.d.ts.map +1 -0
- package/dist/agent-sdk/src/agent.js +88 -0
- package/dist/agent-sdk/src/agent.js.map +1 -0
- package/dist/agent-sdk/src/index.d.ts +33 -0
- package/dist/agent-sdk/src/index.d.ts.map +1 -0
- package/dist/agent-sdk/src/index.js +32 -0
- package/dist/agent-sdk/src/index.js.map +1 -0
- package/dist/agent-sdk/src/register.d.ts +70 -0
- package/dist/agent-sdk/src/register.d.ts.map +1 -0
- package/dist/agent-sdk/src/register.js +181 -0
- package/dist/agent-sdk/src/register.js.map +1 -0
- package/dist/agent-sdk/src/scaffold.d.ts +50 -0
- package/dist/agent-sdk/src/scaffold.d.ts.map +1 -0
- package/dist/agent-sdk/src/scaffold.js +291 -0
- package/dist/agent-sdk/src/scaffold.js.map +1 -0
- package/dist/agent-sdk/src/testing.d.ts +187 -0
- package/dist/agent-sdk/src/testing.d.ts.map +1 -0
- package/dist/agent-sdk/src/testing.js +243 -0
- package/dist/agent-sdk/src/testing.js.map +1 -0
- package/dist/agent-sdk/src/types.d.ts +202 -0
- package/dist/agent-sdk/src/types.d.ts.map +1 -0
- package/dist/agent-sdk/src/types.js +11 -0
- package/dist/agent-sdk/src/types.js.map +1 -0
- package/dist/agents/agent.d.ts +132 -0
- package/dist/agents/agent.d.ts.map +1 -0
- package/dist/agents/agent.js +19 -0
- package/dist/agents/agent.js.map +1 -0
- package/dist/agents/agents/context-gatherer.d.ts +42 -0
- package/dist/agents/agents/context-gatherer.d.ts.map +1 -0
- package/dist/agents/agents/context-gatherer.js +366 -0
- package/dist/agents/agents/context-gatherer.js.map +1 -0
- package/dist/agents/agents/debugger.d.ts +58 -0
- package/dist/agents/agents/debugger.d.ts.map +1 -0
- package/dist/agents/agents/debugger.js +257 -0
- package/dist/agents/agents/debugger.js.map +1 -0
- package/dist/agents/agents/git-agent.d.ts +34 -0
- package/dist/agents/agents/git-agent.d.ts.map +1 -0
- package/dist/agents/agents/git-agent.js +200 -0
- package/dist/agents/agents/git-agent.js.map +1 -0
- package/dist/agents/agents/github-release-agent.d.ts +65 -0
- package/dist/agents/agents/github-release-agent.d.ts.map +1 -0
- package/dist/agents/agents/github-release-agent.js +439 -0
- package/dist/agents/agents/github-release-agent.js.map +1 -0
- package/dist/agents/agents/package-agent.d.ts +33 -0
- package/dist/agents/agents/package-agent.d.ts.map +1 -0
- package/dist/agents/agents/package-agent.js +233 -0
- package/dist/agents/agents/package-agent.js.map +1 -0
- package/dist/agents/agents/planner.d.ts +26 -0
- package/dist/agents/agents/planner.d.ts.map +1 -0
- package/dist/agents/agents/planner.js +222 -0
- package/dist/agents/agents/planner.js.map +1 -0
- package/dist/agents/agents/reviewer.d.ts +34 -0
- package/dist/agents/agents/reviewer.d.ts.map +1 -0
- package/dist/agents/agents/reviewer.js +159 -0
- package/dist/agents/agents/reviewer.js.map +1 -0
- package/dist/agents/agents/runner.d.ts +73 -0
- package/dist/agents/agents/runner.d.ts.map +1 -0
- package/dist/agents/agents/runner.js +299 -0
- package/dist/agents/agents/runner.js.map +1 -0
- package/dist/agents/agents/security-agent.d.ts +33 -0
- package/dist/agents/agents/security-agent.d.ts.map +1 -0
- package/dist/agents/agents/security-agent.js +184 -0
- package/dist/agents/agents/security-agent.js.map +1 -0
- package/dist/agents/agents/tester.d.ts +96 -0
- package/dist/agents/agents/tester.d.ts.map +1 -0
- package/dist/agents/agents/tester.js +410 -0
- package/dist/agents/agents/tester.js.map +1 -0
- package/dist/agents/agents/writer.d.ts +51 -0
- package/dist/agents/agents/writer.d.ts.map +1 -0
- package/dist/agents/agents/writer.js +384 -0
- package/dist/agents/agents/writer.js.map +1 -0
- package/dist/agents/context-vault.d.ts +49 -0
- package/dist/agents/context-vault.d.ts.map +1 -0
- package/dist/agents/context-vault.js +134 -0
- package/dist/agents/context-vault.js.map +1 -0
- package/dist/agents/orchestrator.d.ts +97 -0
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/agents/orchestrator.js +696 -0
- package/dist/agents/orchestrator.js.map +1 -0
- package/dist/agents/utils/file-tree.d.ts +28 -0
- package/dist/agents/utils/file-tree.d.ts.map +1 -0
- package/dist/agents/utils/file-tree.js +93 -0
- package/dist/agents/utils/file-tree.js.map +1 -0
- package/dist/cli/agent.d.ts +25 -0
- package/dist/cli/agent.d.ts.map +1 -0
- package/dist/cli/agent.js +374 -0
- package/dist/cli/agent.js.map +1 -0
- package/dist/cli/benchmark.d.ts +24 -0
- package/dist/cli/benchmark.d.ts.map +1 -0
- package/dist/cli/benchmark.js +235 -0
- package/dist/cli/benchmark.js.map +1 -0
- package/dist/cli/cache.d.ts +12 -0
- package/dist/cli/cache.d.ts.map +1 -0
- package/dist/cli/cache.js +58 -0
- package/dist/cli/cache.js.map +1 -0
- package/dist/cli/chat.d.ts +37 -0
- package/dist/cli/chat.d.ts.map +1 -0
- package/dist/cli/chat.js +393 -0
- package/dist/cli/chat.js.map +1 -0
- package/dist/cli/commands.d.ts +24 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +18 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/config.d.ts +19 -0
- package/dist/cli/config.d.ts.map +1 -0
- package/dist/cli/config.js +162 -0
- package/dist/cli/config.js.map +1 -0
- package/dist/cli/dashboard.d.ts +34 -0
- package/dist/cli/dashboard.d.ts.map +1 -0
- package/dist/cli/dashboard.js +126 -0
- package/dist/cli/dashboard.js.map +1 -0
- package/dist/cli/doctor.d.ts +68 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +585 -0
- package/dist/cli/doctor.js.map +1 -0
- package/dist/cli/edit.d.ts +11 -0
- package/dist/cli/edit.d.ts.map +1 -0
- package/dist/cli/edit.js +86 -0
- package/dist/cli/edit.js.map +1 -0
- package/dist/cli/execute.d.ts +25 -0
- package/dist/cli/execute.d.ts.map +1 -0
- package/dist/cli/execute.js +186 -0
- package/dist/cli/execute.js.map +1 -0
- package/dist/cli/federation.d.ts +31 -0
- package/dist/cli/federation.d.ts.map +1 -0
- package/dist/cli/federation.js +387 -0
- package/dist/cli/federation.js.map +1 -0
- package/dist/cli/history.d.ts +22 -0
- package/dist/cli/history.d.ts.map +1 -0
- package/dist/cli/history.js +140 -0
- package/dist/cli/history.js.map +1 -0
- package/dist/cli/init.d.ts +49 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +423 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/learn.d.ts +31 -0
- package/dist/cli/learn.d.ts.map +1 -0
- package/dist/cli/learn.js +320 -0
- package/dist/cli/learn.js.map +1 -0
- package/dist/cli/memory.d.ts +38 -0
- package/dist/cli/memory.d.ts.map +1 -0
- package/dist/cli/memory.js +295 -0
- package/dist/cli/memory.js.map +1 -0
- package/dist/cli/model-picker.d.ts +18 -0
- package/dist/cli/model-picker.d.ts.map +1 -0
- package/dist/cli/model-picker.js +225 -0
- package/dist/cli/model-picker.js.map +1 -0
- package/dist/cli/models.d.ts +11 -0
- package/dist/cli/models.d.ts.map +1 -0
- package/dist/cli/models.js +132 -0
- package/dist/cli/models.js.map +1 -0
- package/dist/cli/plan.d.ts +11 -0
- package/dist/cli/plan.d.ts.map +1 -0
- package/dist/cli/plan.js +94 -0
- package/dist/cli/plan.js.map +1 -0
- package/dist/cli/plugins.d.ts +15 -0
- package/dist/cli/plugins.d.ts.map +1 -0
- package/dist/cli/plugins.js +123 -0
- package/dist/cli/plugins.js.map +1 -0
- package/dist/cli/router.d.ts +20 -0
- package/dist/cli/router.d.ts.map +1 -0
- package/dist/cli/router.js +142 -0
- package/dist/cli/router.js.map +1 -0
- package/dist/cli/run.d.ts +22 -0
- package/dist/cli/run.d.ts.map +1 -0
- package/dist/cli/run.js +110 -0
- package/dist/cli/run.js.map +1 -0
- package/dist/cli/sandbox.d.ts +27 -0
- package/dist/cli/sandbox.d.ts.map +1 -0
- package/dist/cli/sandbox.js +264 -0
- package/dist/cli/sandbox.js.map +1 -0
- package/dist/cli/sdk.d.ts +27 -0
- package/dist/cli/sdk.d.ts.map +1 -0
- package/dist/cli/sdk.js +204 -0
- package/dist/cli/sdk.js.map +1 -0
- package/dist/cli/stats.d.ts +18 -0
- package/dist/cli/stats.d.ts.map +1 -0
- package/dist/cli/stats.js +78 -0
- package/dist/cli/stats.js.map +1 -0
- package/dist/cli/team.d.ts +42 -0
- package/dist/cli/team.d.ts.map +1 -0
- package/dist/cli/team.js +473 -0
- package/dist/cli/team.js.map +1 -0
- package/dist/cli/workflow.d.ts +27 -0
- package/dist/cli/workflow.d.ts.map +1 -0
- package/dist/cli/workflow.js +347 -0
- package/dist/cli/workflow.js.map +1 -0
- package/dist/config/manager.d.ts +37 -0
- package/dist/config/manager.d.ts.map +1 -0
- package/dist/config/manager.js +147 -0
- package/dist/config/manager.js.map +1 -0
- package/dist/config/types.d.ts +53 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +2 -0
- package/dist/config/types.js.map +1 -0
- package/dist/context/cache.d.ts +27 -0
- package/dist/context/cache.d.ts.map +1 -0
- package/dist/context/cache.js +116 -0
- package/dist/context/cache.js.map +1 -0
- package/dist/context/history.d.ts +87 -0
- package/dist/context/history.d.ts.map +1 -0
- package/dist/context/history.js +249 -0
- package/dist/context/history.js.map +1 -0
- package/dist/context/parser.d.ts +61 -0
- package/dist/context/parser.d.ts.map +1 -0
- package/dist/context/parser.js +194 -0
- package/dist/context/parser.js.map +1 -0
- package/dist/federation/client.d.ts +49 -0
- package/dist/federation/client.d.ts.map +1 -0
- package/dist/federation/client.js +239 -0
- package/dist/federation/client.js.map +1 -0
- package/dist/federation/protocol.d.ts +155 -0
- package/dist/federation/protocol.d.ts.map +1 -0
- package/dist/federation/protocol.js +57 -0
- package/dist/federation/protocol.js.map +1 -0
- package/dist/federation/server.d.ts +25 -0
- package/dist/federation/server.d.ts.map +1 -0
- package/dist/federation/server.js +401 -0
- package/dist/federation/server.js.map +1 -0
- package/dist/index.d.ts +67 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +93 -0
- package/dist/index.js.map +1 -0
- package/dist/inference/factory.d.ts +20 -0
- package/dist/inference/factory.d.ts.map +1 -0
- package/dist/inference/factory.js +46 -0
- package/dist/inference/factory.js.map +1 -0
- package/dist/inference/gemini-adapter.d.ts +17 -0
- package/dist/inference/gemini-adapter.d.ts.map +1 -0
- package/dist/inference/gemini-adapter.js +176 -0
- package/dist/inference/gemini-adapter.js.map +1 -0
- package/dist/inference/groq-adapter.d.ts +17 -0
- package/dist/inference/groq-adapter.d.ts.map +1 -0
- package/dist/inference/groq-adapter.js +103 -0
- package/dist/inference/groq-adapter.js.map +1 -0
- package/dist/inference/interface.d.ts +49 -0
- package/dist/inference/interface.d.ts.map +1 -0
- package/dist/inference/interface.js +2 -0
- package/dist/inference/interface.js.map +1 -0
- package/dist/inference/local-adapter.d.ts +35 -0
- package/dist/inference/local-adapter.d.ts.map +1 -0
- package/dist/inference/local-adapter.js +311 -0
- package/dist/inference/local-adapter.js.map +1 -0
- package/dist/inference/model-catalog.d.ts +53 -0
- package/dist/inference/model-catalog.d.ts.map +1 -0
- package/dist/inference/model-catalog.js +306 -0
- package/dist/inference/model-catalog.js.map +1 -0
- package/dist/inference/nim-adapter.d.ts +17 -0
- package/dist/inference/nim-adapter.d.ts.map +1 -0
- package/dist/inference/nim-adapter.js +103 -0
- package/dist/inference/nim-adapter.js.map +1 -0
- package/dist/inference/openrouter-adapter.d.ts +17 -0
- package/dist/inference/openrouter-adapter.d.ts.map +1 -0
- package/dist/inference/openrouter-adapter.js +105 -0
- package/dist/inference/openrouter-adapter.js.map +1 -0
- package/dist/inference/sse.d.ts +20 -0
- package/dist/inference/sse.d.ts.map +1 -0
- package/dist/inference/sse.js +91 -0
- package/dist/inference/sse.js.map +1 -0
- package/dist/learning/agent-stats.d.ts +109 -0
- package/dist/learning/agent-stats.d.ts.map +1 -0
- package/dist/learning/agent-stats.js +240 -0
- package/dist/learning/agent-stats.js.map +1 -0
- package/dist/learning/benchmark.d.ts +161 -0
- package/dist/learning/benchmark.d.ts.map +1 -0
- package/dist/learning/benchmark.js +589 -0
- package/dist/learning/benchmark.js.map +1 -0
- package/dist/learning/cost-tracker.d.ts +101 -0
- package/dist/learning/cost-tracker.d.ts.map +1 -0
- package/dist/learning/cost-tracker.js +224 -0
- package/dist/learning/cost-tracker.js.map +1 -0
- package/dist/learning/feedback.d.ts +88 -0
- package/dist/learning/feedback.d.ts.map +1 -0
- package/dist/learning/feedback.js +169 -0
- package/dist/learning/feedback.js.map +1 -0
- package/dist/learning/hybrid-router.d.ts +201 -0
- package/dist/learning/hybrid-router.d.ts.map +1 -0
- package/dist/learning/hybrid-router.js +450 -0
- package/dist/learning/hybrid-router.js.map +1 -0
- package/dist/learning/model-compare.d.ts +76 -0
- package/dist/learning/model-compare.d.ts.map +1 -0
- package/dist/learning/model-compare.js +252 -0
- package/dist/learning/model-compare.js.map +1 -0
- package/dist/learning/model-router.d.ts +68 -0
- package/dist/learning/model-router.d.ts.map +1 -0
- package/dist/learning/model-router.js +140 -0
- package/dist/learning/model-router.js.map +1 -0
- package/dist/learning/pattern-extractor.d.ts +99 -0
- package/dist/learning/pattern-extractor.d.ts.map +1 -0
- package/dist/learning/pattern-extractor.js +310 -0
- package/dist/learning/pattern-extractor.js.map +1 -0
- package/dist/learning/scorer.d.ts +51 -0
- package/dist/learning/scorer.d.ts.map +1 -0
- package/dist/learning/scorer.js +64 -0
- package/dist/learning/scorer.js.map +1 -0
- package/dist/learning/self-improver.d.ts +48 -0
- package/dist/learning/self-improver.d.ts.map +1 -0
- package/dist/learning/self-improver.js +161 -0
- package/dist/learning/self-improver.js.map +1 -0
- package/dist/memory/embedder.d.ts +65 -0
- package/dist/memory/embedder.d.ts.map +1 -0
- package/dist/memory/embedder.js +424 -0
- package/dist/memory/embedder.js.map +1 -0
- package/dist/memory/memory-integration.d.ts +56 -0
- package/dist/memory/memory-integration.d.ts.map +1 -0
- package/dist/memory/memory-integration.js +95 -0
- package/dist/memory/memory-integration.js.map +1 -0
- package/dist/memory/trajectory-store.d.ts +149 -0
- package/dist/memory/trajectory-store.d.ts.map +1 -0
- package/dist/memory/trajectory-store.js +476 -0
- package/dist/memory/trajectory-store.js.map +1 -0
- package/dist/memory/vector-store.d.ts +78 -0
- package/dist/memory/vector-store.d.ts.map +1 -0
- package/dist/memory/vector-store.js +186 -0
- package/dist/memory/vector-store.js.map +1 -0
- package/dist/plugins/agent-plugin.d.ts +73 -0
- package/dist/plugins/agent-plugin.d.ts.map +1 -0
- package/dist/plugins/agent-plugin.js +199 -0
- package/dist/plugins/agent-plugin.js.map +1 -0
- package/dist/plugins/registry.d.ts +61 -0
- package/dist/plugins/registry.d.ts.map +1 -0
- package/dist/plugins/registry.js +67 -0
- package/dist/plugins/registry.js.map +1 -0
- package/dist/sandbox/images.d.ts +31 -0
- package/dist/sandbox/images.d.ts.map +1 -0
- package/dist/sandbox/images.js +129 -0
- package/dist/sandbox/images.js.map +1 -0
- package/dist/sandbox/manager.d.ts +134 -0
- package/dist/sandbox/manager.d.ts.map +1 -0
- package/dist/sandbox/manager.js +470 -0
- package/dist/sandbox/manager.js.map +1 -0
- package/dist/sandbox/types.d.ts +113 -0
- package/dist/sandbox/types.d.ts.map +1 -0
- package/dist/sandbox/types.js +107 -0
- package/dist/sandbox/types.js.map +1 -0
- package/dist/security/scanner.d.ts +53 -0
- package/dist/security/scanner.d.ts.map +1 -0
- package/dist/security/scanner.js +271 -0
- package/dist/security/scanner.js.map +1 -0
- package/dist/team/config.d.ts +50 -0
- package/dist/team/config.d.ts.map +1 -0
- package/dist/team/config.js +108 -0
- package/dist/team/config.js.map +1 -0
- package/dist/team/memory.d.ts +63 -0
- package/dist/team/memory.d.ts.map +1 -0
- package/dist/team/memory.js +282 -0
- package/dist/team/memory.js.map +1 -0
- package/dist/team/review.d.ts +123 -0
- package/dist/team/review.d.ts.map +1 -0
- package/dist/team/review.js +293 -0
- package/dist/team/review.js.map +1 -0
- package/dist/utils/env.d.ts +19 -0
- package/dist/utils/env.d.ts.map +1 -0
- package/dist/utils/env.js +250 -0
- package/dist/utils/env.js.map +1 -0
- package/dist/utils/logger.d.ts +11 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +45 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/web-dashboard/server.d.ts +59 -0
- package/dist/web-dashboard/server.d.ts.map +1 -0
- package/dist/web-dashboard/server.js +418 -0
- package/dist/web-dashboard/server.js.map +1 -0
- package/dist/workflow/registry.d.ts +127 -0
- package/dist/workflow/registry.d.ts.map +1 -0
- package/dist/workflow/registry.js +482 -0
- package/dist/workflow/registry.js.map +1 -0
- package/dist/workflow/templates.d.ts +93 -0
- package/dist/workflow/templates.d.ts.map +1 -0
- package/dist/workflow/templates.js +481 -0
- package/dist/workflow/templates.js.map +1 -0
- package/package.json +78 -0
- package/src/web-dashboard/public/assets/index-B08nDkSB.css +1 -0
- package/src/web-dashboard/public/assets/index-BKL8YOFD.js +135 -0
- package/src/web-dashboard/public/assets/index-BKL8YOFD.js.map +1 -0
- 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"}
|