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
package/dist/cli/run.js
ADDED
|
@@ -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"}
|