@praveencs/agent 0.1.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/README.md +1007 -0
- package/bin/agent.ts +6 -0
- package/dist/bin/agent.d.ts +3 -0
- package/dist/bin/agent.d.ts.map +1 -0
- package/dist/bin/agent.js +5 -0
- package/dist/bin/agent.js.map +1 -0
- package/dist/src/cli/commands/config.d.ts +3 -0
- package/dist/src/cli/commands/config.d.ts.map +1 -0
- package/dist/src/cli/commands/config.js +54 -0
- package/dist/src/cli/commands/config.js.map +1 -0
- package/dist/src/cli/commands/daemon.d.ts +3 -0
- package/dist/src/cli/commands/daemon.d.ts.map +1 -0
- package/dist/src/cli/commands/daemon.js +43 -0
- package/dist/src/cli/commands/daemon.js.map +1 -0
- package/dist/src/cli/commands/doctor.d.ts +3 -0
- package/dist/src/cli/commands/doctor.d.ts.map +1 -0
- package/dist/src/cli/commands/doctor.js +84 -0
- package/dist/src/cli/commands/doctor.js.map +1 -0
- package/dist/src/cli/commands/init.d.ts +8 -0
- package/dist/src/cli/commands/init.d.ts.map +1 -0
- package/dist/src/cli/commands/init.js +112 -0
- package/dist/src/cli/commands/init.js.map +1 -0
- package/dist/src/cli/commands/mcp.d.ts +3 -0
- package/dist/src/cli/commands/mcp.d.ts.map +1 -0
- package/dist/src/cli/commands/mcp.js +26 -0
- package/dist/src/cli/commands/mcp.js.map +1 -0
- package/dist/src/cli/commands/plan.d.ts +3 -0
- package/dist/src/cli/commands/plan.d.ts.map +1 -0
- package/dist/src/cli/commands/plan.js +220 -0
- package/dist/src/cli/commands/plan.js.map +1 -0
- package/dist/src/cli/commands/run.d.ts +3 -0
- package/dist/src/cli/commands/run.d.ts.map +1 -0
- package/dist/src/cli/commands/run.js +192 -0
- package/dist/src/cli/commands/run.js.map +1 -0
- package/dist/src/cli/commands/skills.d.ts +3 -0
- package/dist/src/cli/commands/skills.d.ts.map +1 -0
- package/dist/src/cli/commands/skills.js +143 -0
- package/dist/src/cli/commands/skills.js.map +1 -0
- package/dist/src/cli/index.d.ts +6 -0
- package/dist/src/cli/index.d.ts.map +1 -0
- package/dist/src/cli/index.js +33 -0
- package/dist/src/cli/index.js.map +1 -0
- package/dist/src/cli/ui/progress.d.ts +17 -0
- package/dist/src/cli/ui/progress.d.ts.map +1 -0
- package/dist/src/cli/ui/progress.js +43 -0
- package/dist/src/cli/ui/progress.js.map +1 -0
- package/dist/src/cli/ui/prompt.d.ts +10 -0
- package/dist/src/cli/ui/prompt.d.ts.map +1 -0
- package/dist/src/cli/ui/prompt.js +53 -0
- package/dist/src/cli/ui/prompt.js.map +1 -0
- package/dist/src/cli/ui/report.d.ts +6 -0
- package/dist/src/cli/ui/report.d.ts.map +1 -0
- package/dist/src/cli/ui/report.js +81 -0
- package/dist/src/cli/ui/report.js.map +1 -0
- package/dist/src/config/defaults.d.ts +3 -0
- package/dist/src/config/defaults.d.ts.map +1 -0
- package/dist/src/config/defaults.js +82 -0
- package/dist/src/config/defaults.js.map +1 -0
- package/dist/src/config/loader.d.ts +33 -0
- package/dist/src/config/loader.d.ts.map +1 -0
- package/dist/src/config/loader.js +161 -0
- package/dist/src/config/loader.js.map +1 -0
- package/dist/src/config/schema.d.ts +530 -0
- package/dist/src/config/schema.d.ts.map +1 -0
- package/dist/src/config/schema.js +97 -0
- package/dist/src/config/schema.js.map +1 -0
- package/dist/src/config/secrets.d.ts +31 -0
- package/dist/src/config/secrets.d.ts.map +1 -0
- package/dist/src/config/secrets.js +98 -0
- package/dist/src/config/secrets.js.map +1 -0
- package/dist/src/daemon/manager.d.ts +28 -0
- package/dist/src/daemon/manager.d.ts.map +1 -0
- package/dist/src/daemon/manager.js +77 -0
- package/dist/src/daemon/manager.js.map +1 -0
- package/dist/src/daemon/scheduler.d.ts +6 -0
- package/dist/src/daemon/scheduler.d.ts.map +1 -0
- package/dist/src/daemon/scheduler.js +82 -0
- package/dist/src/daemon/scheduler.js.map +1 -0
- package/dist/src/daemon/watcher.d.ts +16 -0
- package/dist/src/daemon/watcher.d.ts.map +1 -0
- package/dist/src/daemon/watcher.js +59 -0
- package/dist/src/daemon/watcher.js.map +1 -0
- package/dist/src/engine/executor.d.ts +51 -0
- package/dist/src/engine/executor.d.ts.map +1 -0
- package/dist/src/engine/executor.js +189 -0
- package/dist/src/engine/executor.js.map +1 -0
- package/dist/src/engine/rollback.d.ts +37 -0
- package/dist/src/engine/rollback.d.ts.map +1 -0
- package/dist/src/engine/rollback.js +95 -0
- package/dist/src/engine/rollback.js.map +1 -0
- package/dist/src/engine/types.d.ts +31 -0
- package/dist/src/engine/types.d.ts.map +1 -0
- package/dist/src/engine/types.js +2 -0
- package/dist/src/engine/types.js.map +1 -0
- package/dist/src/engine/verification.d.ts +27 -0
- package/dist/src/engine/verification.d.ts.map +1 -0
- package/dist/src/engine/verification.js +75 -0
- package/dist/src/engine/verification.js.map +1 -0
- package/dist/src/index.d.ts +17 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +13 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/llm/cache.d.ts +20 -0
- package/dist/src/llm/cache.d.ts.map +1 -0
- package/dist/src/llm/cache.js +45 -0
- package/dist/src/llm/cache.js.map +1 -0
- package/dist/src/llm/providers/anthropic.d.ts +13 -0
- package/dist/src/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/src/llm/providers/anthropic.js +69 -0
- package/dist/src/llm/providers/anthropic.js.map +1 -0
- package/dist/src/llm/providers/azure.d.ts +14 -0
- package/dist/src/llm/providers/azure.d.ts.map +1 -0
- package/dist/src/llm/providers/azure.js +98 -0
- package/dist/src/llm/providers/azure.js.map +1 -0
- package/dist/src/llm/providers/ollama.d.ts +13 -0
- package/dist/src/llm/providers/ollama.d.ts.map +1 -0
- package/dist/src/llm/providers/ollama.js +80 -0
- package/dist/src/llm/providers/ollama.js.map +1 -0
- package/dist/src/llm/providers/openai.d.ts +13 -0
- package/dist/src/llm/providers/openai.d.ts.map +1 -0
- package/dist/src/llm/providers/openai.js +74 -0
- package/dist/src/llm/providers/openai.js.map +1 -0
- package/dist/src/llm/router.d.ts +26 -0
- package/dist/src/llm/router.d.ts.map +1 -0
- package/dist/src/llm/router.js +104 -0
- package/dist/src/llm/router.js.map +1 -0
- package/dist/src/llm/types.d.ts +44 -0
- package/dist/src/llm/types.d.ts.map +1 -0
- package/dist/src/llm/types.js +2 -0
- package/dist/src/llm/types.js.map +1 -0
- package/dist/src/logging/audit-log.d.ts +89 -0
- package/dist/src/logging/audit-log.d.ts.map +1 -0
- package/dist/src/logging/audit-log.js +132 -0
- package/dist/src/logging/audit-log.js.map +1 -0
- package/dist/src/logging/logger.d.ts +13 -0
- package/dist/src/logging/logger.d.ts.map +1 -0
- package/dist/src/logging/logger.js +57 -0
- package/dist/src/logging/logger.js.map +1 -0
- package/dist/src/logging/redactor.d.ts +14 -0
- package/dist/src/logging/redactor.d.ts.map +1 -0
- package/dist/src/logging/redactor.js +48 -0
- package/dist/src/logging/redactor.js.map +1 -0
- package/dist/src/mcp/handlers.d.ts +21 -0
- package/dist/src/mcp/handlers.d.ts.map +1 -0
- package/dist/src/mcp/handlers.js +156 -0
- package/dist/src/mcp/handlers.js.map +1 -0
- package/dist/src/mcp/server.d.ts +8 -0
- package/dist/src/mcp/server.d.ts.map +1 -0
- package/dist/src/mcp/server.js +40 -0
- package/dist/src/mcp/server.js.map +1 -0
- package/dist/src/mcp/types.d.ts +20 -0
- package/dist/src/mcp/types.d.ts.map +1 -0
- package/dist/src/mcp/types.js +2 -0
- package/dist/src/mcp/types.js.map +1 -0
- package/dist/src/plans/parser.d.ts +33 -0
- package/dist/src/plans/parser.d.ts.map +1 -0
- package/dist/src/plans/parser.js +93 -0
- package/dist/src/plans/parser.js.map +1 -0
- package/dist/src/plans/propose.d.ts +26 -0
- package/dist/src/plans/propose.d.ts.map +1 -0
- package/dist/src/plans/propose.js +85 -0
- package/dist/src/plans/propose.js.map +1 -0
- package/dist/src/plans/runner.d.ts +19 -0
- package/dist/src/plans/runner.d.ts.map +1 -0
- package/dist/src/plans/runner.js +159 -0
- package/dist/src/plans/runner.js.map +1 -0
- package/dist/src/plans/triggers.d.ts +12 -0
- package/dist/src/plans/triggers.d.ts.map +1 -0
- package/dist/src/plans/triggers.js +43 -0
- package/dist/src/plans/triggers.js.map +1 -0
- package/dist/src/plans/types.d.ts +454 -0
- package/dist/src/plans/types.d.ts.map +1 -0
- package/dist/src/plans/types.js +56 -0
- package/dist/src/plans/types.js.map +1 -0
- package/dist/src/policy/audit.d.ts +35 -0
- package/dist/src/policy/audit.d.ts.map +1 -0
- package/dist/src/policy/audit.js +39 -0
- package/dist/src/policy/audit.js.map +1 -0
- package/dist/src/policy/engine.d.ts +35 -0
- package/dist/src/policy/engine.d.ts.map +1 -0
- package/dist/src/policy/engine.js +134 -0
- package/dist/src/policy/engine.js.map +1 -0
- package/dist/src/policy/scope.d.ts +27 -0
- package/dist/src/policy/scope.d.ts.map +1 -0
- package/dist/src/policy/scope.js +89 -0
- package/dist/src/policy/scope.js.map +1 -0
- package/dist/src/policy/types.d.ts +15 -0
- package/dist/src/policy/types.d.ts.map +1 -0
- package/dist/src/policy/types.js +2 -0
- package/dist/src/policy/types.js.map +1 -0
- package/dist/src/self-extend/generator.d.ts +27 -0
- package/dist/src/self-extend/generator.d.ts.map +1 -0
- package/dist/src/self-extend/generator.js +107 -0
- package/dist/src/self-extend/generator.js.map +1 -0
- package/dist/src/self-extend/publisher.d.ts +5 -0
- package/dist/src/self-extend/publisher.d.ts.map +1 -0
- package/dist/src/self-extend/publisher.js +40 -0
- package/dist/src/self-extend/publisher.js.map +1 -0
- package/dist/src/self-extend/sandbox.d.ts +10 -0
- package/dist/src/self-extend/sandbox.d.ts.map +1 -0
- package/dist/src/self-extend/sandbox.js +22 -0
- package/dist/src/self-extend/sandbox.js.map +1 -0
- package/dist/src/skills/hub/lockfile.d.ts +15 -0
- package/dist/src/skills/hub/lockfile.d.ts.map +1 -0
- package/dist/src/skills/hub/lockfile.js +13 -0
- package/dist/src/skills/hub/lockfile.js.map +1 -0
- package/dist/src/skills/hub/publisher.d.ts +7 -0
- package/dist/src/skills/hub/publisher.d.ts.map +1 -0
- package/dist/src/skills/hub/publisher.js +10 -0
- package/dist/src/skills/hub/publisher.js.map +1 -0
- package/dist/src/skills/hub/registry.d.ts +16 -0
- package/dist/src/skills/hub/registry.d.ts.map +1 -0
- package/dist/src/skills/hub/registry.js +24 -0
- package/dist/src/skills/hub/registry.js.map +1 -0
- package/dist/src/skills/index.d.ts +12 -0
- package/dist/src/skills/index.d.ts.map +1 -0
- package/dist/src/skills/index.js +82 -0
- package/dist/src/skills/index.js.map +1 -0
- package/dist/src/skills/lifecycle.d.ts +19 -0
- package/dist/src/skills/lifecycle.d.ts.map +1 -0
- package/dist/src/skills/lifecycle.js +48 -0
- package/dist/src/skills/lifecycle.js.map +1 -0
- package/dist/src/skills/loader.d.ts +43 -0
- package/dist/src/skills/loader.d.ts.map +1 -0
- package/dist/src/skills/loader.js +142 -0
- package/dist/src/skills/loader.js.map +1 -0
- package/dist/src/skills/runner.d.ts +43 -0
- package/dist/src/skills/runner.d.ts.map +1 -0
- package/dist/src/skills/runner.js +198 -0
- package/dist/src/skills/runner.js.map +1 -0
- package/dist/src/skills/types.d.ts +150 -0
- package/dist/src/skills/types.d.ts.map +1 -0
- package/dist/src/skills/types.js +31 -0
- package/dist/src/skills/types.js.map +1 -0
- package/dist/src/skills/validator.d.ts +19 -0
- package/dist/src/skills/validator.d.ts.map +1 -0
- package/dist/src/skills/validator.js +92 -0
- package/dist/src/skills/validator.js.map +1 -0
- package/dist/src/tools/core/cmd.d.ts +24 -0
- package/dist/src/tools/core/cmd.d.ts.map +1 -0
- package/dist/src/tools/core/cmd.js +55 -0
- package/dist/src/tools/core/cmd.js.map +1 -0
- package/dist/src/tools/core/fs.d.ts +76 -0
- package/dist/src/tools/core/fs.d.ts.map +1 -0
- package/dist/src/tools/core/fs.js +173 -0
- package/dist/src/tools/core/fs.js.map +1 -0
- package/dist/src/tools/core/git.d.ts +62 -0
- package/dist/src/tools/core/git.d.ts.map +1 -0
- package/dist/src/tools/core/git.js +138 -0
- package/dist/src/tools/core/git.js.map +1 -0
- package/dist/src/tools/core/project.d.ts +17 -0
- package/dist/src/tools/core/project.d.ts.map +1 -0
- package/dist/src/tools/core/project.js +104 -0
- package/dist/src/tools/core/project.js.map +1 -0
- package/dist/src/tools/plugins/loader.d.ts +13 -0
- package/dist/src/tools/plugins/loader.d.ts.map +1 -0
- package/dist/src/tools/plugins/loader.js +36 -0
- package/dist/src/tools/plugins/loader.js.map +1 -0
- package/dist/src/tools/registry.d.ts +38 -0
- package/dist/src/tools/registry.d.ts.map +1 -0
- package/dist/src/tools/registry.js +118 -0
- package/dist/src/tools/registry.js.map +1 -0
- package/dist/src/tools/types.d.ts +46 -0
- package/dist/src/tools/types.d.ts.map +1 -0
- package/dist/src/tools/types.js +10 -0
- package/dist/src/tools/types.js.map +1 -0
- package/dist/src/utils/hash.d.ts +13 -0
- package/dist/src/utils/hash.d.ts.map +1 -0
- package/dist/src/utils/hash.js +22 -0
- package/dist/src/utils/hash.js.map +1 -0
- package/dist/src/utils/paths.d.ts +45 -0
- package/dist/src/utils/paths.d.ts.map +1 -0
- package/dist/src/utils/paths.js +71 -0
- package/dist/src/utils/paths.js.map +1 -0
- package/dist/src/utils/schema.d.ts +16 -0
- package/dist/src/utils/schema.d.ts.map +1 -0
- package/dist/src/utils/schema.js +66 -0
- package/dist/src/utils/schema.js.map +1 -0
- package/package.json +77 -0
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ConfigLoader } from '../../config/loader.js';
|
|
4
|
+
import { ToolRegistry } from '../../tools/registry.js';
|
|
5
|
+
import { PolicyEngine } from '../../policy/engine.js';
|
|
6
|
+
import { SkillLoader } from '../../skills/loader.js';
|
|
7
|
+
import { SkillRunner } from '../../skills/runner.js';
|
|
8
|
+
import { LLMRouter } from '../../llm/router.js';
|
|
9
|
+
import { ExecutionEngine } from '../../engine/executor.js';
|
|
10
|
+
import { PlanParser } from '../../plans/parser.js';
|
|
11
|
+
import { PlanRunner } from '../../plans/runner.js';
|
|
12
|
+
import { PlanProposer } from '../../plans/propose.js';
|
|
13
|
+
import { AuditLogger } from '../../logging/audit-log.js';
|
|
14
|
+
import { registerCoreTools } from './init.js';
|
|
15
|
+
import { promptApproval } from '../ui/prompt.js';
|
|
16
|
+
import { renderRunReport } from '../ui/report.js';
|
|
17
|
+
import { progress } from '../ui/progress.js';
|
|
18
|
+
import { generateRunId } from '../../utils/paths.js';
|
|
19
|
+
export function createPlanCommand() {
|
|
20
|
+
const cmd = new Command('plan')
|
|
21
|
+
.description('Manage and run plans');
|
|
22
|
+
cmd
|
|
23
|
+
.command('list')
|
|
24
|
+
.description('List available plans')
|
|
25
|
+
.action(async () => {
|
|
26
|
+
const parser = new PlanParser();
|
|
27
|
+
const plans = await parser.listPlans();
|
|
28
|
+
if (plans.length === 0) {
|
|
29
|
+
console.log(chalk.yellow('\nNo plans found.'));
|
|
30
|
+
console.log(chalk.dim(' Create one in .agent/plans/*.plan.yaml\n'));
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
console.log(chalk.bold.cyan('\nAvailable Plans\n'));
|
|
34
|
+
for (const plan of plans) {
|
|
35
|
+
console.log(` ${chalk.white.bold(plan.name)} ${chalk.dim(plan.path)}`);
|
|
36
|
+
}
|
|
37
|
+
console.log();
|
|
38
|
+
});
|
|
39
|
+
cmd
|
|
40
|
+
.command('validate <name>')
|
|
41
|
+
.description('Validate a plan file')
|
|
42
|
+
.action(async (name) => {
|
|
43
|
+
const parser = new PlanParser();
|
|
44
|
+
const plan = await parser.findPlan(name);
|
|
45
|
+
if (!plan) {
|
|
46
|
+
console.error(chalk.red(`\nPlan "${name}" not found\n`));
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
console.log(chalk.green(`\n✓ Plan "${name}" is valid\n`));
|
|
50
|
+
console.log(` ${chalk.dim('Goals:')} ${plan.goals.length}`);
|
|
51
|
+
console.log(` ${chalk.dim('Steps:')} ${plan.steps.length}`);
|
|
52
|
+
console.log(` ${chalk.dim('Mode:')} ${plan.mode}`);
|
|
53
|
+
console.log(` ${chalk.dim('Trigger:')} ${plan.trigger.type}`);
|
|
54
|
+
console.log();
|
|
55
|
+
});
|
|
56
|
+
cmd
|
|
57
|
+
.command('run <name>')
|
|
58
|
+
.description('Execute a plan')
|
|
59
|
+
.option('-a, --autonomous', 'Auto-approve low-risk actions')
|
|
60
|
+
.action(async (name, options) => {
|
|
61
|
+
const configLoader = new ConfigLoader();
|
|
62
|
+
const config = await configLoader.load();
|
|
63
|
+
const registry = ToolRegistry.getInstance();
|
|
64
|
+
registerCoreTools(registry);
|
|
65
|
+
const policy = new PolicyEngine(config, process.cwd());
|
|
66
|
+
const skillLoader = new SkillLoader(config);
|
|
67
|
+
const llmRouter = new LLMRouter(config);
|
|
68
|
+
const skillRunner = new SkillRunner(registry, policy, llmRouter);
|
|
69
|
+
const engine = new ExecutionEngine(registry, policy, skillLoader, skillRunner);
|
|
70
|
+
const planParser = new PlanParser();
|
|
71
|
+
const planRunner = new PlanRunner(engine);
|
|
72
|
+
await skillLoader.loadAll();
|
|
73
|
+
const plan = await planParser.findPlan(name);
|
|
74
|
+
if (!plan) {
|
|
75
|
+
console.error(chalk.red(`\nPlan "${name}" not found\n`));
|
|
76
|
+
process.exit(1);
|
|
77
|
+
}
|
|
78
|
+
const ctx = {
|
|
79
|
+
runId: generateRunId(),
|
|
80
|
+
cwd: process.cwd(),
|
|
81
|
+
config,
|
|
82
|
+
autonomous: options.autonomous ?? false,
|
|
83
|
+
approvedPermissions: new Set(),
|
|
84
|
+
onApproval: promptApproval,
|
|
85
|
+
onProgress: (msg) => progress.info(msg),
|
|
86
|
+
};
|
|
87
|
+
progress.start(`Plan: ${plan.name}`, plan.steps.length);
|
|
88
|
+
const result = await planRunner.run(plan, ctx);
|
|
89
|
+
renderRunReport(result);
|
|
90
|
+
});
|
|
91
|
+
cmd
|
|
92
|
+
.command('propose <name>')
|
|
93
|
+
.description('Create a proposed plan run for review')
|
|
94
|
+
.action(async (name) => {
|
|
95
|
+
const configLoader = new ConfigLoader();
|
|
96
|
+
await configLoader.load();
|
|
97
|
+
const planParser = new PlanParser();
|
|
98
|
+
const proposer = new PlanProposer();
|
|
99
|
+
const plan = await planParser.findPlan(name);
|
|
100
|
+
if (!plan) {
|
|
101
|
+
console.error(chalk.red(`\nPlan "${name}" not found\n`));
|
|
102
|
+
process.exit(1);
|
|
103
|
+
}
|
|
104
|
+
const run = await proposer.createProposal(plan, 'cli');
|
|
105
|
+
console.log(chalk.green(`\n✓ Proposed run created: ${run.runId}`));
|
|
106
|
+
console.log(chalk.dim(`\n To approve and execute:`));
|
|
107
|
+
console.log(chalk.dim(` agent plan approve ${run.runId}`));
|
|
108
|
+
console.log(chalk.dim(` agent plan execute ${run.runId}\n`));
|
|
109
|
+
});
|
|
110
|
+
cmd
|
|
111
|
+
.command('runs')
|
|
112
|
+
.description('List plan run history')
|
|
113
|
+
.action(async () => {
|
|
114
|
+
const runs = await AuditLogger.listRuns();
|
|
115
|
+
if (runs.length === 0) {
|
|
116
|
+
console.log(chalk.yellow('\nNo runs found.\n'));
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
console.log(chalk.bold.cyan('\nRun History\n'));
|
|
120
|
+
for (const runId of runs.slice(0, 20)) {
|
|
121
|
+
const log = await AuditLogger.loadRun(runId);
|
|
122
|
+
if (log) {
|
|
123
|
+
const status = log.status === 'completed' ? chalk.green(log.status) :
|
|
124
|
+
log.status === 'failed' ? chalk.red(log.status) :
|
|
125
|
+
chalk.yellow(log.status);
|
|
126
|
+
console.log(` ${chalk.dim(runId)} ${status} ${chalk.dim(log.planName ?? '')}`);
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
console.log(` ${chalk.dim(runId)}`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
console.log();
|
|
133
|
+
});
|
|
134
|
+
cmd
|
|
135
|
+
.command('show <runId>')
|
|
136
|
+
.description('Show details of a plan run')
|
|
137
|
+
.action(async (runId) => {
|
|
138
|
+
const log = await AuditLogger.loadRun(runId);
|
|
139
|
+
if (!log) {
|
|
140
|
+
console.error(chalk.red(`\nRun "${runId}" not found\n`));
|
|
141
|
+
process.exit(1);
|
|
142
|
+
}
|
|
143
|
+
console.log(chalk.bold.cyan(`\nRun: ${runId}\n`));
|
|
144
|
+
console.log(` ${chalk.dim('Plan:')} ${log.planName ?? 'N/A'}`);
|
|
145
|
+
console.log(` ${chalk.dim('Status:')} ${log.status}`);
|
|
146
|
+
console.log(` ${chalk.dim('Started:')} ${log.startedAt}`);
|
|
147
|
+
console.log(` ${chalk.dim('Ended:')} ${log.completedAt ?? 'N/A'}`);
|
|
148
|
+
if (log.summary) {
|
|
149
|
+
console.log(`\n ${chalk.dim('Summary:')}`);
|
|
150
|
+
console.log(` Steps completed: ${log.summary.stepsCompleted}`);
|
|
151
|
+
console.log(` Steps failed: ${log.summary.stepsFailed}`);
|
|
152
|
+
console.log(` Files changed: ${log.summary.filesChanged}`);
|
|
153
|
+
console.log(` Duration: ${log.summary.durationMs}ms`);
|
|
154
|
+
}
|
|
155
|
+
if (log.steps.length > 0) {
|
|
156
|
+
console.log(`\n ${chalk.dim('Steps:')}`);
|
|
157
|
+
for (const step of log.steps) {
|
|
158
|
+
const icon = step.status === 'completed' ? chalk.green('✓') :
|
|
159
|
+
step.status === 'failed' ? chalk.red('✗') : chalk.dim('·');
|
|
160
|
+
console.log(` ${icon} ${step.stepId} [${step.status}]`);
|
|
161
|
+
if (step.error)
|
|
162
|
+
console.log(chalk.red(` ${step.error}`));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
console.log();
|
|
166
|
+
});
|
|
167
|
+
cmd
|
|
168
|
+
.command('approve <runId>')
|
|
169
|
+
.description('Approve a proposed plan run')
|
|
170
|
+
.action(async (runId) => {
|
|
171
|
+
const proposer = new PlanProposer();
|
|
172
|
+
const approved = await proposer.approve(runId);
|
|
173
|
+
if (approved) {
|
|
174
|
+
console.log(chalk.green(`\n✓ Run ${runId} approved`));
|
|
175
|
+
console.log(chalk.dim(`\n Execute with: agent plan execute ${runId}\n`));
|
|
176
|
+
}
|
|
177
|
+
else {
|
|
178
|
+
console.error(chalk.red(`\n✗ Could not approve run ${runId}\n`));
|
|
179
|
+
}
|
|
180
|
+
});
|
|
181
|
+
cmd
|
|
182
|
+
.command('execute <runId>')
|
|
183
|
+
.description('Execute an approved plan run')
|
|
184
|
+
.action(async (runId) => {
|
|
185
|
+
const configLoader = new ConfigLoader();
|
|
186
|
+
const config = await configLoader.load();
|
|
187
|
+
const proposer = new PlanProposer();
|
|
188
|
+
const proposal = await proposer.loadProposal(runId);
|
|
189
|
+
if (!proposal) {
|
|
190
|
+
console.error(chalk.red(`\nRun "${runId}" not found\n`));
|
|
191
|
+
process.exit(1);
|
|
192
|
+
}
|
|
193
|
+
if (proposal.run.status !== 'pending') {
|
|
194
|
+
console.error(chalk.red(`\nRun "${runId}" is not approved (status: ${proposal.run.status})\n`));
|
|
195
|
+
process.exit(1);
|
|
196
|
+
}
|
|
197
|
+
const registry = ToolRegistry.getInstance();
|
|
198
|
+
registerCoreTools(registry);
|
|
199
|
+
const policy = new PolicyEngine(config, process.cwd());
|
|
200
|
+
const skillLoader = new SkillLoader(config);
|
|
201
|
+
const llmRouter = new LLMRouter(config);
|
|
202
|
+
const skillRunner = new SkillRunner(registry, policy, llmRouter);
|
|
203
|
+
const engine = new ExecutionEngine(registry, policy, skillLoader, skillRunner);
|
|
204
|
+
const planRunner = new PlanRunner(engine);
|
|
205
|
+
await skillLoader.loadAll();
|
|
206
|
+
const ctx = {
|
|
207
|
+
runId,
|
|
208
|
+
cwd: process.cwd(),
|
|
209
|
+
config,
|
|
210
|
+
autonomous: false,
|
|
211
|
+
approvedPermissions: new Set(),
|
|
212
|
+
onApproval: promptApproval,
|
|
213
|
+
onProgress: (msg) => progress.info(msg),
|
|
214
|
+
};
|
|
215
|
+
const result = await planRunner.run(proposal.plan, ctx);
|
|
216
|
+
renderRunReport(result);
|
|
217
|
+
});
|
|
218
|
+
return cmd;
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../../../src/cli/commands/plan.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,wBAAgB,gBAAgB,IAAI,OAAO,CAuM1C"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { ConfigLoader } from '../../config/loader.js';
|
|
4
|
+
import { ToolRegistry } from '../../tools/registry.js';
|
|
5
|
+
import { PolicyEngine } from '../../policy/engine.js';
|
|
6
|
+
import { SkillLoader } from '../../skills/loader.js';
|
|
7
|
+
import { SkillRunner } from '../../skills/runner.js';
|
|
8
|
+
import { LLMRouter } from '../../llm/router.js';
|
|
9
|
+
import { registerCoreTools } from './init.js';
|
|
10
|
+
import { promptApproval } from '../ui/prompt.js';
|
|
11
|
+
import { progress } from '../ui/progress.js';
|
|
12
|
+
import { generateRunId } from '../../utils/paths.js';
|
|
13
|
+
import { zodToJsonSchema } from '../../utils/schema.js';
|
|
14
|
+
export function createRunCommand() {
|
|
15
|
+
const cmd = new Command('run')
|
|
16
|
+
.description('Run a goal or task')
|
|
17
|
+
.argument('<goal>', 'Goal description or task to run')
|
|
18
|
+
.option('-s, --skill <skillName>', 'Use a specific skill')
|
|
19
|
+
.option('-a, --autonomous', 'Run in autonomous mode (auto-approve low-risk actions)')
|
|
20
|
+
.option('--dry-run', 'Show what would be done without executing')
|
|
21
|
+
.action(async (goal, options) => {
|
|
22
|
+
const configLoader = new ConfigLoader();
|
|
23
|
+
const config = await configLoader.load();
|
|
24
|
+
const registry = ToolRegistry.getInstance();
|
|
25
|
+
registerCoreTools(registry);
|
|
26
|
+
const policy = new PolicyEngine(config, process.cwd());
|
|
27
|
+
const skillLoader = new SkillLoader(config);
|
|
28
|
+
const llmRouter = new LLMRouter(config);
|
|
29
|
+
const skillRunner = new SkillRunner(registry, policy, llmRouter);
|
|
30
|
+
await skillLoader.loadAll();
|
|
31
|
+
const ctx = {
|
|
32
|
+
runId: generateRunId(),
|
|
33
|
+
cwd: process.cwd(),
|
|
34
|
+
config,
|
|
35
|
+
autonomous: options.autonomous ?? false,
|
|
36
|
+
dryRun: options.dryRun ?? false,
|
|
37
|
+
approvedPermissions: new Set(),
|
|
38
|
+
onApproval: promptApproval,
|
|
39
|
+
onProgress: (msg) => progress.info(msg),
|
|
40
|
+
};
|
|
41
|
+
if (options.skill) {
|
|
42
|
+
// Run a specific skill
|
|
43
|
+
const skill = skillLoader.get(options.skill);
|
|
44
|
+
if (!skill) {
|
|
45
|
+
console.error(chalk.red(`Skill "${options.skill}" not found`));
|
|
46
|
+
console.log(chalk.dim('\nAvailable skills:'));
|
|
47
|
+
for (const s of skillLoader.list()) {
|
|
48
|
+
console.log(chalk.dim(` - ${s.manifest.name}`));
|
|
49
|
+
}
|
|
50
|
+
process.exit(1);
|
|
51
|
+
}
|
|
52
|
+
progress.start(`Running skill: ${skill.manifest.name}`, 1);
|
|
53
|
+
progress.step(skill.manifest.description);
|
|
54
|
+
const result = await skillRunner.run(skill, { goal }, ctx);
|
|
55
|
+
if (result.success) {
|
|
56
|
+
progress.success('Skill completed successfully');
|
|
57
|
+
if (result.output) {
|
|
58
|
+
console.log(chalk.dim('\nOutput:'));
|
|
59
|
+
console.log(typeof result.output === 'string' ? result.output : JSON.stringify(result.output, null, 2));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
progress.error(`Skill failed: ${result.error}`);
|
|
64
|
+
process.exit(1);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
else {
|
|
68
|
+
// Run goal via LLM with agentic tool-use loop
|
|
69
|
+
progress.start(`Running goal: ${goal}`, 1);
|
|
70
|
+
progress.step('Sending to LLM...');
|
|
71
|
+
try {
|
|
72
|
+
const allTools = registry.list();
|
|
73
|
+
const toolDefs = allTools.map((t) => {
|
|
74
|
+
const fullTool = registry.get(t.name);
|
|
75
|
+
return {
|
|
76
|
+
name: t.name,
|
|
77
|
+
description: t.description,
|
|
78
|
+
inputSchema: fullTool ? zodToJsonSchema(fullTool.inputSchema) : {},
|
|
79
|
+
};
|
|
80
|
+
});
|
|
81
|
+
const messages = [
|
|
82
|
+
{
|
|
83
|
+
role: 'system',
|
|
84
|
+
content: `You are an agent that accomplishes tasks using available tools.
|
|
85
|
+
You have access to the following tools: ${toolDefs.map(t => t.name).join(', ')}.
|
|
86
|
+
|
|
87
|
+
Available Skills:
|
|
88
|
+
${skillLoader.list().map(s => `- ${s.manifest.name}: ${s.manifest.description}`).join('\n')}
|
|
89
|
+
|
|
90
|
+
INSTRUCTIONS:
|
|
91
|
+
1. Use available tools to complete the user's goal step by step.
|
|
92
|
+
2. If the user asks for a task covered by a skill (like opening VS Code), you can execute the underlying tool (e.g. cmd.run) to achieve it.
|
|
93
|
+
3. Be proactive: if the user wants an action (open app, create file), DO IT. Do not just explain how.
|
|
94
|
+
4. When done, provide a final summary.`,
|
|
95
|
+
},
|
|
96
|
+
{ role: 'user', content: goal },
|
|
97
|
+
];
|
|
98
|
+
const maxIterations = 20;
|
|
99
|
+
let finalOutput = '';
|
|
100
|
+
for (let i = 0; i < maxIterations; i++) {
|
|
101
|
+
const response = await llmRouter.chat({
|
|
102
|
+
messages,
|
|
103
|
+
tools: toolDefs,
|
|
104
|
+
});
|
|
105
|
+
if (response.toolCalls && response.toolCalls.length > 0) {
|
|
106
|
+
// Push assistant message with tool calls
|
|
107
|
+
messages.push({
|
|
108
|
+
role: 'assistant',
|
|
109
|
+
content: response.content || '',
|
|
110
|
+
toolCalls: response.toolCalls,
|
|
111
|
+
});
|
|
112
|
+
for (const tc of response.toolCalls) {
|
|
113
|
+
const tool = registry.get(tc.name);
|
|
114
|
+
if (!tool) {
|
|
115
|
+
progress.warning(`Tool "${tc.name}" not found, skipping`);
|
|
116
|
+
messages.push({
|
|
117
|
+
role: 'tool',
|
|
118
|
+
content: JSON.stringify({ error: `Tool ${tc.name} not found` }),
|
|
119
|
+
toolCallId: tc.id,
|
|
120
|
+
});
|
|
121
|
+
continue;
|
|
122
|
+
}
|
|
123
|
+
// Check policy
|
|
124
|
+
const permResult = await policy.checkPermission({
|
|
125
|
+
tool: tc.name,
|
|
126
|
+
operation: tc.name,
|
|
127
|
+
description: `Goal "${goal}" calling ${tc.name}`,
|
|
128
|
+
permissions: tool.permissions,
|
|
129
|
+
args: tc.args,
|
|
130
|
+
riskLevel: 'medium',
|
|
131
|
+
}, ctx);
|
|
132
|
+
if (!permResult.allowed && permResult.requiresApproval) {
|
|
133
|
+
const approved = await policy.requestApproval({
|
|
134
|
+
tool: tc.name,
|
|
135
|
+
operation: tc.name,
|
|
136
|
+
description: `Goal "${goal}" calling ${tc.name}`,
|
|
137
|
+
permissions: tool.permissions,
|
|
138
|
+
args: tc.args,
|
|
139
|
+
riskLevel: 'medium',
|
|
140
|
+
}, ctx);
|
|
141
|
+
if (!approved) {
|
|
142
|
+
messages.push({
|
|
143
|
+
role: 'tool',
|
|
144
|
+
content: JSON.stringify({ error: 'Permission denied by user' }),
|
|
145
|
+
toolCallId: tc.id,
|
|
146
|
+
});
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
else if (!permResult.allowed) {
|
|
151
|
+
messages.push({
|
|
152
|
+
role: 'tool',
|
|
153
|
+
content: JSON.stringify({ error: permResult.reason }),
|
|
154
|
+
toolCallId: tc.id,
|
|
155
|
+
});
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
// Execute tool
|
|
159
|
+
progress.info(`⚡ ${tc.name}(${JSON.stringify(tc.args).substring(0, 80)})`);
|
|
160
|
+
const result = await registry.execute(tc.name, tc.args, ctx);
|
|
161
|
+
if (result.success) {
|
|
162
|
+
progress.info(` ✓ ${tc.name} succeeded`);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
progress.warning(` ✗ ${tc.name}: ${result.error}`);
|
|
166
|
+
}
|
|
167
|
+
messages.push({
|
|
168
|
+
role: 'tool',
|
|
169
|
+
content: JSON.stringify(result.data ?? { error: result.error }),
|
|
170
|
+
toolCallId: tc.id,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
else {
|
|
175
|
+
// No tool calls — LLM finished
|
|
176
|
+
finalOutput = response.content;
|
|
177
|
+
break;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
progress.success('Goal completed');
|
|
181
|
+
console.log(chalk.dim('\nResult:'));
|
|
182
|
+
console.log(finalOutput);
|
|
183
|
+
}
|
|
184
|
+
catch (err) {
|
|
185
|
+
progress.error(`Failed: ${err.message}`);
|
|
186
|
+
process.exit(1);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
return cmd;
|
|
191
|
+
}
|
|
192
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../../src/cli/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASpC,wBAAgB,mBAAmB,IAAI,OAAO,CAgK7C"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import chalk from 'chalk';
|
|
3
|
+
import { mkdir, writeFile } from 'node:fs/promises';
|
|
4
|
+
import path from 'node:path';
|
|
5
|
+
import { ConfigLoader } from '../../config/loader.js';
|
|
6
|
+
import { SkillLoader } from '../../skills/loader.js';
|
|
7
|
+
import { validateSkill } from '../../skills/validator.js';
|
|
8
|
+
import { getSkillsDir } from '../../utils/paths.js';
|
|
9
|
+
export function createSkillsCommand() {
|
|
10
|
+
const cmd = new Command('skills')
|
|
11
|
+
.description('Manage skills');
|
|
12
|
+
cmd
|
|
13
|
+
.command('list')
|
|
14
|
+
.description('List installed skills')
|
|
15
|
+
.action(async () => {
|
|
16
|
+
const configLoader = new ConfigLoader();
|
|
17
|
+
const config = await configLoader.load();
|
|
18
|
+
const loader = new SkillLoader(config);
|
|
19
|
+
const skills = await loader.loadAll();
|
|
20
|
+
if (skills.length === 0) {
|
|
21
|
+
console.log(chalk.yellow('\nNo skills installed.'));
|
|
22
|
+
console.log(chalk.dim(' Create one: agent skills create <name>\n'));
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
console.log(chalk.bold.cyan('\nInstalled Skills\n'));
|
|
26
|
+
for (const skill of skills) {
|
|
27
|
+
const state = skill.manifest.state ?? 'draft';
|
|
28
|
+
const stateColor = state === 'approved' ? chalk.green : state === 'deprecated' ? chalk.red : chalk.yellow;
|
|
29
|
+
console.log(` ${chalk.white.bold(skill.manifest.name)}` +
|
|
30
|
+
` ${chalk.dim(`v${skill.manifest.version}`)}` +
|
|
31
|
+
` ${stateColor(`[${state}]`)}`);
|
|
32
|
+
console.log(chalk.dim(` ${skill.manifest.description}`));
|
|
33
|
+
console.log(chalk.dim(` Tools: ${skill.manifest.tools.join(', ')}`));
|
|
34
|
+
console.log();
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
cmd
|
|
38
|
+
.command('create <name>')
|
|
39
|
+
.description('Create a new skill from template')
|
|
40
|
+
.action(async (name) => {
|
|
41
|
+
const skillDir = path.join(getSkillsDir(), name);
|
|
42
|
+
await mkdir(skillDir, { recursive: true });
|
|
43
|
+
const manifest = {
|
|
44
|
+
name,
|
|
45
|
+
version: '0.1.0',
|
|
46
|
+
description: `Description for ${name}`,
|
|
47
|
+
inputs: {},
|
|
48
|
+
tools: ['fs.read'],
|
|
49
|
+
permissions: { required: ['filesystem.read'] },
|
|
50
|
+
entrypoint: 'prompt.md',
|
|
51
|
+
state: 'draft',
|
|
52
|
+
};
|
|
53
|
+
await writeFile(path.join(skillDir, 'skill.json'), JSON.stringify(manifest, null, 2) + '\n', 'utf-8');
|
|
54
|
+
await writeFile(path.join(skillDir, 'prompt.md'), `# ${name}\n\n## Description\nDescribe what this skill does.\n\n## Instructions\nProvide instructions for the LLM.\n\n## Input Variables\n{{input}}\n`, 'utf-8');
|
|
55
|
+
console.log(chalk.green(`\n✓ Created skill "${name}" at ${skillDir}`));
|
|
56
|
+
console.log(chalk.dim(` Edit skill.json and prompt.md to customize.\n`));
|
|
57
|
+
});
|
|
58
|
+
cmd
|
|
59
|
+
.command('install <source>')
|
|
60
|
+
.description('Install a skill from a local path or registry')
|
|
61
|
+
.action(async (source) => {
|
|
62
|
+
const configLoader = new ConfigLoader();
|
|
63
|
+
const config = await configLoader.load();
|
|
64
|
+
const loader = new SkillLoader(config);
|
|
65
|
+
try {
|
|
66
|
+
const skill = await loader.installFromPath(source);
|
|
67
|
+
if (skill) {
|
|
68
|
+
console.log(chalk.green(`\n✓ Installed skill "${skill.manifest.name}" v${skill.manifest.version}\n`));
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
catch (err) {
|
|
72
|
+
console.error(chalk.red(`\n✗ Failed to install: ${err.message}\n`));
|
|
73
|
+
process.exit(1);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
cmd
|
|
77
|
+
.command('remove <name>')
|
|
78
|
+
.description('Remove an installed skill')
|
|
79
|
+
.action(async (name) => {
|
|
80
|
+
const configLoader = new ConfigLoader();
|
|
81
|
+
const config = await configLoader.load();
|
|
82
|
+
const loader = new SkillLoader(config);
|
|
83
|
+
await loader.loadAll();
|
|
84
|
+
const removed = await loader.remove(name);
|
|
85
|
+
if (removed) {
|
|
86
|
+
console.log(chalk.green(`\n✓ Removed skill "${name}"\n`));
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
console.error(chalk.red(`\n✗ Skill "${name}" not found\n`));
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
cmd
|
|
93
|
+
.command('info <name>')
|
|
94
|
+
.description('Show detailed information about a skill')
|
|
95
|
+
.action(async (name) => {
|
|
96
|
+
const configLoader = new ConfigLoader();
|
|
97
|
+
const config = await configLoader.load();
|
|
98
|
+
const loader = new SkillLoader(config);
|
|
99
|
+
await loader.loadAll();
|
|
100
|
+
const skill = loader.get(name);
|
|
101
|
+
if (!skill) {
|
|
102
|
+
console.error(chalk.red(`\nSkill "${name}" not found\n`));
|
|
103
|
+
process.exit(1);
|
|
104
|
+
}
|
|
105
|
+
const m = skill.manifest;
|
|
106
|
+
console.log(chalk.bold.cyan(`\n${m.name} v${m.version}\n`));
|
|
107
|
+
console.log(` ${chalk.dim('Description:')} ${m.description}`);
|
|
108
|
+
console.log(` ${chalk.dim('State:')} ${m.state ?? 'draft'}`);
|
|
109
|
+
console.log(` ${chalk.dim('Entrypoint:')} ${m.entrypoint}`);
|
|
110
|
+
console.log(` ${chalk.dim('Tools:')} ${m.tools.join(', ')}`);
|
|
111
|
+
console.log(` ${chalk.dim('Permissions:')} ${m.permissions.required.join(', ')}`);
|
|
112
|
+
console.log(` ${chalk.dim('Path:')} ${skill.path}`);
|
|
113
|
+
if (m.constraints) {
|
|
114
|
+
if (m.constraints.os)
|
|
115
|
+
console.log(` ${chalk.dim('OS:')} ${m.constraints.os.join(', ')}`);
|
|
116
|
+
if (m.constraints.binaries)
|
|
117
|
+
console.log(` ${chalk.dim('Binaries:')} ${m.constraints.binaries.join(', ')}`);
|
|
118
|
+
}
|
|
119
|
+
// Run validation
|
|
120
|
+
const validation = await validateSkill(skill);
|
|
121
|
+
console.log(`\n ${chalk.dim('Valid:')} ${validation.valid ? chalk.green('Yes') : chalk.red('No')}`);
|
|
122
|
+
if (!validation.valid) {
|
|
123
|
+
for (const err of validation.errors) {
|
|
124
|
+
console.log(chalk.red(` - ${err}`));
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
if (validation.warnings.length > 0) {
|
|
128
|
+
for (const w of validation.warnings) {
|
|
129
|
+
console.log(chalk.yellow(` ⚠ ${w}`));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
console.log();
|
|
133
|
+
});
|
|
134
|
+
cmd
|
|
135
|
+
.command('update')
|
|
136
|
+
.description('Update all installed skills')
|
|
137
|
+
.action(async () => {
|
|
138
|
+
console.log(chalk.yellow('\nSkill updates from registry not yet available (Phase 3)'));
|
|
139
|
+
console.log(chalk.dim(' Use `agent skills install ./path` to update from local paths\n'));
|
|
140
|
+
});
|
|
141
|
+
return cmd;
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../../src/cli/commands/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAUpC;;GAEG;AACH,wBAAgB,SAAS,IAAI,OAAO,CAsBnC"}
|