clayton-forge 0.1.0 → 0.1.2
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/dist/commands/new.d.ts.map +1 -0
- package/dist/commands/new.js.map +1 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +1 -1
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/test.d.ts.map +1 -0
- package/dist/commands/test.js +1 -1
- package/dist/commands/test.js.map +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -0
- package/package.json +8 -5
- package/package.json:Zone.Identifier +0 -0
- package/src/commands/new.ts +0 -281
- package/src/commands/new.ts:Zone.Identifier +0 -0
- package/src/commands/run.ts +0 -97
- package/src/commands/run.ts:Zone.Identifier +0 -0
- package/src/commands/test.ts +0 -122
- package/src/commands/test.ts:Zone.Identifier +0 -0
- package/src/index.ts +0 -115
- package/src/index.ts:Zone.Identifier +0 -0
- package/tsconfig.json +0 -9
- package/tsconfig.json:Zone.Identifier +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.d.ts","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"AAsCA,wBAAsB,UAAU,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwIlE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"new.js","sourceRoot":"","sources":["../../src/commands/new.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAQA,wBAAsB,UAAU,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwFpF"}
|
package/dist/commands/run.js
CHANGED
|
@@ -44,7 +44,7 @@ const ora_1 = __importDefault(require("ora"));
|
|
|
44
44
|
// cforge run [agent-dir]
|
|
45
45
|
// ─────────────────────────────────────────────
|
|
46
46
|
async function commandRun(agentDir, inputArg) {
|
|
47
|
-
const { parseAgentFile, findAgentFile, executeAgent } = await Promise.resolve().then(() => __importStar(require("
|
|
47
|
+
const { parseAgentFile, findAgentFile, executeAgent } = await Promise.resolve().then(() => __importStar(require("clayton-forge-core")));
|
|
48
48
|
// 1. Find agent.yaml
|
|
49
49
|
const searchDir = agentDir ? require("path").resolve(agentDir) : process.cwd();
|
|
50
50
|
const agentPath = require("fs").existsSync(require("path").join(searchDir, "agent.yaml"))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.d.ts","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"AASA,wBAAsB,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgHlE"}
|
package/dist/commands/test.js
CHANGED
|
@@ -45,7 +45,7 @@ const ora_1 = __importDefault(require("ora"));
|
|
|
45
45
|
// cforge test [agent-dir]
|
|
46
46
|
// ─────────────────────────────────────────────
|
|
47
47
|
async function commandTest(agentDir) {
|
|
48
|
-
const { parseAgentFile, parseTestFile, runTestSuite, findAgentFile } = await Promise.resolve().then(() => __importStar(require("
|
|
48
|
+
const { parseAgentFile, parseTestFile, runTestSuite, findAgentFile } = await Promise.resolve().then(() => __importStar(require("clayton-forge-core")));
|
|
49
49
|
// 1. Find agent.yaml
|
|
50
50
|
const searchDir = agentDir ? path.resolve(agentDir) : process.cwd();
|
|
51
51
|
const agentYamlPath = fs.existsSync(path.join(searchDir, "agent.yaml"))
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test.js","sourceRoot":"","sources":["../../src/commands/test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -97,7 +97,7 @@ program
|
|
|
97
97
|
.command("validate [agent-dir]")
|
|
98
98
|
.description("Validate agent.yaml without running the agent")
|
|
99
99
|
.action(async (agentDir) => {
|
|
100
|
-
const { parseAgentFile, findAgentFile } = await Promise.resolve().then(() => __importStar(require("
|
|
100
|
+
const { parseAgentFile, findAgentFile } = await Promise.resolve().then(() => __importStar(require("clayton-forge-core")));
|
|
101
101
|
const path = require("path");
|
|
102
102
|
const fs = require("fs");
|
|
103
103
|
const searchDir = agentDir ? path.resolve(agentDir) : process.cwd();
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,25 +1,28 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clayton-forge",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Clayton Forge CLI — build AI agents with confidence",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
7
7
|
"cforge": "dist/index.js"
|
|
8
8
|
},
|
|
9
|
+
"files": [
|
|
10
|
+
"dist/"
|
|
11
|
+
],
|
|
9
12
|
"scripts": {
|
|
10
13
|
"build": "tsc",
|
|
11
14
|
"dev": "tsc --watch",
|
|
12
15
|
"clean": "rm -rf dist"
|
|
13
16
|
},
|
|
14
17
|
"dependencies": {
|
|
15
|
-
"
|
|
16
|
-
"chalk": "^4.1.2",
|
|
18
|
+
"clayton-forge-core": "*",
|
|
17
19
|
"commander": "^12.1.0",
|
|
18
|
-
"inquirer": "^8.
|
|
20
|
+
"inquirer": "^8.0.0",
|
|
21
|
+
"chalk": "^4.1.2",
|
|
19
22
|
"ora": "^5.4.1"
|
|
20
23
|
},
|
|
21
24
|
"devDependencies": {
|
|
22
|
-
"@types/inquirer": "^8.
|
|
25
|
+
"@types/inquirer": "^8.0.0",
|
|
23
26
|
"@types/node": "^20.14.0",
|
|
24
27
|
"typescript": "^5.4.5"
|
|
25
28
|
}
|
|
Binary file
|
package/src/commands/new.ts
DELETED
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
import inquirer from "inquirer";
|
|
2
|
-
import * as fs from "fs";
|
|
3
|
-
import * as path from "path";
|
|
4
|
-
import chalk from "chalk";
|
|
5
|
-
import ora from "ora";
|
|
6
|
-
|
|
7
|
-
// ─────────────────────────────────────────────
|
|
8
|
-
// Tipos locais (para evitar import circular durante build inicial)
|
|
9
|
-
// ─────────────────────────────────────────────
|
|
10
|
-
|
|
11
|
-
interface WizardAnswers {
|
|
12
|
-
name: string;
|
|
13
|
-
description: string;
|
|
14
|
-
type: string;
|
|
15
|
-
llm_provider: string;
|
|
16
|
-
llm_model: string;
|
|
17
|
-
output_format: string;
|
|
18
|
-
trust_level: number;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// ─────────────────────────────────────────────
|
|
22
|
-
// Helpers de display
|
|
23
|
-
// ─────────────────────────────────────────────
|
|
24
|
-
|
|
25
|
-
function header() {
|
|
26
|
-
console.log("");
|
|
27
|
-
console.log(chalk.bold.white(" ╔═══════════════════════════════════╗"));
|
|
28
|
-
console.log(chalk.bold.white(" ║") + chalk.bold.cyan(" CLAYTON FORGE — new ") + chalk.bold.white("║"));
|
|
29
|
-
console.log(chalk.bold.white(" ╚═══════════════════════════════════╝"));
|
|
30
|
-
console.log("");
|
|
31
|
-
console.log(chalk.gray(" Let's create your agent. Answer a few questions."));
|
|
32
|
-
console.log(chalk.gray(" Press Ctrl+C at any time to cancel.\n"));
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// ─────────────────────────────────────────────
|
|
36
|
-
// Wizard
|
|
37
|
-
// ─────────────────────────────────────────────
|
|
38
|
-
|
|
39
|
-
export async function commandNew(targetDir?: string): Promise<void> {
|
|
40
|
-
header();
|
|
41
|
-
|
|
42
|
-
const answers = await inquirer.prompt<WizardAnswers>([
|
|
43
|
-
{
|
|
44
|
-
type: "input",
|
|
45
|
-
name: "name",
|
|
46
|
-
message: chalk.white("Agent name") + chalk.gray(" (kebab-case, e.g. invoice-classifier):"),
|
|
47
|
-
validate: (v: string) =>
|
|
48
|
-
/^[a-z][a-z0-9-]*$/.test(v) || "Use lowercase letters, numbers, and hyphens only",
|
|
49
|
-
},
|
|
50
|
-
{
|
|
51
|
-
type: "input",
|
|
52
|
-
name: "description",
|
|
53
|
-
message: chalk.white("What does this agent do?"),
|
|
54
|
-
validate: (v: string) => v.trim().length > 5 || "Please write a short description",
|
|
55
|
-
},
|
|
56
|
-
{
|
|
57
|
-
type: "list",
|
|
58
|
-
name: "type",
|
|
59
|
-
message: chalk.white("Agent type:"),
|
|
60
|
-
choices: [
|
|
61
|
-
{ name: "reactive — receives input → processes → responds", value: "reactive" },
|
|
62
|
-
{ name: "proactive — acts on triggers without waiting for input", value: "proactive" },
|
|
63
|
-
{ name: "pipeline — sequential steps, each feeding the next", value: "pipeline" },
|
|
64
|
-
{ name: "orchestrator— coordinates other agents", value: "orchestrator" },
|
|
65
|
-
{ name: "worker — executed by an orchestrator", value: "worker" },
|
|
66
|
-
],
|
|
67
|
-
},
|
|
68
|
-
{
|
|
69
|
-
type: "list",
|
|
70
|
-
name: "llm_provider",
|
|
71
|
-
message: chalk.white("LLM provider:"),
|
|
72
|
-
choices: [
|
|
73
|
-
{ name: "anthropic (Claude — requires ANTHROPIC_API_KEY)", value: "anthropic" },
|
|
74
|
-
{ name: "openai (GPT — requires OPENAI_API_KEY)", value: "openai" },
|
|
75
|
-
{ name: "ollama (local — requires Ollama running)", value: "ollama" },
|
|
76
|
-
{ name: "lmstudio (local — requires LM Studio running)", value: "lmstudio" },
|
|
77
|
-
{ name: "openai-compatible (any OpenAI-compatible API)", value: "openai-compatible" },
|
|
78
|
-
{ name: "none (rule-based, no LLM)", value: "none" },
|
|
79
|
-
],
|
|
80
|
-
},
|
|
81
|
-
{
|
|
82
|
-
type: "input",
|
|
83
|
-
name: "llm_model",
|
|
84
|
-
message: chalk.white("Model name:"),
|
|
85
|
-
when: (a: WizardAnswers) => a.llm_provider !== "none",
|
|
86
|
-
default: (a: WizardAnswers) => {
|
|
87
|
-
const defaults: Record<string, string> = {
|
|
88
|
-
anthropic: "claude-sonnet-4-6",
|
|
89
|
-
openai: "gpt-4o-mini",
|
|
90
|
-
ollama: "llama3",
|
|
91
|
-
lmstudio: "local-model",
|
|
92
|
-
"openai-compatible": "default",
|
|
93
|
-
};
|
|
94
|
-
return defaults[a.llm_provider] ?? "";
|
|
95
|
-
},
|
|
96
|
-
},
|
|
97
|
-
{
|
|
98
|
-
type: "list",
|
|
99
|
-
name: "output_format",
|
|
100
|
-
message: chalk.white("Output format:"),
|
|
101
|
-
choices: [
|
|
102
|
-
{ name: "text — plain text response", value: "text" },
|
|
103
|
-
{ name: "json — structured JSON (add output schema)", value: "json" },
|
|
104
|
-
{ name: "markdown — formatted markdown", value: "markdown" },
|
|
105
|
-
],
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
type: "list",
|
|
109
|
-
name: "trust_level",
|
|
110
|
-
message: chalk.white("Trust level:"),
|
|
111
|
-
choices: [
|
|
112
|
-
{ name: "0 — sandboxed (no external access)", value: 0 },
|
|
113
|
-
{ name: "1 — read-only (reads data, no writes)", value: 1 },
|
|
114
|
-
{ name: "2 — write (reads and writes)", value: 2 },
|
|
115
|
-
{ name: "3 — admin (full control)", value: 3 },
|
|
116
|
-
],
|
|
117
|
-
},
|
|
118
|
-
]);
|
|
119
|
-
|
|
120
|
-
// Destino
|
|
121
|
-
const projectName = answers.name;
|
|
122
|
-
const dest = targetDir ? path.resolve(targetDir, projectName) : path.resolve(process.cwd(), projectName);
|
|
123
|
-
|
|
124
|
-
// Verificar se pasta já existe
|
|
125
|
-
if (fs.existsSync(dest)) {
|
|
126
|
-
console.log(chalk.red(`\n✗ Directory already exists: ${dest}`));
|
|
127
|
-
process.exit(1);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const spinner = ora("Creating your agent...").start();
|
|
131
|
-
|
|
132
|
-
try {
|
|
133
|
-
// Criar pasta
|
|
134
|
-
fs.mkdirSync(dest, { recursive: true });
|
|
135
|
-
|
|
136
|
-
// Gerar agent.yaml
|
|
137
|
-
const apiKeyVar = getApiKeyVar(answers.llm_provider);
|
|
138
|
-
const agentYaml = buildAgentYaml(answers, apiKeyVar);
|
|
139
|
-
fs.writeFileSync(path.join(dest, "agent.yaml"), agentYaml);
|
|
140
|
-
|
|
141
|
-
// Gerar agent.test.yaml
|
|
142
|
-
const testYaml = buildTestYaml(answers.name);
|
|
143
|
-
fs.writeFileSync(path.join(dest, "agent.test.yaml"), testYaml);
|
|
144
|
-
|
|
145
|
-
// Gerar README.md
|
|
146
|
-
const readme = buildReadme(answers);
|
|
147
|
-
fs.writeFileSync(path.join(dest, "README.md"), readme);
|
|
148
|
-
|
|
149
|
-
// Gerar .env.example
|
|
150
|
-
if (apiKeyVar) {
|
|
151
|
-
fs.writeFileSync(path.join(dest, ".env.example"), `${apiKeyVar}=your-api-key-here\n`);
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
spinner.succeed(chalk.green("Agent created!"));
|
|
155
|
-
|
|
156
|
-
// Summary
|
|
157
|
-
console.log("");
|
|
158
|
-
console.log(chalk.bold(" 📁 " + dest));
|
|
159
|
-
console.log(chalk.gray(" ├── agent.yaml"));
|
|
160
|
-
console.log(chalk.gray(" ├── agent.test.yaml"));
|
|
161
|
-
console.log(chalk.gray(" ├── README.md"));
|
|
162
|
-
if (apiKeyVar) console.log(chalk.gray(" └── .env.example"));
|
|
163
|
-
console.log("");
|
|
164
|
-
console.log(chalk.bold.cyan(" Next steps:"));
|
|
165
|
-
console.log(chalk.white(` $ cd ${projectName}`));
|
|
166
|
-
if (apiKeyVar) console.log(chalk.white(` $ cp .env.example .env # add your API key`));
|
|
167
|
-
console.log(chalk.white(` $ cforge run # execute the agent`));
|
|
168
|
-
console.log(chalk.white(` $ cforge test # run tests`));
|
|
169
|
-
console.log("");
|
|
170
|
-
} catch (err) {
|
|
171
|
-
spinner.fail("Failed to create agent");
|
|
172
|
-
console.error(err);
|
|
173
|
-
process.exit(1);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
// ─────────────────────────────────────────────
|
|
178
|
-
// Builders
|
|
179
|
-
// ─────────────────────────────────────────────
|
|
180
|
-
|
|
181
|
-
function getApiKeyVar(provider: string): string | null {
|
|
182
|
-
const map: Record<string, string> = {
|
|
183
|
-
anthropic: "ANTHROPIC_API_KEY",
|
|
184
|
-
openai: "OPENAI_API_KEY",
|
|
185
|
-
};
|
|
186
|
-
return map[provider] ?? null;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
function buildAgentYaml(answers: WizardAnswers, apiKeyVar: string | null): string {
|
|
190
|
-
const lines = [
|
|
191
|
-
`name: "${answers.name}"`,
|
|
192
|
-
`version: "1.0.0"`,
|
|
193
|
-
`description: "${answers.description}"`,
|
|
194
|
-
`type: ${answers.type}`,
|
|
195
|
-
`trust_level: ${answers.trust_level}`,
|
|
196
|
-
``,
|
|
197
|
-
`llm:`,
|
|
198
|
-
` provider: ${answers.llm_provider}`,
|
|
199
|
-
];
|
|
200
|
-
|
|
201
|
-
if (answers.llm_provider !== "none") {
|
|
202
|
-
lines.push(` model: ${answers.llm_model}`);
|
|
203
|
-
if (apiKeyVar) {
|
|
204
|
-
lines.push(` api_key: "\${${apiKeyVar}}"`);
|
|
205
|
-
}
|
|
206
|
-
lines.push(` temperature: 0.1`);
|
|
207
|
-
lines.push(` max_tokens: 1000`);
|
|
208
|
-
}
|
|
209
|
-
|
|
210
|
-
lines.push(``);
|
|
211
|
-
lines.push(`prompt:`);
|
|
212
|
-
lines.push(` system: |`);
|
|
213
|
-
lines.push(` You are ${answers.description}.`);
|
|
214
|
-
lines.push(` Be concise, accurate, and helpful.`);
|
|
215
|
-
lines.push(` user_template: "{{input}}"`);
|
|
216
|
-
lines.push(` variables:`);
|
|
217
|
-
lines.push(` - name: input`);
|
|
218
|
-
lines.push(` required: true`);
|
|
219
|
-
lines.push(` description: "The user's input"`);
|
|
220
|
-
lines.push(``);
|
|
221
|
-
lines.push(`output:`);
|
|
222
|
-
lines.push(` format: ${answers.output_format}`);
|
|
223
|
-
lines.push(``);
|
|
224
|
-
lines.push(`tests:`);
|
|
225
|
-
lines.push(` - file: agent.test.yaml`);
|
|
226
|
-
lines.push(``);
|
|
227
|
-
|
|
228
|
-
return lines.join("\n");
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
function buildTestYaml(agentName: string): string {
|
|
232
|
-
return [
|
|
233
|
-
`agent: "${agentName}"`,
|
|
234
|
-
``,
|
|
235
|
-
`cases:`,
|
|
236
|
-
` - name: "basic test"`,
|
|
237
|
-
` input:`,
|
|
238
|
-
` input: "Hello, world!"`,
|
|
239
|
-
` expected_contains:`,
|
|
240
|
-
` - "Hello" # adjust to match your agent's expected output`,
|
|
241
|
-
` timeout_ms: 30000`,
|
|
242
|
-
``,
|
|
243
|
-
].join("\n");
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
function buildReadme(answers: WizardAnswers): string {
|
|
247
|
-
return [
|
|
248
|
-
`# ${answers.name}`,
|
|
249
|
-
``,
|
|
250
|
-
`> ${answers.description}`,
|
|
251
|
-
``,
|
|
252
|
-
`## Overview`,
|
|
253
|
-
``,
|
|
254
|
-
`| Field | Value |`,
|
|
255
|
-
`|-------|-------|`,
|
|
256
|
-
`| **Type** | ${answers.type} |`,
|
|
257
|
-
`| **LLM** | ${answers.llm_provider}${answers.llm_model ? ` / ${answers.llm_model}` : ""} |`,
|
|
258
|
-
`| **Output** | ${answers.output_format} |`,
|
|
259
|
-
`| **Trust Level** | ${answers.trust_level} |`,
|
|
260
|
-
``,
|
|
261
|
-
`## Usage`,
|
|
262
|
-
``,
|
|
263
|
-
`\`\`\`bash`,
|
|
264
|
-
`cforge run # execute the agent`,
|
|
265
|
-
`cforge test # run test suite`,
|
|
266
|
-
`\`\`\``,
|
|
267
|
-
``,
|
|
268
|
-
`## Configuration`,
|
|
269
|
-
``,
|
|
270
|
-
`Edit \`agent.yaml\` to customize the agent's behavior.`,
|
|
271
|
-
``,
|
|
272
|
-
`## Tests`,
|
|
273
|
-
``,
|
|
274
|
-
`Edit \`agent.test.yaml\` to add test cases.`,
|
|
275
|
-
``,
|
|
276
|
-
`---`,
|
|
277
|
-
``,
|
|
278
|
-
`Built with [Clayton Forge](https://github.com/devclaytonn10/clayton-forge)`,
|
|
279
|
-
``,
|
|
280
|
-
].join("\n");
|
|
281
|
-
}
|
|
Binary file
|
package/src/commands/run.ts
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import * as readline from "readline";
|
|
2
|
-
import chalk from "chalk";
|
|
3
|
-
import ora from "ora";
|
|
4
|
-
|
|
5
|
-
// ─────────────────────────────────────────────
|
|
6
|
-
// cforge run [agent-dir]
|
|
7
|
-
// ─────────────────────────────────────────────
|
|
8
|
-
|
|
9
|
-
export async function commandRun(agentDir?: string, inputArg?: string): Promise<void> {
|
|
10
|
-
const { parseAgentFile, findAgentFile, executeAgent } = await import("@clayton-forge/core");
|
|
11
|
-
|
|
12
|
-
// 1. Find agent.yaml
|
|
13
|
-
const searchDir = agentDir ? require("path").resolve(agentDir) : process.cwd();
|
|
14
|
-
const agentPath =
|
|
15
|
-
require("fs").existsSync(require("path").join(searchDir, "agent.yaml"))
|
|
16
|
-
? require("path").join(searchDir, "agent.yaml")
|
|
17
|
-
: findAgentFile(searchDir);
|
|
18
|
-
|
|
19
|
-
if (!agentPath) {
|
|
20
|
-
console.error(chalk.red("✗ No agent.yaml found. Run this command inside an agent directory."));
|
|
21
|
-
process.exit(1);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
// 2. Parse
|
|
25
|
-
let agent: Awaited<ReturnType<typeof parseAgentFile>>;
|
|
26
|
-
try {
|
|
27
|
-
agent = parseAgentFile(agentPath);
|
|
28
|
-
} catch (err) {
|
|
29
|
-
console.error(chalk.red("✗ Invalid agent.yaml:"), err instanceof Error ? err.message : err);
|
|
30
|
-
process.exit(1);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
console.log("");
|
|
34
|
-
console.log(chalk.bold.cyan(` ▶ ${agent.name}`) + chalk.gray(` v${agent.version}`));
|
|
35
|
-
console.log(chalk.gray(` ${agent.description ?? ""}`));
|
|
36
|
-
console.log(chalk.gray(` Provider: ${agent.llm.provider}${agent.llm.model ? ` / ${agent.llm.model}` : ""}`));
|
|
37
|
-
console.log("");
|
|
38
|
-
|
|
39
|
-
// 3. Collect input
|
|
40
|
-
const requiredVars = agent.prompt.variables.filter((v) => v.required);
|
|
41
|
-
const variables: Record<string, string> = {};
|
|
42
|
-
|
|
43
|
-
if (inputArg && requiredVars.length <= 1) {
|
|
44
|
-
// Se só tem uma variável obrigatória, usa o argumento direto
|
|
45
|
-
const varName = requiredVars[0]?.name ?? "input";
|
|
46
|
-
variables[varName] = inputArg;
|
|
47
|
-
} else {
|
|
48
|
-
// Interactive input
|
|
49
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
50
|
-
const question = (prompt: string): Promise<string> =>
|
|
51
|
-
new Promise((resolve) => rl.question(prompt, resolve));
|
|
52
|
-
|
|
53
|
-
for (const variable of agent.prompt.variables) {
|
|
54
|
-
if (variable.required || !variable.default) {
|
|
55
|
-
const defaultHint = variable.default ? chalk.gray(` (default: ${variable.default})`) : "";
|
|
56
|
-
const descHint = variable.description ? chalk.gray(` — ${variable.description}`) : "";
|
|
57
|
-
const value = await question(` ${chalk.white(variable.name)}${descHint}${defaultHint}: `);
|
|
58
|
-
variables[variable.name] = value || variable.default || "";
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
rl.close();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
console.log("");
|
|
65
|
-
|
|
66
|
-
// 4. Execute
|
|
67
|
-
const spinner = ora("Running agent...").start();
|
|
68
|
-
const result = await executeAgent(agent, { variables });
|
|
69
|
-
|
|
70
|
-
if (result.success) {
|
|
71
|
-
spinner.succeed(chalk.green(`Done`) + chalk.gray(` (${result.duration_ms}ms)`));
|
|
72
|
-
console.log("");
|
|
73
|
-
console.log(chalk.bold(" Output:"));
|
|
74
|
-
console.log("");
|
|
75
|
-
|
|
76
|
-
// Format output based on type
|
|
77
|
-
const lines = result.output.split("\n");
|
|
78
|
-
for (const line of lines) {
|
|
79
|
-
console.log(" " + line);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (result.llm_response?.usage) {
|
|
83
|
-
const { input_tokens, output_tokens } = result.llm_response.usage;
|
|
84
|
-
console.log("");
|
|
85
|
-
console.log(
|
|
86
|
-
chalk.gray(` Tokens: ${input_tokens ?? "?"} in / ${output_tokens ?? "?"} out`)
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
} else {
|
|
90
|
-
spinner.fail(chalk.red("Execution failed"));
|
|
91
|
-
console.log("");
|
|
92
|
-
console.error(chalk.red(" Error:"), result.error);
|
|
93
|
-
process.exit(1);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
console.log("");
|
|
97
|
-
}
|
|
Binary file
|
package/src/commands/test.ts
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import * as path from "path";
|
|
2
|
-
import * as fs from "fs";
|
|
3
|
-
import chalk from "chalk";
|
|
4
|
-
import ora from "ora";
|
|
5
|
-
|
|
6
|
-
// ─────────────────────────────────────────────
|
|
7
|
-
// cforge test [agent-dir]
|
|
8
|
-
// ─────────────────────────────────────────────
|
|
9
|
-
|
|
10
|
-
export async function commandTest(agentDir?: string): Promise<void> {
|
|
11
|
-
const { parseAgentFile, parseTestFile, runTestSuite, findAgentFile } =
|
|
12
|
-
await import("@clayton-forge/core");
|
|
13
|
-
|
|
14
|
-
// 1. Find agent.yaml
|
|
15
|
-
const searchDir = agentDir ? path.resolve(agentDir) : process.cwd();
|
|
16
|
-
const agentYamlPath = fs.existsSync(path.join(searchDir, "agent.yaml"))
|
|
17
|
-
? path.join(searchDir, "agent.yaml")
|
|
18
|
-
: findAgentFile(searchDir);
|
|
19
|
-
|
|
20
|
-
if (!agentYamlPath) {
|
|
21
|
-
console.error(chalk.red("✗ No agent.yaml found."));
|
|
22
|
-
process.exit(1);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
// 2. Parse agent
|
|
26
|
-
let agent: Awaited<ReturnType<typeof parseAgentFile>>;
|
|
27
|
-
try {
|
|
28
|
-
agent = parseAgentFile(agentYamlPath);
|
|
29
|
-
} catch (err) {
|
|
30
|
-
console.error(chalk.red("✗ Invalid agent.yaml:"), err instanceof Error ? err.message : err);
|
|
31
|
-
process.exit(1);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
// 3. Find test files
|
|
35
|
-
const agentDir2 = path.dirname(agentYamlPath);
|
|
36
|
-
const testFiles = (agent.tests ?? []).map((t) => path.resolve(agentDir2, t.file));
|
|
37
|
-
|
|
38
|
-
// Fallback: tenta agent.test.yaml se não há tests declarados
|
|
39
|
-
if (testFiles.length === 0) {
|
|
40
|
-
const fallback = path.join(agentDir2, "agent.test.yaml");
|
|
41
|
-
if (fs.existsSync(fallback)) testFiles.push(fallback);
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
if (testFiles.length === 0) {
|
|
45
|
-
console.error(chalk.red("✗ No test files found. Create agent.test.yaml first."));
|
|
46
|
-
process.exit(1);
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
console.log("");
|
|
50
|
-
console.log(chalk.bold.cyan(` ⚗ Testing: ${agent.name}`) + chalk.gray(` v${agent.version}`));
|
|
51
|
-
console.log(chalk.gray(` Provider: ${agent.llm.provider}${agent.llm.model ? ` / ${agent.llm.model}` : ""}`));
|
|
52
|
-
console.log("");
|
|
53
|
-
|
|
54
|
-
let totalPassed = 0;
|
|
55
|
-
let totalFailed = 0;
|
|
56
|
-
|
|
57
|
-
for (const testFile of testFiles) {
|
|
58
|
-
// 4. Parse test suite
|
|
59
|
-
let suite: Awaited<ReturnType<typeof parseTestFile>>;
|
|
60
|
-
try {
|
|
61
|
-
suite = parseTestFile(testFile);
|
|
62
|
-
} catch (err) {
|
|
63
|
-
console.error(chalk.red(`✗ Invalid test file ${testFile}:`), err instanceof Error ? err.message : err);
|
|
64
|
-
continue;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
console.log(chalk.gray(` File: ${path.basename(testFile)}`));
|
|
68
|
-
console.log(chalk.gray(` Cases: ${suite.cases.length}`));
|
|
69
|
-
console.log("");
|
|
70
|
-
|
|
71
|
-
// 5. Run
|
|
72
|
-
const spinner = ora("Running tests...").start();
|
|
73
|
-
const summary = await runTestSuite(agent, suite);
|
|
74
|
-
spinner.stop();
|
|
75
|
-
|
|
76
|
-
// 6. Display results
|
|
77
|
-
for (const result of summary.results) {
|
|
78
|
-
if (result.passed) {
|
|
79
|
-
console.log(
|
|
80
|
-
chalk.green(" ✓ PASS") +
|
|
81
|
-
chalk.white(` ${result.name}`) +
|
|
82
|
-
chalk.gray(` (${result.duration_ms}ms)`)
|
|
83
|
-
);
|
|
84
|
-
} else {
|
|
85
|
-
console.log(
|
|
86
|
-
chalk.red(" ✗ FAIL") +
|
|
87
|
-
chalk.white(` ${result.name}`) +
|
|
88
|
-
chalk.gray(` (${result.duration_ms}ms)`)
|
|
89
|
-
);
|
|
90
|
-
for (const failure of result.failures) {
|
|
91
|
-
console.log(chalk.red(" ↳ " + failure));
|
|
92
|
-
}
|
|
93
|
-
if (result.error) {
|
|
94
|
-
console.log(chalk.red(" Error: " + result.error));
|
|
95
|
-
}
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
totalPassed += summary.passed;
|
|
100
|
-
totalFailed += summary.failed;
|
|
101
|
-
|
|
102
|
-
console.log("");
|
|
103
|
-
console.log(
|
|
104
|
-
chalk.gray(" ─────────────────────────────────────")
|
|
105
|
-
);
|
|
106
|
-
|
|
107
|
-
const statusColor = summary.failed === 0 ? chalk.green : chalk.red;
|
|
108
|
-
console.log(
|
|
109
|
-
statusColor(
|
|
110
|
-
` ${summary.passed}/${summary.total} passed`
|
|
111
|
-
) +
|
|
112
|
-
chalk.gray(` · ${summary.duration_ms}ms`)
|
|
113
|
-
);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
console.log("");
|
|
117
|
-
|
|
118
|
-
// Final exit code
|
|
119
|
-
if (totalFailed > 0) {
|
|
120
|
-
process.exit(1);
|
|
121
|
-
}
|
|
122
|
-
}
|
|
Binary file
|
package/src/index.ts
DELETED
|
@@ -1,115 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Command } from "commander";
|
|
3
|
-
import chalk from "chalk";
|
|
4
|
-
import { commandNew } from "./commands/new";
|
|
5
|
-
import { commandRun } from "./commands/run";
|
|
6
|
-
import { commandTest } from "./commands/test";
|
|
7
|
-
|
|
8
|
-
const pkg = require("../package.json");
|
|
9
|
-
|
|
10
|
-
// ─────────────────────────────────────────────
|
|
11
|
-
// Banner
|
|
12
|
-
// ─────────────────────────────────────────────
|
|
13
|
-
|
|
14
|
-
function printBanner() {
|
|
15
|
-
console.log("");
|
|
16
|
-
console.log(chalk.bold.cyan(" CLAYTON FORGE") + chalk.gray(` v${pkg.version}`));
|
|
17
|
-
console.log(chalk.gray(" Build AI agents with confidence."));
|
|
18
|
-
console.log(chalk.gray(" https://github.com/devclaytonn10/clayton-forge"));
|
|
19
|
-
console.log("");
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// ─────────────────────────────────────────────
|
|
23
|
-
// CLI
|
|
24
|
-
// ─────────────────────────────────────────────
|
|
25
|
-
|
|
26
|
-
const program = new Command();
|
|
27
|
-
|
|
28
|
-
program
|
|
29
|
-
.name("cforge")
|
|
30
|
-
.description("Clayton Forge — AI agent platform CLI")
|
|
31
|
-
.version(pkg.version, "-v, --version", "Output the current version")
|
|
32
|
-
.addHelpText("before", "\n CLAYTON FORGE — Build AI agents with confidence.\n");
|
|
33
|
-
|
|
34
|
-
// ─────────────────────────────────────────────
|
|
35
|
-
// cforge new [name]
|
|
36
|
-
// ─────────────────────────────────────────────
|
|
37
|
-
|
|
38
|
-
program
|
|
39
|
-
.command("new [name]")
|
|
40
|
-
.description("Create a new agent with an interactive wizard")
|
|
41
|
-
.action(async (name?: string) => {
|
|
42
|
-
await commandNew(name ? undefined : undefined);
|
|
43
|
-
});
|
|
44
|
-
|
|
45
|
-
// ─────────────────────────────────────────────
|
|
46
|
-
// cforge run [agent-dir] [input]
|
|
47
|
-
// ─────────────────────────────────────────────
|
|
48
|
-
|
|
49
|
-
program
|
|
50
|
-
.command("run [agent-dir]")
|
|
51
|
-
.description("Execute an agent")
|
|
52
|
-
.option("-i, --input <text>", "Input text (skips interactive prompt for single-variable agents)")
|
|
53
|
-
.action(async (agentDir?: string, options?: { input?: string }) => {
|
|
54
|
-
await commandRun(agentDir, options?.input);
|
|
55
|
-
});
|
|
56
|
-
|
|
57
|
-
// ─────────────────────────────────────────────
|
|
58
|
-
// cforge test [agent-dir]
|
|
59
|
-
// ─────────────────────────────────────────────
|
|
60
|
-
|
|
61
|
-
program
|
|
62
|
-
.command("test [agent-dir]")
|
|
63
|
-
.description("Run the agent's test suite")
|
|
64
|
-
.action(async (agentDir?: string) => {
|
|
65
|
-
await commandTest(agentDir);
|
|
66
|
-
});
|
|
67
|
-
|
|
68
|
-
// ─────────────────────────────────────────────
|
|
69
|
-
// cforge validate
|
|
70
|
-
// ─────────────────────────────────────────────
|
|
71
|
-
|
|
72
|
-
program
|
|
73
|
-
.command("validate [agent-dir]")
|
|
74
|
-
.description("Validate agent.yaml without running the agent")
|
|
75
|
-
.action(async (agentDir?: string) => {
|
|
76
|
-
const { parseAgentFile, findAgentFile } = await import("@clayton-forge/core");
|
|
77
|
-
const path = require("path");
|
|
78
|
-
const fs = require("fs");
|
|
79
|
-
|
|
80
|
-
const searchDir = agentDir ? path.resolve(agentDir) : process.cwd();
|
|
81
|
-
const agentPath = fs.existsSync(path.join(searchDir, "agent.yaml"))
|
|
82
|
-
? path.join(searchDir, "agent.yaml")
|
|
83
|
-
: findAgentFile(searchDir);
|
|
84
|
-
|
|
85
|
-
if (!agentPath) {
|
|
86
|
-
console.error(chalk.red("✗ No agent.yaml found."));
|
|
87
|
-
process.exit(1);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
try {
|
|
91
|
-
const agent = parseAgentFile(agentPath);
|
|
92
|
-
console.log(chalk.green(`\n ✓ Valid agent.yaml`));
|
|
93
|
-
console.log(chalk.gray(` Name: ${agent.name} v${agent.version}`));
|
|
94
|
-
console.log(chalk.gray(` Type: ${agent.type}`));
|
|
95
|
-
console.log(chalk.gray(` LLM: ${agent.llm.provider}${agent.llm.model ? ` / ${agent.llm.model}` : ""}`));
|
|
96
|
-
console.log("");
|
|
97
|
-
} catch (err) {
|
|
98
|
-
console.error(chalk.red(`\n ✗ ${err instanceof Error ? err.message : err}`));
|
|
99
|
-
console.log("");
|
|
100
|
-
process.exit(1);
|
|
101
|
-
}
|
|
102
|
-
});
|
|
103
|
-
|
|
104
|
-
// ─────────────────────────────────────────────
|
|
105
|
-
// Default: banner + help
|
|
106
|
-
// ─────────────────────────────────────────────
|
|
107
|
-
|
|
108
|
-
program.addHelpCommand(true);
|
|
109
|
-
|
|
110
|
-
if (process.argv.length <= 2) {
|
|
111
|
-
printBanner();
|
|
112
|
-
program.help();
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
program.parse(process.argv);
|
|
Binary file
|
package/tsconfig.json
DELETED
|
Binary file
|