@lupaflow/cli 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.
@@ -0,0 +1,29 @@
1
+ // src/utils.ts
2
+ import chalk from "chalk";
3
+ import { readFile } from "fs/promises";
4
+ function printLogo() {
5
+ console.log(`
6
+ ${chalk.cyan("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557")}
7
+ ${chalk.cyan("\u2551")} ${chalk.bold.cyan("LUPAFLOW")} v0.1.0 ${chalk.cyan("\u2551")}
8
+ ${chalk.cyan("\u2551")} ${chalk.dim("AI Agent Framework")} ${chalk.cyan("\u2551")}
9
+ ${chalk.cyan("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D")}
10
+ `);
11
+ }
12
+ async function readAgentConfig(path) {
13
+ const content = await readFile(path, "utf-8");
14
+ if (path.endsWith(".json")) {
15
+ return JSON.parse(content);
16
+ }
17
+ const mod = await import(path);
18
+ return mod.default || mod;
19
+ }
20
+ function detectProjectRoot() {
21
+ return process.cwd();
22
+ }
23
+
24
+ export {
25
+ printLogo,
26
+ readAgentConfig,
27
+ detectProjectRoot
28
+ };
29
+ //# sourceMappingURL=chunk-5EMFYHGK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts"],"sourcesContent":["import chalk from \"chalk\"\nimport { readFile } from \"fs/promises\"\n\nexport function printLogo(): void {\n console.log(`\n${chalk.cyan(\"╔══════════════════════════════════════╗\")}\n${chalk.cyan(\"║\")} ${chalk.bold.cyan(\"LUPAFLOW\")} v0.1.0 ${chalk.cyan(\"║\")}\n${chalk.cyan(\"║\")} ${chalk.dim(\"AI Agent Framework\")} ${chalk.cyan(\"║\")}\n${chalk.cyan(\"╚══════════════════════════════════════╝\")}\n`)\n}\n\nexport async function readAgentConfig(path: string): Promise<Record<string, unknown>> {\n const content = await readFile(path, \"utf-8\")\n if (path.endsWith(\".json\")) {\n return JSON.parse(content)\n }\n const mod = await import(path)\n return mod.default || mod\n}\n\nexport function detectProjectRoot(): string {\n return process.cwd()\n}\n"],"mappings":";AAAA,OAAO,WAAW;AAClB,SAAS,gBAAgB;AAElB,SAAS,YAAkB;AAChC,UAAQ,IAAI;AAAA,EACZ,MAAM,KAAK,kPAA0C,CAAC;AAAA,EACtD,MAAM,KAAK,QAAG,CAAC,WAAW,MAAM,KAAK,KAAK,UAAU,CAAC,qBAAqB,MAAM,KAAK,QAAG,CAAC;AAAA,EACzF,MAAM,KAAK,QAAG,CAAC,OAAO,MAAM,IAAI,oBAAoB,CAAC,eAAe,MAAM,KAAK,QAAG,CAAC;AAAA,EACnF,MAAM,KAAK,kPAA0C,CAAC;AAAA,CACvD;AACD;AAEA,eAAsB,gBAAgB,MAAgD;AACpF,QAAM,UAAU,MAAM,SAAS,MAAM,OAAO;AAC5C,MAAI,KAAK,SAAS,OAAO,GAAG;AAC1B,WAAO,KAAK,MAAM,OAAO;AAAA,EAC3B;AACA,QAAM,MAAM,MAAM,OAAO;AACzB,SAAO,IAAI,WAAW;AACxB;AAEO,SAAS,oBAA4B;AAC1C,SAAO,QAAQ,IAAI;AACrB;","names":[]}
package/dist/index.cjs ADDED
@@ -0,0 +1,220 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __create = Object.create;
4
+ var __defProp = Object.defineProperty;
5
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
6
+ var __getOwnPropNames = Object.getOwnPropertyNames;
7
+ var __getProtoOf = Object.getPrototypeOf;
8
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
9
+ var __esm = (fn, res) => function __init() {
10
+ return fn && (res = (0, fn[__getOwnPropNames(fn)[0]])(fn = 0)), res;
11
+ };
12
+ var __export = (target, all) => {
13
+ for (var name in all)
14
+ __defProp(target, name, { get: all[name], enumerable: true });
15
+ };
16
+ var __copyProps = (to, from, except, desc) => {
17
+ if (from && typeof from === "object" || typeof from === "function") {
18
+ for (let key of __getOwnPropNames(from))
19
+ if (!__hasOwnProp.call(to, key) && key !== except)
20
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
21
+ }
22
+ return to;
23
+ };
24
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
25
+ // If the importer is in node compatibility mode or this is not an ESM
26
+ // file that has been converted to a CommonJS file using a Babel-
27
+ // compatible transform (i.e. "__esModule" has not been set), then set
28
+ // "default" to the CommonJS "module.exports" for node compatibility.
29
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
30
+ mod
31
+ ));
32
+
33
+ // src/utils.ts
34
+ var utils_exports = {};
35
+ __export(utils_exports, {
36
+ detectProjectRoot: () => detectProjectRoot,
37
+ printLogo: () => printLogo,
38
+ readAgentConfig: () => readAgentConfig
39
+ });
40
+ function printLogo() {
41
+ console.log(`
42
+ ${import_chalk.default.cyan("\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557")}
43
+ ${import_chalk.default.cyan("\u2551")} ${import_chalk.default.bold.cyan("LUPAFLOW")} v0.1.0 ${import_chalk.default.cyan("\u2551")}
44
+ ${import_chalk.default.cyan("\u2551")} ${import_chalk.default.dim("AI Agent Framework")} ${import_chalk.default.cyan("\u2551")}
45
+ ${import_chalk.default.cyan("\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D")}
46
+ `);
47
+ }
48
+ async function readAgentConfig(path) {
49
+ const content = await (0, import_promises2.readFile)(path, "utf-8");
50
+ if (path.endsWith(".json")) {
51
+ return JSON.parse(content);
52
+ }
53
+ const mod = await import(path);
54
+ return mod.default || mod;
55
+ }
56
+ function detectProjectRoot() {
57
+ return process.cwd();
58
+ }
59
+ var import_chalk, import_promises2;
60
+ var init_utils = __esm({
61
+ "src/utils.ts"() {
62
+ "use strict";
63
+ import_chalk = __toESM(require("chalk"), 1);
64
+ import_promises2 = require("fs/promises");
65
+ }
66
+ });
67
+
68
+ // src/index.ts
69
+ var import_commander = require("commander");
70
+
71
+ // src/commands/create.ts
72
+ var import_promises = require("fs/promises");
73
+ var import_path = require("path");
74
+ async function createCommand(name) {
75
+ const dir = (0, import_path.join)(process.cwd(), name);
76
+ await (0, import_promises.mkdir)(dir, { recursive: true });
77
+ await (0, import_promises.mkdir)((0, import_path.join)(dir, "agents"), { recursive: true });
78
+ await (0, import_promises.mkdir)((0, import_path.join)(dir, "tools"), { recursive: true });
79
+ await (0, import_promises.mkdir)((0, import_path.join)(dir, "workflows"), { recursive: true });
80
+ const packageJson = {
81
+ name,
82
+ version: "1.0.0",
83
+ type: "module",
84
+ scripts: {
85
+ dev: "lupaflow dev",
86
+ run: "lupaflow run",
87
+ test: "lupaflow test"
88
+ },
89
+ dependencies: {
90
+ lupaflow: "^0.1.0"
91
+ }
92
+ };
93
+ await (0, import_promises.writeFile)((0, import_path.join)(dir, "package.json"), JSON.stringify(packageJson, null, 2));
94
+ const envContent = `# LupaFlow Secrets
95
+ # Get your keys and add them here
96
+ # OPENROUTER_API_KEY=
97
+ # GOOGLE_API_KEY=
98
+ # GROQ_API_KEY=
99
+ `;
100
+ await (0, import_promises.writeFile)((0, import_path.join)(dir, ".env"), envContent);
101
+ const agentTemplate = `import { Agent } from "lupaflow"
102
+
103
+ const agent = new Agent({
104
+ name: "${name}-agent",
105
+ provider: "openrouter",
106
+ systemPrompt: "You are a helpful assistant.",
107
+ })
108
+
109
+ const result = await agent.run("Hello!")
110
+ console.log(result)
111
+ `;
112
+ await (0, import_promises.writeFile)((0, import_path.join)(dir, "agents", "main.ts"), agentTemplate);
113
+ console.log(`
114
+ \u2705 Created project: ${name}
115
+ `);
116
+ console.log(` ${"cd " + name}`);
117
+ console.log(` ${"lupaflow dev"}
118
+ `);
119
+ }
120
+
121
+ // src/commands/dev.ts
122
+ var import_chalk2 = __toESM(require("chalk"), 1);
123
+ var import_secrets = require("@lupaflow/secrets");
124
+ var import_readline = __toESM(require("readline"), 1);
125
+ async function devCommand(agentPath) {
126
+ import_secrets.SecretsManager.init();
127
+ const rl = import_readline.default.createInterface({
128
+ input: process.stdin,
129
+ output: process.stdout
130
+ });
131
+ console.log(import_chalk2.default.cyan("\n LupaFlow Dev \u2014 Interactive Mode\n"));
132
+ console.log(import_chalk2.default.dim(" Type your messages. Type 'exit' to quit.\n"));
133
+ const prompt = () => {
134
+ rl.question(import_chalk2.default.yellow(" You: "), async (input) => {
135
+ if (input.toLowerCase() === "exit" || input.toLowerCase() === "quit") {
136
+ console.log(import_chalk2.default.dim("\n Goodbye!\n"));
137
+ rl.close();
138
+ return;
139
+ }
140
+ console.log(import_chalk2.default.dim(` Running agent...
141
+ `));
142
+ const path = agentPath || "agents/main.ts";
143
+ try {
144
+ const { readAgentConfig: readAgentConfig2 } = await Promise.resolve().then(() => (init_utils(), utils_exports));
145
+ const { Agent: Agent2 } = await import("@lupaflow/agent");
146
+ const config = await readAgentConfig2(path);
147
+ const agent = new Agent2(config);
148
+ const result = await agent.run(input);
149
+ console.log(import_chalk2.default.green(` Agent: ${result.output}
150
+ `));
151
+ } catch (err) {
152
+ console.error(import_chalk2.default.red(` Error: ${err.message}
153
+ `));
154
+ }
155
+ prompt();
156
+ });
157
+ };
158
+ prompt();
159
+ }
160
+
161
+ // src/commands/run.ts
162
+ var import_chalk3 = __toESM(require("chalk"), 1);
163
+ init_utils();
164
+ var import_secrets2 = require("@lupaflow/secrets");
165
+ var import_agent = require("@lupaflow/agent");
166
+ async function runCommand(agentPath) {
167
+ printLogo();
168
+ import_secrets2.SecretsManager.init();
169
+ const path = agentPath || "agents/main.ts";
170
+ try {
171
+ const config = await readAgentConfig(path);
172
+ const agent = new import_agent.Agent(config);
173
+ const prompt = process.argv.slice(3).join(" ") || "Hello!";
174
+ console.log(import_chalk3.default.dim(`
175
+ Running "${config.name || "agent"}"...
176
+ `));
177
+ const result = await agent.run(prompt);
178
+ console.log(import_chalk3.default.green("\n Response:"));
179
+ console.log(` ${result.output}`);
180
+ console.log(import_chalk3.default.dim(`
181
+ Tokens: ${result.usage.totalTokens} | Latency: ${result.latencyMs}ms | Tool calls: ${result.toolCalls}
182
+ `));
183
+ } catch (err) {
184
+ console.error(import_chalk3.default.red(`
185
+ Error: ${err.message}
186
+ `));
187
+ process.exit(1);
188
+ }
189
+ }
190
+
191
+ // src/commands/test.ts
192
+ var import_chalk4 = __toESM(require("chalk"), 1);
193
+ async function testCommand() {
194
+ console.log(import_chalk4.default.cyan("\n LupaFlow Test\n"));
195
+ console.log(import_chalk4.default.dim(" Running agent tests...\n"));
196
+ console.log(import_chalk4.default.yellow(" Test framework coming soon.\n"));
197
+ console.log(import_chalk4.default.dim(" For now, use: bun run vitest\n"));
198
+ }
199
+
200
+ // src/commands/deploy.ts
201
+ var import_chalk5 = __toESM(require("chalk"), 1);
202
+ async function deployCommand() {
203
+ console.log(import_chalk5.default.cyan("\n LupaFlow Deploy\n"));
204
+ console.log(import_chalk5.default.yellow(" Cloud deployment coming in a future release.\n"));
205
+ }
206
+
207
+ // src/index.ts
208
+ init_utils();
209
+ var import_secrets3 = require("@lupaflow/secrets");
210
+ var program = new import_commander.Command();
211
+ program.name("lupaflow").description("AI Agent Framework \u2014 build, run, and orchestrate intelligent agents").version("0.1.0");
212
+ program.command("create").description("Create a new LupaFlow project").argument("<name>", "Project name").action(createCommand);
213
+ program.command("dev").description("Run agent in interactive dev mode").argument("[agent]", "Agent config file path").action(devCommand);
214
+ program.command("run").description("Run an agent with a prompt").argument("[agent]", "Agent config file path").option("-p, --prompt <prompt>", "Input prompt").action(runCommand);
215
+ program.command("test").description("Run agent tests").action(testCommand);
216
+ program.command("deploy").description("Deploy agent to cloud (coming soon)").action(deployCommand);
217
+ import_secrets3.SecretsManager.init();
218
+ printLogo();
219
+ program.parse(process.argv);
220
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils.ts","../src/index.ts","../src/commands/create.ts","../src/commands/dev.ts","../src/commands/run.ts","../src/commands/test.ts","../src/commands/deploy.ts"],"sourcesContent":["import chalk from \"chalk\"\nimport { readFile } from \"fs/promises\"\n\nexport function printLogo(): void {\n console.log(`\n${chalk.cyan(\"╔══════════════════════════════════════╗\")}\n${chalk.cyan(\"║\")} ${chalk.bold.cyan(\"LUPAFLOW\")} v0.1.0 ${chalk.cyan(\"║\")}\n${chalk.cyan(\"║\")} ${chalk.dim(\"AI Agent Framework\")} ${chalk.cyan(\"║\")}\n${chalk.cyan(\"╚══════════════════════════════════════╝\")}\n`)\n}\n\nexport async function readAgentConfig(path: string): Promise<Record<string, unknown>> {\n const content = await readFile(path, \"utf-8\")\n if (path.endsWith(\".json\")) {\n return JSON.parse(content)\n }\n const mod = await import(path)\n return mod.default || mod\n}\n\nexport function detectProjectRoot(): string {\n return process.cwd()\n}\n","#!/usr/bin/env node\n\nimport { Command } from \"commander\"\nimport { createCommand } from \"./commands/create\"\nimport { devCommand } from \"./commands/dev\"\nimport { runCommand } from \"./commands/run\"\nimport { testCommand } from \"./commands/test\"\nimport { deployCommand } from \"./commands/deploy\"\nimport { printLogo } from \"./utils\"\nimport { SecretsManager } from \"@lupaflow/secrets\"\n\nconst program = new Command()\n\nprogram\n .name(\"lupaflow\")\n .description(\"AI Agent Framework — build, run, and orchestrate intelligent agents\")\n .version(\"0.1.0\")\n\nprogram\n .command(\"create\")\n .description(\"Create a new LupaFlow project\")\n .argument(\"<name>\", \"Project name\")\n .action(createCommand)\n\nprogram\n .command(\"dev\")\n .description(\"Run agent in interactive dev mode\")\n .argument(\"[agent]\", \"Agent config file path\")\n .action(devCommand)\n\nprogram\n .command(\"run\")\n .description(\"Run an agent with a prompt\")\n .argument(\"[agent]\", \"Agent config file path\")\n .option(\"-p, --prompt <prompt>\", \"Input prompt\")\n .action(runCommand)\n\nprogram\n .command(\"test\")\n .description(\"Run agent tests\")\n .action(testCommand)\n\nprogram\n .command(\"deploy\")\n .description(\"Deploy agent to cloud (coming soon)\")\n .action(deployCommand)\n\nSecretsManager.init()\nprintLogo()\nprogram.parse(process.argv)\n","import { writeFile, mkdir } from \"fs/promises\"\nimport { join } from \"path\"\n\nexport async function createCommand(name: string): Promise<void> {\n const dir = join(process.cwd(), name)\n\n await mkdir(dir, { recursive: true })\n await mkdir(join(dir, \"agents\"), { recursive: true })\n await mkdir(join(dir, \"tools\"), { recursive: true })\n await mkdir(join(dir, \"workflows\"), { recursive: true })\n\n const packageJson = {\n name,\n version: \"1.0.0\",\n type: \"module\",\n scripts: {\n dev: \"lupaflow dev\",\n run: \"lupaflow run\",\n test: \"lupaflow test\",\n },\n dependencies: {\n lupaflow: \"^0.1.0\",\n },\n }\n\n await writeFile(join(dir, \"package.json\"), JSON.stringify(packageJson, null, 2))\n\n const envContent = `# LupaFlow Secrets\n# Get your keys and add them here\n# OPENROUTER_API_KEY=\n# GOOGLE_API_KEY=\n# GROQ_API_KEY=\n`\n await writeFile(join(dir, \".env\"), envContent)\n\n const agentTemplate = `import { Agent } from \"lupaflow\"\n\nconst agent = new Agent({\n name: \"${name}-agent\",\n provider: \"openrouter\",\n systemPrompt: \"You are a helpful assistant.\",\n})\n\nconst result = await agent.run(\"Hello!\")\nconsole.log(result)\n`\n\n await writeFile(join(dir, \"agents\", \"main.ts\"), agentTemplate)\n\n console.log(`\\n ✅ Created project: ${name}\\n`)\n console.log(` ${\"cd \" + name}`)\n console.log(` ${\"lupaflow dev\"}\\n`)\n}\n","import chalk from \"chalk\"\nimport { SecretsManager } from \"@lupaflow/secrets\"\nimport readline from \"readline\"\n\nexport async function devCommand(agentPath?: string): Promise<void> {\n SecretsManager.init()\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n\n console.log(chalk.cyan(\"\\n LupaFlow Dev — Interactive Mode\\n\"))\n console.log(chalk.dim(\" Type your messages. Type 'exit' to quit.\\n\"))\n\n const prompt = () => {\n rl.question(chalk.yellow(\" You: \"), async (input) => {\n if (input.toLowerCase() === \"exit\" || input.toLowerCase() === \"quit\") {\n console.log(chalk.dim(\"\\n Goodbye!\\n\"))\n rl.close()\n return\n }\n\n console.log(chalk.dim(` Running agent...\\n`))\n\n const path = agentPath || \"agents/main.ts\"\n try {\n const { readAgentConfig } = await import(\"../utils\")\n const { Agent } = await import(\"@lupaflow/agent\")\n const config: any = await readAgentConfig(path)\n const agent = new Agent(config)\n const result = await agent.run(input)\n console.log(chalk.green(` Agent: ${result.output}\\n`))\n } catch (err: any) {\n console.error(chalk.red(` Error: ${err.message}\\n`))\n }\n\n prompt()\n })\n }\n\n prompt()\n}\n","import chalk from \"chalk\"\nimport { readAgentConfig, printLogo } from \"../utils\"\nimport { SecretsManager } from \"@lupaflow/secrets\"\nimport { Agent } from \"@lupaflow/agent\"\n\nexport async function runCommand(agentPath?: string): Promise<void> {\n printLogo()\n SecretsManager.init()\n\n const path = agentPath || \"agents/main.ts\"\n\n try {\n const config: any = await readAgentConfig(path)\n const agent = new Agent(config)\n\n const prompt = process.argv.slice(3).join(\" \") || \"Hello!\"\n console.log(chalk.dim(`\\n Running \"${config.name || \"agent\"}\"...\\n`))\n\n const result = await agent.run(prompt)\n\n console.log(chalk.green(\"\\n Response:\"))\n console.log(` ${result.output}`)\n console.log(chalk.dim(`\\n Tokens: ${result.usage.totalTokens} | Latency: ${result.latencyMs}ms | Tool calls: ${result.toolCalls}\\n`))\n } catch (err: any) {\n console.error(chalk.red(`\\n Error: ${err.message}\\n`))\n process.exit(1)\n }\n}\n","import chalk from \"chalk\"\n\nexport async function testCommand(): Promise<void> {\n console.log(chalk.cyan(\"\\n LupaFlow Test\\n\"))\n console.log(chalk.dim(\" Running agent tests...\\n\"))\n\n // TODO: actual test runner integration\n console.log(chalk.yellow(\" Test framework coming soon.\\n\"))\n console.log(chalk.dim(\" For now, use: bun run vitest\\n\"))\n}\n","import chalk from \"chalk\"\n\nexport async function deployCommand(): Promise<void> {\n console.log(chalk.cyan(\"\\n LupaFlow Deploy\\n\"))\n console.log(chalk.yellow(\" Cloud deployment coming in a future release.\\n\"))\n}\n"],"mappings":"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","names":["chalk","import_promises","import_chalk","readline","chalk","readAgentConfig","Agent","import_chalk","import_secrets","chalk","import_chalk","chalk","import_chalk","chalk","import_secrets"]}
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
@@ -0,0 +1 @@
1
+ #!/usr/bin/env node
package/dist/index.js ADDED
@@ -0,0 +1,157 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ printLogo,
4
+ readAgentConfig
5
+ } from "./chunk-5EMFYHGK.js";
6
+
7
+ // src/index.ts
8
+ import { Command } from "commander";
9
+
10
+ // src/commands/create.ts
11
+ import { writeFile, mkdir } from "fs/promises";
12
+ import { join } from "path";
13
+ async function createCommand(name) {
14
+ const dir = join(process.cwd(), name);
15
+ await mkdir(dir, { recursive: true });
16
+ await mkdir(join(dir, "agents"), { recursive: true });
17
+ await mkdir(join(dir, "tools"), { recursive: true });
18
+ await mkdir(join(dir, "workflows"), { recursive: true });
19
+ const packageJson = {
20
+ name,
21
+ version: "1.0.0",
22
+ type: "module",
23
+ scripts: {
24
+ dev: "lupaflow dev",
25
+ run: "lupaflow run",
26
+ test: "lupaflow test"
27
+ },
28
+ dependencies: {
29
+ lupaflow: "^0.1.0"
30
+ }
31
+ };
32
+ await writeFile(join(dir, "package.json"), JSON.stringify(packageJson, null, 2));
33
+ const envContent = `# LupaFlow Secrets
34
+ # Get your keys and add them here
35
+ # OPENROUTER_API_KEY=
36
+ # GOOGLE_API_KEY=
37
+ # GROQ_API_KEY=
38
+ `;
39
+ await writeFile(join(dir, ".env"), envContent);
40
+ const agentTemplate = `import { Agent } from "lupaflow"
41
+
42
+ const agent = new Agent({
43
+ name: "${name}-agent",
44
+ provider: "openrouter",
45
+ systemPrompt: "You are a helpful assistant.",
46
+ })
47
+
48
+ const result = await agent.run("Hello!")
49
+ console.log(result)
50
+ `;
51
+ await writeFile(join(dir, "agents", "main.ts"), agentTemplate);
52
+ console.log(`
53
+ \u2705 Created project: ${name}
54
+ `);
55
+ console.log(` ${"cd " + name}`);
56
+ console.log(` ${"lupaflow dev"}
57
+ `);
58
+ }
59
+
60
+ // src/commands/dev.ts
61
+ import chalk from "chalk";
62
+ import { SecretsManager } from "@lupaflow/secrets";
63
+ import readline from "readline";
64
+ async function devCommand(agentPath) {
65
+ SecretsManager.init();
66
+ const rl = readline.createInterface({
67
+ input: process.stdin,
68
+ output: process.stdout
69
+ });
70
+ console.log(chalk.cyan("\n LupaFlow Dev \u2014 Interactive Mode\n"));
71
+ console.log(chalk.dim(" Type your messages. Type 'exit' to quit.\n"));
72
+ const prompt = () => {
73
+ rl.question(chalk.yellow(" You: "), async (input) => {
74
+ if (input.toLowerCase() === "exit" || input.toLowerCase() === "quit") {
75
+ console.log(chalk.dim("\n Goodbye!\n"));
76
+ rl.close();
77
+ return;
78
+ }
79
+ console.log(chalk.dim(` Running agent...
80
+ `));
81
+ const path = agentPath || "agents/main.ts";
82
+ try {
83
+ const { readAgentConfig: readAgentConfig2 } = await import("./utils-IPGWDRWQ.js");
84
+ const { Agent: Agent2 } = await import("@lupaflow/agent");
85
+ const config = await readAgentConfig2(path);
86
+ const agent = new Agent2(config);
87
+ const result = await agent.run(input);
88
+ console.log(chalk.green(` Agent: ${result.output}
89
+ `));
90
+ } catch (err) {
91
+ console.error(chalk.red(` Error: ${err.message}
92
+ `));
93
+ }
94
+ prompt();
95
+ });
96
+ };
97
+ prompt();
98
+ }
99
+
100
+ // src/commands/run.ts
101
+ import chalk2 from "chalk";
102
+ import { SecretsManager as SecretsManager2 } from "@lupaflow/secrets";
103
+ import { Agent } from "@lupaflow/agent";
104
+ async function runCommand(agentPath) {
105
+ printLogo();
106
+ SecretsManager2.init();
107
+ const path = agentPath || "agents/main.ts";
108
+ try {
109
+ const config = await readAgentConfig(path);
110
+ const agent = new Agent(config);
111
+ const prompt = process.argv.slice(3).join(" ") || "Hello!";
112
+ console.log(chalk2.dim(`
113
+ Running "${config.name || "agent"}"...
114
+ `));
115
+ const result = await agent.run(prompt);
116
+ console.log(chalk2.green("\n Response:"));
117
+ console.log(` ${result.output}`);
118
+ console.log(chalk2.dim(`
119
+ Tokens: ${result.usage.totalTokens} | Latency: ${result.latencyMs}ms | Tool calls: ${result.toolCalls}
120
+ `));
121
+ } catch (err) {
122
+ console.error(chalk2.red(`
123
+ Error: ${err.message}
124
+ `));
125
+ process.exit(1);
126
+ }
127
+ }
128
+
129
+ // src/commands/test.ts
130
+ import chalk3 from "chalk";
131
+ async function testCommand() {
132
+ console.log(chalk3.cyan("\n LupaFlow Test\n"));
133
+ console.log(chalk3.dim(" Running agent tests...\n"));
134
+ console.log(chalk3.yellow(" Test framework coming soon.\n"));
135
+ console.log(chalk3.dim(" For now, use: bun run vitest\n"));
136
+ }
137
+
138
+ // src/commands/deploy.ts
139
+ import chalk4 from "chalk";
140
+ async function deployCommand() {
141
+ console.log(chalk4.cyan("\n LupaFlow Deploy\n"));
142
+ console.log(chalk4.yellow(" Cloud deployment coming in a future release.\n"));
143
+ }
144
+
145
+ // src/index.ts
146
+ import { SecretsManager as SecretsManager3 } from "@lupaflow/secrets";
147
+ var program = new Command();
148
+ program.name("lupaflow").description("AI Agent Framework \u2014 build, run, and orchestrate intelligent agents").version("0.1.0");
149
+ program.command("create").description("Create a new LupaFlow project").argument("<name>", "Project name").action(createCommand);
150
+ program.command("dev").description("Run agent in interactive dev mode").argument("[agent]", "Agent config file path").action(devCommand);
151
+ program.command("run").description("Run an agent with a prompt").argument("[agent]", "Agent config file path").option("-p, --prompt <prompt>", "Input prompt").action(runCommand);
152
+ program.command("test").description("Run agent tests").action(testCommand);
153
+ program.command("deploy").description("Deploy agent to cloud (coming soon)").action(deployCommand);
154
+ SecretsManager3.init();
155
+ printLogo();
156
+ program.parse(process.argv);
157
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/index.ts","../src/commands/create.ts","../src/commands/dev.ts","../src/commands/run.ts","../src/commands/test.ts","../src/commands/deploy.ts"],"sourcesContent":["#!/usr/bin/env node\n\nimport { Command } from \"commander\"\nimport { createCommand } from \"./commands/create\"\nimport { devCommand } from \"./commands/dev\"\nimport { runCommand } from \"./commands/run\"\nimport { testCommand } from \"./commands/test\"\nimport { deployCommand } from \"./commands/deploy\"\nimport { printLogo } from \"./utils\"\nimport { SecretsManager } from \"@lupaflow/secrets\"\n\nconst program = new Command()\n\nprogram\n .name(\"lupaflow\")\n .description(\"AI Agent Framework — build, run, and orchestrate intelligent agents\")\n .version(\"0.1.0\")\n\nprogram\n .command(\"create\")\n .description(\"Create a new LupaFlow project\")\n .argument(\"<name>\", \"Project name\")\n .action(createCommand)\n\nprogram\n .command(\"dev\")\n .description(\"Run agent in interactive dev mode\")\n .argument(\"[agent]\", \"Agent config file path\")\n .action(devCommand)\n\nprogram\n .command(\"run\")\n .description(\"Run an agent with a prompt\")\n .argument(\"[agent]\", \"Agent config file path\")\n .option(\"-p, --prompt <prompt>\", \"Input prompt\")\n .action(runCommand)\n\nprogram\n .command(\"test\")\n .description(\"Run agent tests\")\n .action(testCommand)\n\nprogram\n .command(\"deploy\")\n .description(\"Deploy agent to cloud (coming soon)\")\n .action(deployCommand)\n\nSecretsManager.init()\nprintLogo()\nprogram.parse(process.argv)\n","import { writeFile, mkdir } from \"fs/promises\"\nimport { join } from \"path\"\n\nexport async function createCommand(name: string): Promise<void> {\n const dir = join(process.cwd(), name)\n\n await mkdir(dir, { recursive: true })\n await mkdir(join(dir, \"agents\"), { recursive: true })\n await mkdir(join(dir, \"tools\"), { recursive: true })\n await mkdir(join(dir, \"workflows\"), { recursive: true })\n\n const packageJson = {\n name,\n version: \"1.0.0\",\n type: \"module\",\n scripts: {\n dev: \"lupaflow dev\",\n run: \"lupaflow run\",\n test: \"lupaflow test\",\n },\n dependencies: {\n lupaflow: \"^0.1.0\",\n },\n }\n\n await writeFile(join(dir, \"package.json\"), JSON.stringify(packageJson, null, 2))\n\n const envContent = `# LupaFlow Secrets\n# Get your keys and add them here\n# OPENROUTER_API_KEY=\n# GOOGLE_API_KEY=\n# GROQ_API_KEY=\n`\n await writeFile(join(dir, \".env\"), envContent)\n\n const agentTemplate = `import { Agent } from \"lupaflow\"\n\nconst agent = new Agent({\n name: \"${name}-agent\",\n provider: \"openrouter\",\n systemPrompt: \"You are a helpful assistant.\",\n})\n\nconst result = await agent.run(\"Hello!\")\nconsole.log(result)\n`\n\n await writeFile(join(dir, \"agents\", \"main.ts\"), agentTemplate)\n\n console.log(`\\n ✅ Created project: ${name}\\n`)\n console.log(` ${\"cd \" + name}`)\n console.log(` ${\"lupaflow dev\"}\\n`)\n}\n","import chalk from \"chalk\"\nimport { SecretsManager } from \"@lupaflow/secrets\"\nimport readline from \"readline\"\n\nexport async function devCommand(agentPath?: string): Promise<void> {\n SecretsManager.init()\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n })\n\n console.log(chalk.cyan(\"\\n LupaFlow Dev — Interactive Mode\\n\"))\n console.log(chalk.dim(\" Type your messages. Type 'exit' to quit.\\n\"))\n\n const prompt = () => {\n rl.question(chalk.yellow(\" You: \"), async (input) => {\n if (input.toLowerCase() === \"exit\" || input.toLowerCase() === \"quit\") {\n console.log(chalk.dim(\"\\n Goodbye!\\n\"))\n rl.close()\n return\n }\n\n console.log(chalk.dim(` Running agent...\\n`))\n\n const path = agentPath || \"agents/main.ts\"\n try {\n const { readAgentConfig } = await import(\"../utils\")\n const { Agent } = await import(\"@lupaflow/agent\")\n const config: any = await readAgentConfig(path)\n const agent = new Agent(config)\n const result = await agent.run(input)\n console.log(chalk.green(` Agent: ${result.output}\\n`))\n } catch (err: any) {\n console.error(chalk.red(` Error: ${err.message}\\n`))\n }\n\n prompt()\n })\n }\n\n prompt()\n}\n","import chalk from \"chalk\"\nimport { readAgentConfig, printLogo } from \"../utils\"\nimport { SecretsManager } from \"@lupaflow/secrets\"\nimport { Agent } from \"@lupaflow/agent\"\n\nexport async function runCommand(agentPath?: string): Promise<void> {\n printLogo()\n SecretsManager.init()\n\n const path = agentPath || \"agents/main.ts\"\n\n try {\n const config: any = await readAgentConfig(path)\n const agent = new Agent(config)\n\n const prompt = process.argv.slice(3).join(\" \") || \"Hello!\"\n console.log(chalk.dim(`\\n Running \"${config.name || \"agent\"}\"...\\n`))\n\n const result = await agent.run(prompt)\n\n console.log(chalk.green(\"\\n Response:\"))\n console.log(` ${result.output}`)\n console.log(chalk.dim(`\\n Tokens: ${result.usage.totalTokens} | Latency: ${result.latencyMs}ms | Tool calls: ${result.toolCalls}\\n`))\n } catch (err: any) {\n console.error(chalk.red(`\\n Error: ${err.message}\\n`))\n process.exit(1)\n }\n}\n","import chalk from \"chalk\"\n\nexport async function testCommand(): Promise<void> {\n console.log(chalk.cyan(\"\\n LupaFlow Test\\n\"))\n console.log(chalk.dim(\" Running agent tests...\\n\"))\n\n // TODO: actual test runner integration\n console.log(chalk.yellow(\" Test framework coming soon.\\n\"))\n console.log(chalk.dim(\" For now, use: bun run vitest\\n\"))\n}\n","import chalk from \"chalk\"\n\nexport async function deployCommand(): Promise<void> {\n console.log(chalk.cyan(\"\\n LupaFlow Deploy\\n\"))\n console.log(chalk.yellow(\" Cloud deployment coming in a future release.\\n\"))\n}\n"],"mappings":";;;;;;;AAEA,SAAS,eAAe;;;ACFxB,SAAS,WAAW,aAAa;AACjC,SAAS,YAAY;AAErB,eAAsB,cAAc,MAA6B;AAC/D,QAAM,MAAM,KAAK,QAAQ,IAAI,GAAG,IAAI;AAEpC,QAAM,MAAM,KAAK,EAAE,WAAW,KAAK,CAAC;AACpC,QAAM,MAAM,KAAK,KAAK,QAAQ,GAAG,EAAE,WAAW,KAAK,CAAC;AACpD,QAAM,MAAM,KAAK,KAAK,OAAO,GAAG,EAAE,WAAW,KAAK,CAAC;AACnD,QAAM,MAAM,KAAK,KAAK,WAAW,GAAG,EAAE,WAAW,KAAK,CAAC;AAEvD,QAAM,cAAc;AAAA,IAClB;AAAA,IACA,SAAS;AAAA,IACT,MAAM;AAAA,IACN,SAAS;AAAA,MACP,KAAK;AAAA,MACL,KAAK;AAAA,MACL,MAAM;AAAA,IACR;AAAA,IACA,cAAc;AAAA,MACZ,UAAU;AAAA,IACZ;AAAA,EACF;AAEA,QAAM,UAAU,KAAK,KAAK,cAAc,GAAG,KAAK,UAAU,aAAa,MAAM,CAAC,CAAC;AAE/E,QAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAMnB,QAAM,UAAU,KAAK,KAAK,MAAM,GAAG,UAAU;AAE7C,QAAM,gBAAgB;AAAA;AAAA;AAAA,WAGb,IAAI;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASb,QAAM,UAAU,KAAK,KAAK,UAAU,SAAS,GAAG,aAAa;AAE7D,UAAQ,IAAI;AAAA,4BAA0B,IAAI;AAAA,CAAI;AAC9C,UAAQ,IAAI,KAAK,QAAQ,IAAI,EAAE;AAC/B,UAAQ,IAAI,KAAK,cAAc;AAAA,CAAI;AACrC;;;ACpDA,OAAO,WAAW;AAClB,SAAS,sBAAsB;AAC/B,OAAO,cAAc;AAErB,eAAsB,WAAW,WAAmC;AAClE,iBAAe,KAAK;AAEpB,QAAM,KAAK,SAAS,gBAAgB;AAAA,IAClC,OAAO,QAAQ;AAAA,IACf,QAAQ,QAAQ;AAAA,EAClB,CAAC;AAED,UAAQ,IAAI,MAAM,KAAK,4CAAuC,CAAC;AAC/D,UAAQ,IAAI,MAAM,IAAI,8CAA8C,CAAC;AAErE,QAAM,SAAS,MAAM;AACnB,OAAG,SAAS,MAAM,OAAO,SAAS,GAAG,OAAO,UAAU;AACpD,UAAI,MAAM,YAAY,MAAM,UAAU,MAAM,YAAY,MAAM,QAAQ;AACpE,gBAAQ,IAAI,MAAM,IAAI,gBAAgB,CAAC;AACvC,WAAG,MAAM;AACT;AAAA,MACF;AAEA,cAAQ,IAAI,MAAM,IAAI;AAAA,CAAsB,CAAC;AAE7C,YAAM,OAAO,aAAa;AAC1B,UAAI;AACF,cAAM,EAAE,iBAAAA,iBAAgB,IAAI,MAAM,OAAO,qBAAU;AACnD,cAAM,EAAE,OAAAC,OAAM,IAAI,MAAM,OAAO,iBAAiB;AAChD,cAAM,SAAc,MAAMD,iBAAgB,IAAI;AAC9C,cAAM,QAAQ,IAAIC,OAAM,MAAM;AAC9B,cAAM,SAAS,MAAM,MAAM,IAAI,KAAK;AACpC,gBAAQ,IAAI,MAAM,MAAM,YAAY,OAAO,MAAM;AAAA,CAAI,CAAC;AAAA,MACxD,SAAS,KAAU;AACjB,gBAAQ,MAAM,MAAM,IAAI,YAAY,IAAI,OAAO;AAAA,CAAI,CAAC;AAAA,MACtD;AAEA,aAAO;AAAA,IACT,CAAC;AAAA,EACH;AAEA,SAAO;AACT;;;AC1CA,OAAOC,YAAW;AAElB,SAAS,kBAAAC,uBAAsB;AAC/B,SAAS,aAAa;AAEtB,eAAsB,WAAW,WAAmC;AAClE,YAAU;AACV,EAAAA,gBAAe,KAAK;AAEpB,QAAM,OAAO,aAAa;AAE1B,MAAI;AACF,UAAM,SAAc,MAAM,gBAAgB,IAAI;AAC9C,UAAM,QAAQ,IAAI,MAAM,MAAM;AAE9B,UAAM,SAAS,QAAQ,KAAK,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;AAClD,YAAQ,IAAIC,OAAM,IAAI;AAAA,aAAgB,OAAO,QAAQ,OAAO;AAAA,CAAQ,CAAC;AAErE,UAAM,SAAS,MAAM,MAAM,IAAI,MAAM;AAErC,YAAQ,IAAIA,OAAM,MAAM,eAAe,CAAC;AACxC,YAAQ,IAAI,KAAK,OAAO,MAAM,EAAE;AAChC,YAAQ,IAAIA,OAAM,IAAI;AAAA,YAAe,OAAO,MAAM,WAAW,eAAe,OAAO,SAAS,oBAAoB,OAAO,SAAS;AAAA,CAAI,CAAC;AAAA,EACvI,SAAS,KAAU;AACjB,YAAQ,MAAMA,OAAM,IAAI;AAAA,WAAc,IAAI,OAAO;AAAA,CAAI,CAAC;AACtD,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;;;AC3BA,OAAOC,YAAW;AAElB,eAAsB,cAA6B;AACjD,UAAQ,IAAIA,OAAM,KAAK,qBAAqB,CAAC;AAC7C,UAAQ,IAAIA,OAAM,IAAI,4BAA4B,CAAC;AAGnD,UAAQ,IAAIA,OAAM,OAAO,iCAAiC,CAAC;AAC3D,UAAQ,IAAIA,OAAM,IAAI,kCAAkC,CAAC;AAC3D;;;ACTA,OAAOC,YAAW;AAElB,eAAsB,gBAA+B;AACnD,UAAQ,IAAIA,OAAM,KAAK,uBAAuB,CAAC;AAC/C,UAAQ,IAAIA,OAAM,OAAO,kDAAkD,CAAC;AAC9E;;;ALIA,SAAS,kBAAAC,uBAAsB;AAE/B,IAAM,UAAU,IAAI,QAAQ;AAE5B,QACG,KAAK,UAAU,EACf,YAAY,0EAAqE,EACjF,QAAQ,OAAO;AAElB,QACG,QAAQ,QAAQ,EAChB,YAAY,+BAA+B,EAC3C,SAAS,UAAU,cAAc,EACjC,OAAO,aAAa;AAEvB,QACG,QAAQ,KAAK,EACb,YAAY,mCAAmC,EAC/C,SAAS,WAAW,wBAAwB,EAC5C,OAAO,UAAU;AAEpB,QACG,QAAQ,KAAK,EACb,YAAY,4BAA4B,EACxC,SAAS,WAAW,wBAAwB,EAC5C,OAAO,yBAAyB,cAAc,EAC9C,OAAO,UAAU;AAEpB,QACG,QAAQ,MAAM,EACd,YAAY,iBAAiB,EAC7B,OAAO,WAAW;AAErB,QACG,QAAQ,QAAQ,EAChB,YAAY,qCAAqC,EACjD,OAAO,aAAa;AAEvBA,gBAAe,KAAK;AACpB,UAAU;AACV,QAAQ,MAAM,QAAQ,IAAI;","names":["readAgentConfig","Agent","chalk","SecretsManager","chalk","chalk","chalk","SecretsManager"]}
@@ -0,0 +1,11 @@
1
+ import {
2
+ detectProjectRoot,
3
+ printLogo,
4
+ readAgentConfig
5
+ } from "./chunk-5EMFYHGK.js";
6
+ export {
7
+ detectProjectRoot,
8
+ printLogo,
9
+ readAgentConfig
10
+ };
11
+ //# sourceMappingURL=utils-IPGWDRWQ.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
package/package.json ADDED
@@ -0,0 +1,39 @@
1
+ {
2
+ "name": "@lupaflow/cli",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "license": "MIT",
6
+ "publishConfig": {
7
+ "access": "public"
8
+ },
9
+ "main": "./dist/index.js",
10
+ "module": "./dist/index.js",
11
+ "types": "./dist/index.d.ts",
12
+ "exports": {
13
+ ".": {
14
+ "types": "./dist/index.d.ts",
15
+ "require": "./dist/index.js",
16
+ "import": "./dist/index.js"
17
+ }
18
+ },
19
+ "bin": {
20
+ "lupaflow": "./dist/index.js"
21
+ },
22
+ "scripts": {
23
+ "build": "tsup",
24
+ "dev": "tsup --watch"
25
+ },
26
+ "dependencies": {
27
+ "@lupaflow/core": "workspace:*",
28
+ "@lupaflow/types": "workspace:*",
29
+ "@lupaflow/agent": "workspace:*",
30
+ "@lupaflow/secrets": "workspace:*",
31
+ "chalk": "^5.3.0",
32
+ "commander": "^12.1.0",
33
+ "ora": "^8.1.0"
34
+ },
35
+ "devDependencies": {
36
+ "tsup": "^8.3.0",
37
+ "typescript": "^5.6.0"
38
+ }
39
+ }
@@ -0,0 +1,53 @@
1
+ import { writeFile, mkdir } from "fs/promises"
2
+ import { join } from "path"
3
+
4
+ export async function createCommand(name: string): Promise<void> {
5
+ const dir = join(process.cwd(), name)
6
+
7
+ await mkdir(dir, { recursive: true })
8
+ await mkdir(join(dir, "agents"), { recursive: true })
9
+ await mkdir(join(dir, "tools"), { recursive: true })
10
+ await mkdir(join(dir, "workflows"), { recursive: true })
11
+
12
+ const packageJson = {
13
+ name,
14
+ version: "1.0.0",
15
+ type: "module",
16
+ scripts: {
17
+ dev: "lupaflow dev",
18
+ run: "lupaflow run",
19
+ test: "lupaflow test",
20
+ },
21
+ dependencies: {
22
+ lupaflow: "^0.1.0",
23
+ },
24
+ }
25
+
26
+ await writeFile(join(dir, "package.json"), JSON.stringify(packageJson, null, 2))
27
+
28
+ const envContent = `# LupaFlow Secrets
29
+ # Get your keys and add them here
30
+ # OPENROUTER_API_KEY=
31
+ # GOOGLE_API_KEY=
32
+ # GROQ_API_KEY=
33
+ `
34
+ await writeFile(join(dir, ".env"), envContent)
35
+
36
+ const agentTemplate = `import { Agent } from "lupaflow"
37
+
38
+ const agent = new Agent({
39
+ name: "${name}-agent",
40
+ provider: "openrouter",
41
+ systemPrompt: "You are a helpful assistant.",
42
+ })
43
+
44
+ const result = await agent.run("Hello!")
45
+ console.log(result)
46
+ `
47
+
48
+ await writeFile(join(dir, "agents", "main.ts"), agentTemplate)
49
+
50
+ console.log(`\n ✅ Created project: ${name}\n`)
51
+ console.log(` ${"cd " + name}`)
52
+ console.log(` ${"lupaflow dev"}\n`)
53
+ }
@@ -0,0 +1,6 @@
1
+ import chalk from "chalk"
2
+
3
+ export async function deployCommand(): Promise<void> {
4
+ console.log(chalk.cyan("\n LupaFlow Deploy\n"))
5
+ console.log(chalk.yellow(" Cloud deployment coming in a future release.\n"))
6
+ }
@@ -0,0 +1,43 @@
1
+ import chalk from "chalk"
2
+ import { SecretsManager } from "@lupaflow/secrets"
3
+ import readline from "readline"
4
+
5
+ export async function devCommand(agentPath?: string): Promise<void> {
6
+ SecretsManager.init()
7
+
8
+ const rl = readline.createInterface({
9
+ input: process.stdin,
10
+ output: process.stdout,
11
+ })
12
+
13
+ console.log(chalk.cyan("\n LupaFlow Dev — Interactive Mode\n"))
14
+ console.log(chalk.dim(" Type your messages. Type 'exit' to quit.\n"))
15
+
16
+ const prompt = () => {
17
+ rl.question(chalk.yellow(" You: "), async (input) => {
18
+ if (input.toLowerCase() === "exit" || input.toLowerCase() === "quit") {
19
+ console.log(chalk.dim("\n Goodbye!\n"))
20
+ rl.close()
21
+ return
22
+ }
23
+
24
+ console.log(chalk.dim(` Running agent...\n`))
25
+
26
+ const path = agentPath || "agents/main.ts"
27
+ try {
28
+ const { readAgentConfig } = await import("../utils")
29
+ const { Agent } = await import("@lupaflow/agent")
30
+ const config: any = await readAgentConfig(path)
31
+ const agent = new Agent(config)
32
+ const result = await agent.run(input)
33
+ console.log(chalk.green(` Agent: ${result.output}\n`))
34
+ } catch (err: any) {
35
+ console.error(chalk.red(` Error: ${err.message}\n`))
36
+ }
37
+
38
+ prompt()
39
+ })
40
+ }
41
+
42
+ prompt()
43
+ }
@@ -0,0 +1,28 @@
1
+ import chalk from "chalk"
2
+ import { readAgentConfig, printLogo } from "../utils"
3
+ import { SecretsManager } from "@lupaflow/secrets"
4
+ import { Agent } from "@lupaflow/agent"
5
+
6
+ export async function runCommand(agentPath?: string): Promise<void> {
7
+ printLogo()
8
+ SecretsManager.init()
9
+
10
+ const path = agentPath || "agents/main.ts"
11
+
12
+ try {
13
+ const config: any = await readAgentConfig(path)
14
+ const agent = new Agent(config)
15
+
16
+ const prompt = process.argv.slice(3).join(" ") || "Hello!"
17
+ console.log(chalk.dim(`\n Running "${config.name || "agent"}"...\n`))
18
+
19
+ const result = await agent.run(prompt)
20
+
21
+ console.log(chalk.green("\n Response:"))
22
+ console.log(` ${result.output}`)
23
+ console.log(chalk.dim(`\n Tokens: ${result.usage.totalTokens} | Latency: ${result.latencyMs}ms | Tool calls: ${result.toolCalls}\n`))
24
+ } catch (err: any) {
25
+ console.error(chalk.red(`\n Error: ${err.message}\n`))
26
+ process.exit(1)
27
+ }
28
+ }
@@ -0,0 +1,10 @@
1
+ import chalk from "chalk"
2
+
3
+ export async function testCommand(): Promise<void> {
4
+ console.log(chalk.cyan("\n LupaFlow Test\n"))
5
+ console.log(chalk.dim(" Running agent tests...\n"))
6
+
7
+ // TODO: actual test runner integration
8
+ console.log(chalk.yellow(" Test framework coming soon.\n"))
9
+ console.log(chalk.dim(" For now, use: bun run vitest\n"))
10
+ }
package/src/index.ts ADDED
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env node
2
+
3
+ import { Command } from "commander"
4
+ import { createCommand } from "./commands/create"
5
+ import { devCommand } from "./commands/dev"
6
+ import { runCommand } from "./commands/run"
7
+ import { testCommand } from "./commands/test"
8
+ import { deployCommand } from "./commands/deploy"
9
+ import { printLogo } from "./utils"
10
+ import { SecretsManager } from "@lupaflow/secrets"
11
+
12
+ const program = new Command()
13
+
14
+ program
15
+ .name("lupaflow")
16
+ .description("AI Agent Framework — build, run, and orchestrate intelligent agents")
17
+ .version("0.1.0")
18
+
19
+ program
20
+ .command("create")
21
+ .description("Create a new LupaFlow project")
22
+ .argument("<name>", "Project name")
23
+ .action(createCommand)
24
+
25
+ program
26
+ .command("dev")
27
+ .description("Run agent in interactive dev mode")
28
+ .argument("[agent]", "Agent config file path")
29
+ .action(devCommand)
30
+
31
+ program
32
+ .command("run")
33
+ .description("Run an agent with a prompt")
34
+ .argument("[agent]", "Agent config file path")
35
+ .option("-p, --prompt <prompt>", "Input prompt")
36
+ .action(runCommand)
37
+
38
+ program
39
+ .command("test")
40
+ .description("Run agent tests")
41
+ .action(testCommand)
42
+
43
+ program
44
+ .command("deploy")
45
+ .description("Deploy agent to cloud (coming soon)")
46
+ .action(deployCommand)
47
+
48
+ SecretsManager.init()
49
+ printLogo()
50
+ program.parse(process.argv)
package/src/utils.ts ADDED
@@ -0,0 +1,24 @@
1
+ import chalk from "chalk"
2
+ import { readFile } from "fs/promises"
3
+
4
+ export function printLogo(): void {
5
+ console.log(`
6
+ ${chalk.cyan("╔══════════════════════════════════════╗")}
7
+ ${chalk.cyan("║")} ${chalk.bold.cyan("LUPAFLOW")} v0.1.0 ${chalk.cyan("║")}
8
+ ${chalk.cyan("║")} ${chalk.dim("AI Agent Framework")} ${chalk.cyan("║")}
9
+ ${chalk.cyan("╚══════════════════════════════════════╝")}
10
+ `)
11
+ }
12
+
13
+ export async function readAgentConfig(path: string): Promise<Record<string, unknown>> {
14
+ const content = await readFile(path, "utf-8")
15
+ if (path.endsWith(".json")) {
16
+ return JSON.parse(content)
17
+ }
18
+ const mod = await import(path)
19
+ return mod.default || mod
20
+ }
21
+
22
+ export function detectProjectRoot(): string {
23
+ return process.cwd()
24
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../../tsconfig.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist",
5
+ "rootDir": "./src"
6
+ },
7
+ "include": ["src"]
8
+ }
package/tsup.config.ts ADDED
@@ -0,0 +1,9 @@
1
+ import { defineConfig } from "tsup"
2
+ export default defineConfig({
3
+ entry: { index: "src/index.ts" },
4
+ format: ["cjs", "esm"],
5
+ dts: true,
6
+ sourcemap: true,
7
+ clean: true,
8
+ external: [/node_modules/],
9
+ })