microfox 1.0.11

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.
Files changed (91) hide show
  1. package/CHANGELOG.md +72 -0
  2. package/README.md +114 -0
  3. package/dist/agent-template.txt +486 -0
  4. package/dist/background-agent/.gitignore.txt +22 -0
  5. package/dist/background-agent/eslint.config.js.txt +48 -0
  6. package/dist/background-agent/microfox.json.txt +4 -0
  7. package/dist/background-agent/openapi.md.txt +1 -0
  8. package/dist/background-agent/package.json.txt +47 -0
  9. package/dist/background-agent/serverless.yml.txt +123 -0
  10. package/dist/background-agent/src/functions/cron-paginate.ts.txt +135 -0
  11. package/dist/background-agent/src/functions/cron-populate.ts.txt +33 -0
  12. package/dist/background-agent/src/functions/route-trigger-index.ts.txt +157 -0
  13. package/dist/background-agent/src/functions/route-trigger-populate.ts.txt +0 -0
  14. package/dist/background-agent/src/functions/sqs-index.ts.txt +147 -0
  15. package/dist/background-agent/src/helpers/ragRedis.ts.txt +78 -0
  16. package/dist/background-agent/src/index.ts.txt +69 -0
  17. package/dist/background-agent/tsconfig.json.txt +33 -0
  18. package/dist/chunk-4HNHBA2H.mjs +104 -0
  19. package/dist/chunk-4HNHBA2H.mjs.map +1 -0
  20. package/dist/chunk-ARAHSYJI.mjs +263 -0
  21. package/dist/chunk-ARAHSYJI.mjs.map +1 -0
  22. package/dist/chunk-JGAX4PD6.mjs +290 -0
  23. package/dist/chunk-JGAX4PD6.mjs.map +1 -0
  24. package/dist/chunk-KPJJOO76.mjs +12 -0
  25. package/dist/chunk-KPJJOO76.mjs.map +1 -0
  26. package/dist/chunk-TZQZMKHP.mjs +11 -0
  27. package/dist/chunk-TZQZMKHP.mjs.map +1 -0
  28. package/dist/chunk-UFRGJMF4.mjs +154 -0
  29. package/dist/chunk-UFRGJMF4.mjs.map +1 -0
  30. package/dist/chunk-UHWJTQKW.mjs +139 -0
  31. package/dist/chunk-UHWJTQKW.mjs.map +1 -0
  32. package/dist/chunk-UYROVW53.mjs +89 -0
  33. package/dist/chunk-UYROVW53.mjs.map +1 -0
  34. package/dist/chunk-XGFSFWK3.mjs +113 -0
  35. package/dist/chunk-XGFSFWK3.mjs.map +1 -0
  36. package/dist/cli.d.mts +2 -0
  37. package/dist/cli.d.ts +2 -0
  38. package/dist/cli.js +1154 -0
  39. package/dist/cli.js.map +1 -0
  40. package/dist/cli.mjs +52 -0
  41. package/dist/cli.mjs.map +1 -0
  42. package/dist/commands/add.d.mts +5 -0
  43. package/dist/commands/add.d.ts +5 -0
  44. package/dist/commands/add.js +126 -0
  45. package/dist/commands/add.js.map +1 -0
  46. package/dist/commands/add.mjs +10 -0
  47. package/dist/commands/add.mjs.map +1 -0
  48. package/dist/commands/code.d.mts +5 -0
  49. package/dist/commands/code.d.ts +5 -0
  50. package/dist/commands/code.js +187 -0
  51. package/dist/commands/code.js.map +1 -0
  52. package/dist/commands/code.mjs +9 -0
  53. package/dist/commands/code.mjs.map +1 -0
  54. package/dist/commands/install.d.mts +5 -0
  55. package/dist/commands/install.d.ts +5 -0
  56. package/dist/commands/install.js +296 -0
  57. package/dist/commands/install.js.map +1 -0
  58. package/dist/commands/install.mjs +9 -0
  59. package/dist/commands/install.mjs.map +1 -0
  60. package/dist/commands/kickstart.d.mts +5 -0
  61. package/dist/commands/kickstart.d.ts +5 -0
  62. package/dist/commands/kickstart.js +322 -0
  63. package/dist/commands/kickstart.js.map +1 -0
  64. package/dist/commands/kickstart.mjs +10 -0
  65. package/dist/commands/kickstart.mjs.map +1 -0
  66. package/dist/commands/push.d.mts +5 -0
  67. package/dist/commands/push.d.ts +5 -0
  68. package/dist/commands/push.js +137 -0
  69. package/dist/commands/push.js.map +1 -0
  70. package/dist/commands/push.mjs +9 -0
  71. package/dist/commands/push.mjs.map +1 -0
  72. package/dist/commands/status.d.mts +7 -0
  73. package/dist/commands/status.d.ts +7 -0
  74. package/dist/commands/status.js +148 -0
  75. package/dist/commands/status.js.map +1 -0
  76. package/dist/commands/status.mjs +13 -0
  77. package/dist/commands/status.mjs.map +1 -0
  78. package/dist/commands/update.d.mts +5 -0
  79. package/dist/commands/update.d.ts +5 -0
  80. package/dist/commands/update.js +172 -0
  81. package/dist/commands/update.js.map +1 -0
  82. package/dist/commands/update.mjs +9 -0
  83. package/dist/commands/update.mjs.map +1 -0
  84. package/dist/index.d.mts +20 -0
  85. package/dist/index.d.ts +20 -0
  86. package/dist/index.js +406 -0
  87. package/dist/index.js.map +1 -0
  88. package/dist/index.mjs +14 -0
  89. package/dist/index.mjs.map +1 -0
  90. package/dist/package-template.txt +494 -0
  91. package/package.json +68 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/getProjectRoot.ts"],"sourcesContent":["export const getWorkingDirectory = () => {\n // Return the current working directory where the CLI is executed\n // This allows creating packages in any directory\n return process.cwd();\n}; "],"mappings":";;;AAAO,IAAM,sBAAsB,MAAM;AAGvC,SAAO,QAAQ,IAAI;AACrB;","names":[]}
@@ -0,0 +1,154 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/commands/code.ts
4
+ import { Command } from "commander";
5
+ import chalk from "chalk";
6
+ import axios from "axios";
7
+ import { spawn } from "child_process";
8
+
9
+ // src/utils/findProjectRoot.ts
10
+ import path from "path";
11
+ import fs from "fs";
12
+ async function findProjectRoot(startPath = process.cwd()) {
13
+ let currentPath = startPath;
14
+ let count = 0;
15
+ while (true) {
16
+ const microfoxRootPath = path.join(currentPath, "microfox-root");
17
+ if (fs.existsSync(microfoxRootPath)) {
18
+ return currentPath;
19
+ }
20
+ const parentPath = path.dirname(currentPath);
21
+ if (parentPath === currentPath || count > 10) {
22
+ return null;
23
+ }
24
+ currentPath = parentPath;
25
+ }
26
+ }
27
+
28
+ // src/commands/code.ts
29
+ import path2 from "path";
30
+ import readline from "readline";
31
+ var NEXTJS_PORT = 3e3;
32
+ var API_URL = `http://localhost:${NEXTJS_PORT}/api/agent`;
33
+ var createLogger = (rl) => {
34
+ return (source, message, color) => {
35
+ readline.cursorTo(process.stdout, 0);
36
+ readline.clearLine(process.stdout, 0);
37
+ const prefix = color(`[${source}]`);
38
+ const lines = message.trim().split("\n");
39
+ for (const line of lines) {
40
+ console.log(`${prefix} ${line}`);
41
+ }
42
+ rl.prompt(true);
43
+ };
44
+ };
45
+ async function codeAction() {
46
+ var _a, _b;
47
+ let childProcess = null;
48
+ const killProcess = () => {
49
+ if (childProcess && childProcess.pid) {
50
+ console.log(chalk.yellow("\nGracefully shutting down..."));
51
+ if (process.platform === "win32") {
52
+ spawn("taskkill", ["/pid", childProcess.pid.toString(), "/f", "/t"]);
53
+ } else {
54
+ childProcess.kill("SIGINT");
55
+ }
56
+ childProcess = null;
57
+ }
58
+ };
59
+ process.on("SIGINT", () => {
60
+ killProcess();
61
+ process.exit(0);
62
+ });
63
+ process.on("exit", killProcess);
64
+ try {
65
+ const projectRoot = await findProjectRoot();
66
+ if (!projectRoot) {
67
+ console.error(
68
+ chalk.red("Error: Could not find project root. Make sure you are inside a Microfox project.")
69
+ );
70
+ process.exit(1);
71
+ }
72
+ const codeAppPath = path2.join(projectRoot, "apps", "code");
73
+ console.log(chalk.cyan(`Starting Next.js server in ${codeAppPath}...`));
74
+ childProcess = spawn("npm", ["run", "dev"], {
75
+ cwd: codeAppPath,
76
+ shell: true,
77
+ env: { ...process.env, FORCE_COLOR: "true" }
78
+ });
79
+ const rl = readline.createInterface({
80
+ input: process.stdin,
81
+ output: process.stdout,
82
+ prompt: chalk.cyan("> ")
83
+ });
84
+ const log = createLogger(rl);
85
+ let serverReady = false;
86
+ const onServerData = (data) => {
87
+ const output = data.toString();
88
+ if (!serverReady) {
89
+ process.stdout.write(output);
90
+ if (output.toLowerCase().includes("ready in") || output.toLowerCase().includes("compiled successfully")) {
91
+ serverReady = true;
92
+ console.log(chalk.green("\nServer is ready. You can now type your queries."));
93
+ rl.prompt();
94
+ }
95
+ } else {
96
+ log("nextjs", output, chalk.gray);
97
+ }
98
+ };
99
+ (_a = childProcess.stdout) == null ? void 0 : _a.on("data", onServerData);
100
+ (_b = childProcess.stderr) == null ? void 0 : _b.on("data", onServerData);
101
+ childProcess.on("exit", (code) => {
102
+ log("system", `Next.js process exited with code ${code}`, chalk.red);
103
+ process.exit(code != null ? code : 1);
104
+ });
105
+ rl.on("line", async (line) => {
106
+ const query = line.trim();
107
+ if (!serverReady) {
108
+ log("system", "Server is not ready yet, please wait.", chalk.yellow);
109
+ rl.prompt();
110
+ return;
111
+ }
112
+ if (query.toLowerCase() === "exit") {
113
+ rl.close();
114
+ }
115
+ if (query) {
116
+ try {
117
+ const response = await axios.post(API_URL, { prompt: query });
118
+ const responseData = typeof response.data === "object" ? JSON.stringify(response.data, null, 2) : response.data;
119
+ log("agent", responseData, chalk.green);
120
+ } catch (error) {
121
+ if (axios.isAxiosError(error)) {
122
+ log("agent", `Error: ${error.message}`, chalk.red);
123
+ } else if (error instanceof Error) {
124
+ log("agent", `An unknown error occurred: ${error.message}`, chalk.red);
125
+ }
126
+ }
127
+ }
128
+ rl.prompt();
129
+ });
130
+ rl.on("close", () => {
131
+ killProcess();
132
+ process.exit(0);
133
+ });
134
+ } catch (error) {
135
+ killProcess();
136
+ if (error instanceof Error) {
137
+ console.error(chalk.red(`Error: ${error.message}`));
138
+ }
139
+ process.exit(1);
140
+ }
141
+ }
142
+ var codeCommand = new Command("code").description("Run the code agent for your project").action(async () => {
143
+ try {
144
+ await codeAction();
145
+ } catch (error) {
146
+ console.error(chalk.red("\u274C Error:"), error instanceof Error ? error.message : String(error));
147
+ process.exit(1);
148
+ }
149
+ });
150
+
151
+ export {
152
+ codeCommand
153
+ };
154
+ //# sourceMappingURL=chunk-UFRGJMF4.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/code.ts","../src/utils/findProjectRoot.ts"],"sourcesContent":["import { Command } from 'commander';\nimport chalk from 'chalk';\nimport axios from 'axios';\nimport { spawn, ChildProcess } from 'child_process';\nimport { findProjectRoot } from '../utils/findProjectRoot';\nimport path from 'path';\nimport readline from 'readline';\n\nconst NEXTJS_PORT = 3000;\nconst API_URL = `http://localhost:${NEXTJS_PORT}/api/agent`;\n\nconst createLogger = (rl: readline.Interface) => {\n return (source: string, message: string, color: typeof chalk) => {\n readline.cursorTo(process.stdout, 0);\n readline.clearLine(process.stdout, 0);\n\n const prefix = color(`[${source}]`);\n \n const lines = message.trim().split('\\n');\n for (const line of lines) {\n console.log(`${prefix} ${line}`);\n }\n \n rl.prompt(true);\n };\n};\n\nasync function codeAction(): Promise<void> {\n let childProcess: ChildProcess | null = null;\n \n const killProcess = () => {\n if (childProcess && childProcess.pid) {\n console.log(chalk.yellow('\\nGracefully shutting down...'));\n if (process.platform === 'win32') {\n spawn('taskkill', ['/pid', childProcess.pid.toString(), '/f', '/t']);\n } else {\n childProcess.kill('SIGINT');\n }\n childProcess = null;\n }\n };\n\n process.on('SIGINT', () => {\n killProcess();\n process.exit(0);\n });\n process.on('exit', killProcess);\n\n\n try {\n const projectRoot = await findProjectRoot();\n if (!projectRoot) {\n console.error(\n chalk.red('Error: Could not find project root. Make sure you are inside a Microfox project.')\n );\n process.exit(1);\n }\n\n const codeAppPath = path.join(projectRoot, 'apps', 'code');\n \n console.log(chalk.cyan(`Starting Next.js server in ${codeAppPath}...`));\n \n childProcess = spawn('npm', ['run', 'dev'], {\n cwd: codeAppPath,\n shell: true,\n env: { ...process.env, FORCE_COLOR: 'true' }\n });\n\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout,\n prompt: chalk.cyan('> ')\n });\n\n const log = createLogger(rl);\n \n let serverReady = false;\n\n const onServerData = (data: Buffer) => {\n const output = data.toString();\n if (!serverReady) {\n process.stdout.write(output);\n if (output.toLowerCase().includes('ready in') || output.toLowerCase().includes('compiled successfully')) {\n serverReady = true;\n console.log(chalk.green('\\nServer is ready. You can now type your queries.'));\n rl.prompt();\n }\n } else {\n log('nextjs', output, chalk.gray);\n }\n };\n\n childProcess.stdout?.on('data', onServerData);\n childProcess.stderr?.on('data', onServerData);\n\n childProcess.on('exit', (code) => {\n log('system', `Next.js process exited with code ${code}`, chalk.red);\n process.exit(code ?? 1);\n });\n\n rl.on('line', async (line) => {\n const query = line.trim();\n if (!serverReady) {\n log('system', 'Server is not ready yet, please wait.', chalk.yellow);\n rl.prompt();\n return;\n }\n if (query.toLowerCase() === 'exit') {\n rl.close();\n }\n if (query) {\n try {\n const response = await axios.post(API_URL, { prompt: query });\n const responseData = typeof response.data === 'object' \n ? JSON.stringify(response.data, null, 2) \n : response.data;\n \n log('agent', responseData, chalk.green);\n\n } catch (error) {\n if (axios.isAxiosError(error)) {\n log('agent', `Error: ${error.message}`, chalk.red);\n } else if (error instanceof Error) {\n log('agent', `An unknown error occurred: ${error.message}`, chalk.red);\n }\n }\n }\n rl.prompt();\n });\n\n rl.on('close', () => {\n killProcess();\n process.exit(0);\n });\n\n } catch (error) {\n killProcess();\n if (error instanceof Error) {\n console.error(chalk.red(`Error: ${error.message}`));\n }\n process.exit(1);\n }\n}\n\nexport const codeCommand = new Command('code')\n .description('Run the code agent for your project')\n .action(async () => {\n try {\n await codeAction();\n } catch (error) {\n console.error(chalk.red('❌ Error:'), error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n }); ","import path from 'path';\nimport fs from 'fs';\n\nexport async function findProjectRoot(startPath: string = process.cwd()): Promise<string | null> {\n let currentPath = startPath;\n let count = 0\n while (true) {\n const microfoxRootPath = path.join(currentPath, 'microfox-root');\n if (fs.existsSync(microfoxRootPath)) {\n return currentPath;\n }\n\n const parentPath = path.dirname(currentPath);\n if (parentPath === currentPath || count > 10) {\n // Reached the root of the file system\n return null;\n }\n currentPath = parentPath;\n }\n} "],"mappings":"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","names":["path"]}
@@ -0,0 +1,139 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/commands/update.ts
4
+ import { Command } from "commander";
5
+
6
+ // src/utils/experimental-updater.ts
7
+ import fs from "fs";
8
+ import path from "path";
9
+ import { execSync } from "child_process";
10
+ import chalk from "chalk";
11
+ var CWD_PACKAGE_JSON = path.join(process.cwd(), "package.json");
12
+ function log(message, isError = false, isWarning = false) {
13
+ const timestamp = (/* @__PURE__ */ new Date()).toLocaleTimeString();
14
+ let prefix;
15
+ if (isError) {
16
+ prefix = chalk.red(`\u274C [update-microfox ${timestamp}]`);
17
+ } else if (isWarning) {
18
+ prefix = chalk.yellow(`\u26A0\uFE0F [update-microfox ${timestamp}]`);
19
+ } else {
20
+ prefix = chalk.blue(`\u2139\uFE0F [update-microfox ${timestamp}]`);
21
+ }
22
+ console.log(`${prefix} ${message}`);
23
+ }
24
+ function logSuccess(message) {
25
+ const timestamp = (/* @__PURE__ */ new Date()).toLocaleTimeString();
26
+ console.log(chalk.green(`\u2705 [update-microfox ${timestamp}] ${message}`));
27
+ }
28
+ function logSection(title) {
29
+ console.log("\n" + "=".repeat(60));
30
+ console.log(` ${title}`);
31
+ console.log("=".repeat(60));
32
+ }
33
+ function updatePackage(packageName, isDev) {
34
+ var _a;
35
+ log(`Updating package to latest: ${packageName}`);
36
+ const saveFlag = isDev ? "--save-dev" : "--save";
37
+ try {
38
+ execSync(`npm install ${packageName}@latest ${saveFlag}`, { cwd: process.cwd(), stdio: "pipe" });
39
+ logSuccess(`Successfully updated ${packageName} to the latest version from npm.`);
40
+ return true;
41
+ } catch (error) {
42
+ log(`Failed to update ${packageName}: ${error.message}`, true);
43
+ log(`Stderr: ${(_a = error.stderr) == null ? void 0 : _a.toString()}`, true);
44
+ return false;
45
+ }
46
+ }
47
+ function updateSpecificPackage(packageName, isDevFlag) {
48
+ logSection(`Updating Specific Package: ${packageName}`);
49
+ if (!packageName || typeof packageName !== "string" || !packageName.startsWith("@microfox/")) {
50
+ log(`Invalid package name: "${packageName}". Must start with "@microfox/".`, true);
51
+ process.exit(1);
52
+ }
53
+ const packageJson = JSON.parse(fs.readFileSync(CWD_PACKAGE_JSON, "utf8"));
54
+ const dependencies = packageJson.dependencies || {};
55
+ const devDependencies = packageJson.devDependencies || {};
56
+ let isDev = !!devDependencies[packageName];
57
+ if (!dependencies[packageName] && !devDependencies[packageName]) {
58
+ log(`Package "${packageName}" not found in dependencies.`, false, true);
59
+ log(`Attempting to install it as a new package...`, false, true);
60
+ isDev = isDevFlag;
61
+ } else {
62
+ log(`Package found in ${isDev ? "devDependencies" : "dependencies"}.`);
63
+ }
64
+ if (updatePackage(packageName, isDev)) {
65
+ logSection(`\u2705 SUCCESS`);
66
+ logSuccess(`Package ${packageName} updated successfully!`);
67
+ } else {
68
+ log(`Failed to update ${packageName}`, true);
69
+ process.exit(1);
70
+ }
71
+ }
72
+ function updateAllPackages() {
73
+ logSection("Updating all @microfox/* packages to latest");
74
+ const packageJson = JSON.parse(fs.readFileSync(CWD_PACKAGE_JSON, "utf8"));
75
+ const dependencies = packageJson.dependencies || {};
76
+ const devDependencies = packageJson.devDependencies || {};
77
+ const allDependencies = { ...dependencies, ...devDependencies };
78
+ const microfoxPackages = Object.entries(allDependencies).filter(([name]) => name.startsWith("@microfox/")).map(([name]) => name);
79
+ if (microfoxPackages.length === 0) {
80
+ log("\u2139\uFE0F No @microfox/* packages found in package.json.");
81
+ return;
82
+ }
83
+ log(`Found ${microfoxPackages.length} packages to update:`);
84
+ microfoxPackages.forEach((pkg) => log(` - ${pkg}`));
85
+ let successCount = 0;
86
+ let failureCount = 0;
87
+ for (const packageName of microfoxPackages) {
88
+ const isDev = !!devDependencies[packageName];
89
+ if (updatePackage(packageName, isDev)) {
90
+ successCount++;
91
+ } else {
92
+ failureCount++;
93
+ }
94
+ }
95
+ log(`
96
+ \u{1F4CA} Update Summary:`);
97
+ log(` \u2705 Successfully updated: ${successCount} packages`);
98
+ if (failureCount > 0) {
99
+ log(` \u274C Failed to update: ${failureCount} packages`);
100
+ }
101
+ }
102
+ async function runUpdate(packages, options) {
103
+ try {
104
+ logSection("Microfox Package Updater (Experimental)");
105
+ if (!fs.existsSync(CWD_PACKAGE_JSON)) {
106
+ log(`package.json not found in ${process.cwd()}`, true);
107
+ process.exit(1);
108
+ }
109
+ if (packages.length > 0) {
110
+ log(`Updating ${packages.length} specific package(s)...`);
111
+ packages.forEach((pkg) => updateSpecificPackage(pkg, !!options.dev));
112
+ logSection("\u{1F389} All specified packages processed.");
113
+ } else {
114
+ updateAllPackages();
115
+ }
116
+ } catch (error) {
117
+ log("", true);
118
+ log(`An unexpected error occurred: ${error.message}`, true);
119
+ if (error.stack) {
120
+ log(`Stack trace: ${error.stack}`, true);
121
+ }
122
+ process.exit(1);
123
+ }
124
+ }
125
+
126
+ // src/commands/update.ts
127
+ var updateCommand = new Command("update").description("Update @microfox packages to the latest versions from npm.").argument("[packages...]", "Specific packages to update").option("--experimental", "Enable experimental features").option("--dev", "Update packages in devDependencies").action(async (packages, options) => {
128
+ if (options.experimental) {
129
+ await runUpdate(packages, options);
130
+ } else {
131
+ console.log("This command is only available with the --experimental flag.");
132
+ process.exit(1);
133
+ }
134
+ });
135
+
136
+ export {
137
+ updateCommand
138
+ };
139
+ //# sourceMappingURL=chunk-UHWJTQKW.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/update.ts","../src/utils/experimental-updater.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { runUpdate } from '../utils/experimental-updater';\n\nexport const updateCommand = new Command('update')\n .description('Update @microfox packages to the latest versions from npm.')\n .argument('[packages...]', 'Specific packages to update')\n .option('--experimental', 'Enable experimental features')\n .option('--dev', 'Update packages in devDependencies')\n .action(async (packages, options) => {\n if (options.experimental) {\n await runUpdate(packages, options);\n } else {\n console.log('This command is only available with the --experimental flag.');\n process.exit(1);\n }\n }); ","import fs from 'fs';\nimport path from 'path';\nimport { execSync } from 'child_process';\nimport chalk from 'chalk';\n\nconst CWD_PACKAGE_JSON = path.join(process.cwd(), 'package.json');\n\nfunction log(message: string, isError = false, isWarning = false) {\n const timestamp = new Date().toLocaleTimeString();\n let prefix;\n\n if (isError) {\n prefix = chalk.red(`❌ [update-microfox ${timestamp}]`);\n } else if (isWarning) {\n prefix = chalk.yellow(`⚠️ [update-microfox ${timestamp}]`);\n } else {\n prefix = chalk.blue(`ℹ️ [update-microfox ${timestamp}]`);\n }\n\n console.log(`${prefix} ${message}`);\n}\n\nfunction logSuccess(message: string) {\n const timestamp = new Date().toLocaleTimeString();\n console.log(chalk.green(`✅ [update-microfox ${timestamp}] ${message}`));\n}\n\nfunction logSection(title: string) {\n console.log('\\n' + '='.repeat(60));\n console.log(` ${title}`);\n console.log('='.repeat(60));\n}\n\nfunction updatePackage(packageName: string, isDev: boolean): boolean {\n log(`Updating package to latest: ${packageName}`);\n const saveFlag = isDev ? '--save-dev' : '--save';\n try {\n execSync(`npm install ${packageName}@latest ${saveFlag}`, { cwd: process.cwd(), stdio: 'pipe' });\n logSuccess(`Successfully updated ${packageName} to the latest version from npm.`);\n return true;\n } catch (error: any) {\n log(`Failed to update ${packageName}: ${error.message}`, true);\n log(`Stderr: ${error.stderr?.toString()}`, true);\n return false;\n }\n}\n\nfunction updateSpecificPackage(packageName: string, isDevFlag: boolean) {\n logSection(`Updating Specific Package: ${packageName}`);\n\n if (!packageName || typeof packageName !== 'string' || !packageName.startsWith('@microfox/')) {\n log(`Invalid package name: \"${packageName}\". Must start with \"@microfox/\".`, true);\n process.exit(1);\n }\n\n const packageJson = JSON.parse(fs.readFileSync(CWD_PACKAGE_JSON, 'utf8'));\n const dependencies = packageJson.dependencies || {};\n const devDependencies = packageJson.devDependencies || {};\n\n let isDev = !!devDependencies[packageName];\n\n if (!dependencies[packageName] && !devDependencies[packageName]) {\n log(`Package \"${packageName}\" not found in dependencies.`, false, true);\n log(`Attempting to install it as a new package...`, false, true);\n isDev = isDevFlag;\n } else {\n log(`Package found in ${isDev ? 'devDependencies' : 'dependencies'}.`);\n }\n\n if (updatePackage(packageName, isDev)) {\n logSection(`✅ SUCCESS`);\n logSuccess(`Package ${packageName} updated successfully!`);\n } else {\n log(`Failed to update ${packageName}`, true);\n process.exit(1);\n }\n}\n\nfunction updateAllPackages() {\n logSection('Updating all @microfox/* packages to latest');\n\n const packageJson = JSON.parse(fs.readFileSync(CWD_PACKAGE_JSON, 'utf8'));\n const dependencies = packageJson.dependencies || {};\n const devDependencies = packageJson.devDependencies || {};\n const allDependencies = { ...dependencies, ...devDependencies };\n\n const microfoxPackages = Object.entries(allDependencies)\n .filter(([name]) => name.startsWith('@microfox/'))\n .map(([name]) => name);\n\n if (microfoxPackages.length === 0) {\n log('ℹ️ No @microfox/* packages found in package.json.');\n return;\n }\n\n log(`Found ${microfoxPackages.length} packages to update:`);\n microfoxPackages.forEach(pkg => log(` - ${pkg}`));\n\n let successCount = 0;\n let failureCount = 0;\n\n for (const packageName of microfoxPackages) {\n const isDev = !!devDependencies[packageName];\n if (updatePackage(packageName, isDev)) {\n successCount++;\n } else {\n failureCount++;\n }\n }\n\n log(`\\n📊 Update Summary:`);\n log(` ✅ Successfully updated: ${successCount} packages`);\n if (failureCount > 0) {\n log(` ❌ Failed to update: ${failureCount} packages`);\n }\n}\n\nexport async function runUpdate(packages: string[], options: { dev?: boolean }) {\n try {\n logSection('Microfox Package Updater (Experimental)');\n\n if (!fs.existsSync(CWD_PACKAGE_JSON)) {\n log(`package.json not found in ${process.cwd()}`, true);\n process.exit(1);\n }\n\n if (packages.length > 0) {\n log(`Updating ${packages.length} specific package(s)...`);\n packages.forEach(pkg => updateSpecificPackage(pkg, !!options.dev));\n logSection('🎉 All specified packages processed.');\n } else {\n updateAllPackages();\n }\n } catch (error: any) {\n log('', true);\n log(`An unexpected error occurred: ${error.message}`, true);\n if (error.stack) {\n log(`Stack trace: ${error.stack}`, true);\n }\n process.exit(1);\n }\n} "],"mappings":"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","names":[]}
@@ -0,0 +1,89 @@
1
+ #!/usr/bin/env node
2
+ import {
3
+ getWorkingDirectory
4
+ } from "./chunk-TZQZMKHP.mjs";
5
+
6
+ // src/commands/add.ts
7
+ import { Command } from "commander";
8
+ import fs from "fs";
9
+ import path from "path";
10
+ import chalk from "chalk";
11
+ import inquirer from "inquirer";
12
+ import readlineSync from "readline-sync";
13
+ async function addBackgroundAgentFunctions(name) {
14
+ const workingDir = getWorkingDirectory();
15
+ const functionsDir = path.join(workingDir, "src", "functions", name);
16
+ console.log(
17
+ chalk.blue(
18
+ `\u{1F680} Adding background agent functions ${chalk.bold(name)} at ${functionsDir}
19
+ `
20
+ )
21
+ );
22
+ fs.mkdirSync(functionsDir, { recursive: true });
23
+ const templateDir = path.resolve(__dirname, "background-agent", "src", "functions");
24
+ const entries = fs.readdirSync(templateDir, { withFileTypes: true });
25
+ for (const entry of entries) {
26
+ const srcPath = path.join(templateDir, entry.name);
27
+ const destPath = path.join(functionsDir, entry.name.replace(/\.txt$/, ""));
28
+ if (!entry.isDirectory() && entry.name.endsWith(".txt")) {
29
+ const templateContent = fs.readFileSync(srcPath, "utf-8");
30
+ const content = templateContent.replace(/<%= agentName %>/g, name);
31
+ fs.writeFileSync(destPath, content);
32
+ console.log(chalk.green(`\u2705 Created ${path.relative(workingDir, destPath)}`));
33
+ }
34
+ }
35
+ }
36
+ async function addAction() {
37
+ console.log(chalk.cyan("\u2728 Add new features to your project!\n"));
38
+ const workingDir = getWorkingDirectory();
39
+ const microfoxConfigPath = path.join(workingDir, "microfox.json");
40
+ if (!fs.existsSync(microfoxConfigPath)) {
41
+ console.log(chalk.red("Error: `microfox.json` not found in the current directory."));
42
+ console.log(chalk.red("Please run this command from the root of a Microfox project."));
43
+ return;
44
+ }
45
+ const { featureType } = await inquirer.prompt([
46
+ {
47
+ type: "list",
48
+ name: "featureType",
49
+ message: "Select what you want to add:",
50
+ choices: ["background_agent_functions"]
51
+ }
52
+ ]);
53
+ if (!featureType) {
54
+ console.log(chalk.yellow("Operation cancelled."));
55
+ return;
56
+ }
57
+ if (featureType === "background_agent_functions") {
58
+ const functionName = readlineSync.question(
59
+ chalk.yellow("\u{1F4E6} Enter a name for the new functions: ")
60
+ );
61
+ if (!functionName.trim()) {
62
+ throw new Error("Function name cannot be empty");
63
+ }
64
+ await addBackgroundAgentFunctions(functionName.trim());
65
+ console.log(
66
+ chalk.green(
67
+ `
68
+ \u{1F389} Successfully added background agent functions ${chalk.bold(functionName)}!`
69
+ )
70
+ );
71
+ console.log(chalk.gray(`\u{1F4CD} Located at src/functions/${functionName.trim()}`));
72
+ console.log(chalk.yellow("\n\u{1F4A1} Next steps:"));
73
+ console.log(chalk.yellow(" 1. Check the new files in src/functions/"));
74
+ console.log(chalk.yellow(" 2. Update your agent logic to use the new functions."));
75
+ }
76
+ }
77
+ var addCommand = new Command("add").description("Add features to a Microfox project").action(async () => {
78
+ try {
79
+ await addAction();
80
+ } catch (error) {
81
+ console.error(chalk.red("\u274C Error:"), error instanceof Error ? error.message : String(error));
82
+ process.exit(1);
83
+ }
84
+ });
85
+
86
+ export {
87
+ addCommand
88
+ };
89
+ //# sourceMappingURL=chunk-UYROVW53.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/add.ts"],"sourcesContent":["import { Command } from 'commander';\nimport fs from 'fs';\nimport path from 'path';\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport readlineSync from 'readline-sync';\nimport { getWorkingDirectory } from '../utils/getProjectRoot';\n\nasync function addBackgroundAgentFunctions(name: string): Promise<void> {\n const workingDir = getWorkingDirectory();\n const functionsDir = path.join(workingDir, 'src', 'functions', name);\n\n // if (fs.existsSync(functionsDir)) {\n // throw new Error(`Directory already exists at ${functionsDir}`);\n // }\n\n console.log(\n chalk.blue(\n `🚀 Adding background agent functions ${chalk.bold(name)} at ${functionsDir}\\n`,\n ),\n );\n\n fs.mkdirSync(functionsDir, { recursive: true });\n\n const templateDir = path.resolve(__dirname, 'background-agent', 'src', 'functions');\n\n const entries = fs.readdirSync(templateDir, { withFileTypes: true });\n for (const entry of entries) {\n const srcPath = path.join(templateDir, entry.name);\n const destPath = path.join(functionsDir, entry.name.replace(/\\.txt$/, ''));\n\n if (!entry.isDirectory() && entry.name.endsWith('.txt')) {\n const templateContent = fs.readFileSync(srcPath, 'utf-8');\n const content = templateContent.replace(/<%= agentName %>/g, name);\n fs.writeFileSync(destPath, content);\n console.log(chalk.green(`✅ Created ${path.relative(workingDir, destPath)}`));\n }\n }\n}\n\nasync function addAction(): Promise<void> {\n console.log(chalk.cyan(\"✨ Add new features to your project!\\n\"));\n\n const workingDir = getWorkingDirectory();\n const microfoxConfigPath = path.join(workingDir, 'microfox.json');\n if (!fs.existsSync(microfoxConfigPath)) {\n console.log(chalk.red('Error: `microfox.json` not found in the current directory.'));\n console.log(chalk.red('Please run this command from the root of a Microfox project.'));\n return;\n }\n\n const { featureType } = await inquirer.prompt([\n {\n type: 'list',\n name: 'featureType',\n message: 'Select what you want to add:',\n choices: ['background_agent_functions'],\n },\n ]);\n\n if (!featureType) {\n console.log(chalk.yellow('Operation cancelled.'));\n return;\n }\n\n if (featureType === 'background_agent_functions') {\n const functionName = readlineSync.question(\n chalk.yellow('📦 Enter a name for the new functions: '),\n );\n\n if (!functionName.trim()) {\n throw new Error('Function name cannot be empty');\n }\n\n await addBackgroundAgentFunctions(functionName.trim());\n\n console.log(\n chalk.green(\n `\\n🎉 Successfully added background agent functions ${chalk.bold(functionName)}!`,\n ),\n );\n console.log(chalk.gray(`📍 Located at src/functions/${functionName.trim()}`));\n console.log(chalk.yellow('\\n💡 Next steps:'));\n console.log(chalk.yellow(' 1. Check the new files in src/functions/'));\n console.log(chalk.yellow(' 2. Update your agent logic to use the new functions.'));\n }\n}\n\nexport const addCommand = new Command('add')\n .description('Add features to a Microfox project')\n .action(async () => {\n try {\n await addAction();\n } catch (error) {\n console.error(chalk.red('❌ Error:'), error instanceof Error ? error.message : String(error));\n process.exit(1);\n }\n }); "],"mappings":";;;;;;AAAA,SAAS,eAAe;AACxB,OAAO,QAAQ;AACf,OAAO,UAAU;AACjB,OAAO,WAAW;AAClB,OAAO,cAAc;AACrB,OAAO,kBAAkB;AAGzB,eAAe,4BAA4B,MAA6B;AACtE,QAAM,aAAa,oBAAoB;AACvC,QAAM,eAAe,KAAK,KAAK,YAAY,OAAO,aAAa,IAAI;AAMnE,UAAQ;AAAA,IACN,MAAM;AAAA,MACJ,+CAAwC,MAAM,KAAK,IAAI,CAAC,OAAO,YAAY;AAAA;AAAA,IAC7E;AAAA,EACF;AAEA,KAAG,UAAU,cAAc,EAAE,WAAW,KAAK,CAAC;AAE9C,QAAM,cAAc,KAAK,QAAQ,WAAW,oBAAoB,OAAO,WAAW;AAElF,QAAM,UAAU,GAAG,YAAY,aAAa,EAAE,eAAe,KAAK,CAAC;AACnE,aAAW,SAAS,SAAS;AAC3B,UAAM,UAAU,KAAK,KAAK,aAAa,MAAM,IAAI;AACjD,UAAM,WAAW,KAAK,KAAK,cAAc,MAAM,KAAK,QAAQ,UAAU,EAAE,CAAC;AAEzE,QAAI,CAAC,MAAM,YAAY,KAAK,MAAM,KAAK,SAAS,MAAM,GAAG;AACvD,YAAM,kBAAkB,GAAG,aAAa,SAAS,OAAO;AACxD,YAAM,UAAU,gBAAgB,QAAQ,qBAAqB,IAAI;AACjE,SAAG,cAAc,UAAU,OAAO;AAClC,cAAQ,IAAI,MAAM,MAAM,kBAAa,KAAK,SAAS,YAAY,QAAQ,CAAC,EAAE,CAAC;AAAA,IAC7E;AAAA,EACF;AACF;AAEA,eAAe,YAA2B;AACxC,UAAQ,IAAI,MAAM,KAAK,4CAAuC,CAAC;AAE/D,QAAM,aAAa,oBAAoB;AACvC,QAAM,qBAAqB,KAAK,KAAK,YAAY,eAAe;AAChE,MAAI,CAAC,GAAG,WAAW,kBAAkB,GAAG;AACtC,YAAQ,IAAI,MAAM,IAAI,4DAA4D,CAAC;AACnF,YAAQ,IAAI,MAAM,IAAI,8DAA8D,CAAC;AACrF;AAAA,EACF;AAEA,QAAM,EAAE,YAAY,IAAI,MAAM,SAAS,OAAO;AAAA,IAC5C;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,SAAS,CAAC,4BAA4B;AAAA,IACxC;AAAA,EACF,CAAC;AAED,MAAI,CAAC,aAAa;AAChB,YAAQ,IAAI,MAAM,OAAO,sBAAsB,CAAC;AAChD;AAAA,EACF;AAEA,MAAI,gBAAgB,8BAA8B;AAChD,UAAM,eAAe,aAAa;AAAA,MAChC,MAAM,OAAO,gDAAyC;AAAA,IACxD;AAEA,QAAI,CAAC,aAAa,KAAK,GAAG;AACxB,YAAM,IAAI,MAAM,+BAA+B;AAAA,IACjD;AAEA,UAAM,4BAA4B,aAAa,KAAK,CAAC;AAErD,YAAQ;AAAA,MACN,MAAM;AAAA,QACJ;AAAA,0DAAsD,MAAM,KAAK,YAAY,CAAC;AAAA,MAChF;AAAA,IACF;AACA,YAAQ,IAAI,MAAM,KAAK,sCAA+B,aAAa,KAAK,CAAC,EAAE,CAAC;AAC5E,YAAQ,IAAI,MAAM,OAAO,yBAAkB,CAAC;AAC5C,YAAQ,IAAI,MAAM,OAAO,6CAA6C,CAAC;AACvE,YAAQ,IAAI,MAAM,OAAO,yDAAyD,CAAC;AAAA,EACrF;AACF;AAEO,IAAM,aAAa,IAAI,QAAQ,KAAK,EACtC,YAAY,oCAAoC,EAChD,OAAO,YAAY;AAChB,MAAI;AACA,UAAM,UAAU;AAAA,EACpB,SAAS,OAAO;AACZ,YAAQ,MAAM,MAAM,IAAI,eAAU,GAAG,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,CAAC;AAC3F,YAAQ,KAAK,CAAC;AAAA,EAClB;AACJ,CAAC;","names":[]}
@@ -0,0 +1,113 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/commands/status.ts
4
+ import { Command } from "commander";
5
+ import chalk from "chalk";
6
+ import axios from "axios";
7
+ import inquirer from "inquirer";
8
+ var API_BASE_URL = "https://staging-cicd.microfox.app/api/deployment-status/agent/status/";
9
+ async function getRunId(runId) {
10
+ if (runId) {
11
+ return runId;
12
+ }
13
+ const { promptedRunId } = await inquirer.prompt([
14
+ {
15
+ type: "input",
16
+ name: "promptedRunId",
17
+ message: "Please enter the deployment Run ID:",
18
+ validate: (input) => !!input || "Run ID cannot be empty."
19
+ }
20
+ ]);
21
+ return promptedRunId;
22
+ }
23
+ async function getDeploymentData(runId) {
24
+ var _a;
25
+ try {
26
+ const response = await axios.get(`${API_BASE_URL}${runId}`);
27
+ return response.data;
28
+ } catch (error) {
29
+ if (axios.isAxiosError(error) && ((_a = error.response) == null ? void 0 : _a.status) === 404) {
30
+ console.error(chalk.red(`\u274C Error: Deployment with Run ID "${runId}" not found.`));
31
+ } else {
32
+ console.error(chalk.red("\u274C An error occurred while fetching deployment status:"));
33
+ console.error(error);
34
+ }
35
+ process.exit(1);
36
+ }
37
+ }
38
+ async function statusAction(runId) {
39
+ const finalRunId = await getRunId(runId);
40
+ const data = await getDeploymentData(finalRunId);
41
+ const deployment = data.data.deployment;
42
+ console.log(chalk.cyan.bold("\u{1F680} Deployment Status"));
43
+ console.log(chalk.gray("----------------------------------------"));
44
+ console.log(`${chalk.bold("Run ID:")} ${deployment.sha}`);
45
+ console.log(`${chalk.bold("Status:")} ${chalk.green(deployment.status)}`);
46
+ console.log(`${chalk.bold("Description:")} ${deployment.statusDescription}`);
47
+ console.log(`${chalk.bold("Stage:")} ${deployment.stage}`);
48
+ console.log(`${chalk.bold("Start Time:")} ${deployment.startTime ? new Date(deployment.startTime).toLocaleString() : "N/A"}`);
49
+ console.log(`${chalk.bold("End Time:")} ${deployment.endTime ? new Date(deployment.endTime).toLocaleString() : "N/A"}`);
50
+ console.log(`${chalk.bold("Base URL:")} ${deployment.baseUrl ? chalk.underline.blue(deployment.baseUrl) : "N/A"}`);
51
+ console.log(chalk.gray("----------------------------------------"));
52
+ }
53
+ async function logsAction(runId) {
54
+ const finalRunId = await getRunId(runId);
55
+ const data = await getDeploymentData(finalRunId);
56
+ const logs = data.data.deploymentLogs;
57
+ console.log(chalk.cyan.bold("\u{1F4DC} Deployment Logs"));
58
+ console.log(chalk.gray("----------------------------------------"));
59
+ console.log(logs);
60
+ console.log(chalk.gray("----------------------------------------"));
61
+ }
62
+ async function metricsAction(runId) {
63
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _A, _B, _C, _D;
64
+ const finalRunId = await getRunId(runId);
65
+ const data = await getDeploymentData(finalRunId);
66
+ const metrics = data.data.deployment.metrics;
67
+ console.log(chalk.cyan.bold("\u{1F4CA} Deployment Metrics"));
68
+ console.log(chalk.gray("----------------------------------------"));
69
+ console.log(chalk.bold.underline("System"));
70
+ console.log(` Platform: ${metrics.system.platform}`);
71
+ console.log(` Architecture: ${metrics.system.arch}`);
72
+ console.log(` Node Version: ${metrics.system.nodeVersion}`);
73
+ console.log(chalk.bold.underline("\nTiming (ms)"));
74
+ for (const [step, duration] of Object.entries(((_a = metrics == null ? void 0 : metrics.timing) == null ? void 0 : _a.stepDurations) || {})) {
75
+ console.log(` ${step}:`.padEnd(15) + `${duration ? `${duration}ms` : "N/A"}`);
76
+ }
77
+ console.log(` Total Duration:`.padEnd(15) + `${((_b = metrics == null ? void 0 : metrics.timing) == null ? void 0 : _b.totalDuration) ? `${metrics.timing.totalDuration}ms` : "N/A"}`);
78
+ console.log(chalk.bold.underline("\nResources"));
79
+ console.log(chalk.bold(" CPU:"));
80
+ console.log(` Peak: ${((_d = (_c = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _c.cpu) == null ? void 0 : _d.peak) ? `${(_f = (_e = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _e.cpu) == null ? void 0 : _f.peak}${(_h = (_g = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _g.cpu) == null ? void 0 : _h.usageUnits}` : "N/A"}`);
81
+ console.log(` Average: ${((_j = (_i = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _i.cpu) == null ? void 0 : _j.average) ? `${(_l = (_k = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _k.cpu) == null ? void 0 : _l.average}${(_n = (_m = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _m.cpu) == null ? void 0 : _n.usageUnits}` : "N/A"}`);
82
+ console.log(chalk.bold(" Memory:"));
83
+ console.log(` Peak: ${((_p = (_o = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _o.memory) == null ? void 0 : _p.peak) ? `${(_r = (_q = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _q.memory) == null ? void 0 : _r.peak.toFixed(2)}${(_t = (_s = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _s.memory) == null ? void 0 : _t.usageUnits}` : "N/A"}`);
84
+ console.log(` Average: ${((_v = (_u = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _u.memory) == null ? void 0 : _v.average) ? `${(_x = (_w = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _w.memory) == null ? void 0 : _x.average.toFixed(2)}${(_z = (_y = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _y.memory) == null ? void 0 : _z.usageUnits}` : "N/A"}`);
85
+ console.log(chalk.bold(" Disk:"));
86
+ console.log(` Final Size: ${((_B = (_A = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _A.diskSize) == null ? void 0 : _B.final) ? `${(((_D = (_C = metrics == null ? void 0 : metrics.resources) == null ? void 0 : _C.diskSize) == null ? void 0 : _D.final) / (1024 * 1024)).toFixed(2)} MB` : "N/A"}`);
87
+ console.log(chalk.gray("----------------------------------------"));
88
+ }
89
+ var statusCommand = new Command("status").description("Check the deployment status of your agent").argument("[runId]", "The deployment Run ID").action(async (runId) => {
90
+ try {
91
+ await statusAction(runId);
92
+ } catch (error) {
93
+ }
94
+ });
95
+ var logsCommand = new Command("logs").description("View the deployment logs for your agent").argument("[runId]", "The deployment Run ID").action(async (runId) => {
96
+ try {
97
+ await logsAction(runId);
98
+ } catch (error) {
99
+ }
100
+ });
101
+ var metricsCommand = new Command("metrics").description("View the deployment metrics for your agent").argument("[runId]", "The deployment Run ID").action(async (runId) => {
102
+ try {
103
+ await metricsAction(runId);
104
+ } catch (error) {
105
+ }
106
+ });
107
+
108
+ export {
109
+ statusCommand,
110
+ logsCommand,
111
+ metricsCommand
112
+ };
113
+ //# sourceMappingURL=chunk-XGFSFWK3.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/commands/status.ts"],"sourcesContent":["import { Command } from 'commander';\nimport chalk from 'chalk';\nimport axios from 'axios';\nimport inquirer from 'inquirer';\n\nconst API_BASE_URL = 'https://staging-cicd.microfox.app/api/deployment-status/agent/status/';\n\nasync function getRunId(runId?: string): Promise<string> {\n if (runId) {\n return runId;\n }\n const { promptedRunId } = await inquirer.prompt([\n {\n type: 'input',\n name: 'promptedRunId',\n message: 'Please enter the deployment Run ID:',\n validate: (input) => !!input || 'Run ID cannot be empty.',\n },\n ]);\n return promptedRunId;\n }\n \n\nasync function getDeploymentData(runId: string) {\n try {\n const response = await axios.get(`${API_BASE_URL}${runId}`);\n return response.data;\n } catch (error) {\n if (axios.isAxiosError(error) && error.response?.status === 404) {\n console.error(chalk.red(`❌ Error: Deployment with Run ID \"${runId}\" not found.`));\n } else {\n console.error(chalk.red('❌ An error occurred while fetching deployment status:'));\n console.error(error);\n }\n process.exit(1);\n }\n}\n\nasync function statusAction(runId?: string): Promise<void> {\n const finalRunId = await getRunId(runId);\n const data = await getDeploymentData(finalRunId);\n const deployment = data.data.deployment;\n\n console.log(chalk.cyan.bold('🚀 Deployment Status'));\n console.log(chalk.gray('----------------------------------------'));\n console.log(`${chalk.bold('Run ID:')} ${deployment.sha}`);\n console.log(`${chalk.bold('Status:')} ${chalk.green(deployment.status)}`);\n console.log(`${chalk.bold('Description:')} ${deployment.statusDescription}`);\n console.log(`${chalk.bold('Stage:')} ${deployment.stage}`);\n console.log(`${chalk.bold('Start Time:')} ${deployment.startTime ? new Date(deployment.startTime).toLocaleString() : 'N/A'}`);\n console.log(`${chalk.bold('End Time:')} ${deployment.endTime ? new Date(deployment.endTime).toLocaleString() : 'N/A'}`);\n console.log(`${chalk.bold('Base URL:')} ${deployment.baseUrl ? chalk.underline.blue(deployment.baseUrl) : 'N/A'}`);\n console.log(chalk.gray('----------------------------------------'));\n}\n\nasync function logsAction(runId?: string): Promise<void> {\n const finalRunId = await getRunId(runId);\n const data = await getDeploymentData(finalRunId);\n const logs = data.data.deploymentLogs;\n\n console.log(chalk.cyan.bold('📜 Deployment Logs'));\n console.log(chalk.gray('----------------------------------------'));\n console.log(logs);\n console.log(chalk.gray('----------------------------------------'));\n}\n\nasync function metricsAction(runId?: string): Promise<void> {\n const finalRunId = await getRunId(runId);\n const data = await getDeploymentData(finalRunId);\n const metrics = data.data.deployment.metrics;\n\n console.log(chalk.cyan.bold('📊 Deployment Metrics'));\n console.log(chalk.gray('----------------------------------------'));\n\n console.log(chalk.bold.underline('System'));\n console.log(` Platform: ${metrics.system.platform}`);\n console.log(` Architecture: ${metrics.system.arch}`);\n console.log(` Node Version: ${metrics.system.nodeVersion}`);\n\n console.log(chalk.bold.underline('\\nTiming (ms)'));\n for (const [step, duration] of Object.entries(metrics?.timing?.stepDurations || {})) {\n console.log(` ${step}:`.padEnd(15) + `${duration ? `${duration}ms` : 'N/A'}`);\n }\n console.log(` Total Duration:`.padEnd(15) + `${metrics?.timing?.totalDuration ? `${metrics.timing.totalDuration}ms` : 'N/A'}`);\n\n console.log(chalk.bold.underline('\\nResources'));\n console.log(chalk.bold(' CPU:'));\n console.log(` Peak: ${metrics?.resources?.cpu?.peak ? `${metrics?.resources?.cpu?.peak}${metrics?.resources?.cpu?.usageUnits}` : 'N/A'}`);\n console.log(` Average: ${metrics?.resources?.cpu?.average ? `${metrics?.resources?.cpu?.average}${metrics?.resources?.cpu?.usageUnits}` : 'N/A'}`);\n console.log(chalk.bold(' Memory:'));\n console.log(` Peak: ${metrics?.resources?.memory?.peak ? `${metrics?.resources?.memory?.peak.toFixed(2)}${metrics?.resources?.memory?.usageUnits}` : 'N/A'}`);\n console.log(` Average: ${metrics?.resources?.memory?.average ? `${metrics?.resources?.memory?.average.toFixed(2)}${metrics?.resources?.memory?.usageUnits}` : 'N/A'}`);\n console.log(chalk.bold(' Disk:'));\n console.log(` Final Size: ${metrics?.resources?.diskSize?.final ? `${(metrics?.resources?.diskSize?.final / (1024 * 1024)).toFixed(2)} MB` : 'N/A'}`);\n\n console.log(chalk.gray('----------------------------------------'));\n}\n\nexport const statusCommand = new Command('status')\n .description('Check the deployment status of your agent')\n .argument('[runId]', 'The deployment Run ID')\n .action(async (runId) => {\n try {\n await statusAction(runId);\n } catch (error) {\n // Error is already handled in getDeploymentData, just exit\n }\n });\n\nexport const logsCommand = new Command('logs')\n .description('View the deployment logs for your agent')\n .argument('[runId]', 'The deployment Run ID')\n .action(async (runId) => {\n try {\n await logsAction(runId);\n } catch (error) {\n // Error is already handled in getDeploymentData, just exit\n }\n });\n\nexport const metricsCommand = new Command('metrics')\n .description('View the deployment metrics for your agent')\n .argument('[runId]', 'The deployment Run ID')\n .action(async (runId) => {\n try {\n await metricsAction(runId);\n } catch (error) {\n // Error is already handled in getDeploymentData, just exit\n }\n }); "],"mappings":";;;AAAA,SAAS,eAAe;AACxB,OAAO,WAAW;AAClB,OAAO,WAAW;AAClB,OAAO,cAAc;AAErB,IAAM,eAAe;AAErB,eAAe,SAAS,OAAiC;AACrD,MAAI,OAAO;AACT,WAAO;AAAA,EACT;AACA,QAAM,EAAE,cAAc,IAAI,MAAM,SAAS,OAAO;AAAA,IAC9C;AAAA,MACE,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU,CAAC,UAAU,CAAC,CAAC,SAAS;AAAA,IAClC;AAAA,EACF,CAAC;AACD,SAAO;AACT;AAGF,eAAe,kBAAkB,OAAe;AAvBhD;AAwBE,MAAI;AACF,UAAM,WAAW,MAAM,MAAM,IAAI,GAAG,YAAY,GAAG,KAAK,EAAE;AAC1D,WAAO,SAAS;AAAA,EAClB,SAAS,OAAO;AACd,QAAI,MAAM,aAAa,KAAK,OAAK,WAAM,aAAN,mBAAgB,YAAW,KAAK;AAC/D,cAAQ,MAAM,MAAM,IAAI,yCAAoC,KAAK,cAAc,CAAC;AAAA,IAClF,OAAO;AACL,cAAQ,MAAM,MAAM,IAAI,4DAAuD,CAAC;AAChF,cAAQ,MAAM,KAAK;AAAA,IACrB;AACA,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;AAEA,eAAe,aAAa,OAA+B;AACvD,QAAM,aAAa,MAAM,SAAS,KAAK;AACvC,QAAM,OAAO,MAAM,kBAAkB,UAAU;AAC/C,QAAM,aAAa,KAAK,KAAK;AAE7B,UAAQ,IAAI,MAAM,KAAK,KAAK,6BAAsB,CAAC;AACnD,UAAQ,IAAI,MAAM,KAAK,0CAA0C,CAAC;AAClE,UAAQ,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,SAAS,WAAW,GAAG,EAAE;AAC7D,UAAQ,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,SAAS,MAAM,MAAM,WAAW,MAAM,CAAC,EAAE;AAC7E,UAAQ,IAAI,GAAG,MAAM,KAAK,cAAc,CAAC,IAAI,WAAW,iBAAiB,EAAE;AAC3E,UAAQ,IAAI,GAAG,MAAM,KAAK,QAAQ,CAAC,UAAU,WAAW,KAAK,EAAE;AAC/D,UAAQ,IAAI,GAAG,MAAM,KAAK,aAAa,CAAC,KAAK,WAAW,YAAY,IAAI,KAAK,WAAW,SAAS,EAAE,eAAe,IAAI,KAAK,EAAE;AAC7H,UAAQ,IAAI,GAAG,MAAM,KAAK,WAAW,CAAC,OAAO,WAAW,UAAU,IAAI,KAAK,WAAW,OAAO,EAAE,eAAe,IAAI,KAAK,EAAE;AACzH,UAAQ,IAAI,GAAG,MAAM,KAAK,WAAW,CAAC,OAAO,WAAW,UAAU,MAAM,UAAU,KAAK,WAAW,OAAO,IAAI,KAAK,EAAE;AACpH,UAAQ,IAAI,MAAM,KAAK,0CAA0C,CAAC;AACtE;AAEA,eAAe,WAAW,OAA+B;AACrD,QAAM,aAAa,MAAM,SAAS,KAAK;AACvC,QAAM,OAAO,MAAM,kBAAkB,UAAU;AAC/C,QAAM,OAAO,KAAK,KAAK;AAEvB,UAAQ,IAAI,MAAM,KAAK,KAAK,2BAAoB,CAAC;AACjD,UAAQ,IAAI,MAAM,KAAK,0CAA0C,CAAC;AAClE,UAAQ,IAAI,IAAI;AAChB,UAAQ,IAAI,MAAM,KAAK,0CAA0C,CAAC;AACtE;AAEA,eAAe,cAAc,OAA+B;AAlE5D;AAmEI,QAAM,aAAa,MAAM,SAAS,KAAK;AACvC,QAAM,OAAO,MAAM,kBAAkB,UAAU;AAC/C,QAAM,UAAU,KAAK,KAAK,WAAW;AAErC,UAAQ,IAAI,MAAM,KAAK,KAAK,8BAAuB,CAAC;AACpD,UAAQ,IAAI,MAAM,KAAK,0CAA0C,CAAC;AAElE,UAAQ,IAAI,MAAM,KAAK,UAAU,QAAQ,CAAC;AAC1C,UAAQ,IAAI,kBAAkB,QAAQ,OAAO,QAAQ,EAAE;AACvD,UAAQ,IAAI,oBAAoB,QAAQ,OAAO,IAAI,EAAE;AACrD,UAAQ,IAAI,oBAAoB,QAAQ,OAAO,WAAW,EAAE;AAE5D,UAAQ,IAAI,MAAM,KAAK,UAAU,eAAe,CAAC;AACjD,aAAW,CAAC,MAAM,QAAQ,KAAK,OAAO,UAAQ,wCAAS,WAAT,mBAAiB,kBAAiB,CAAC,CAAC,GAAG;AACjF,YAAQ,IAAI,KAAK,IAAI,IAAI,OAAO,EAAE,IAAI,GAAG,WAAW,GAAG,QAAQ,OAAO,KAAK,EAAE;AAAA,EACjF;AACA,UAAQ,IAAI,oBAAoB,OAAO,EAAE,IAAI,KAAG,wCAAS,WAAT,mBAAiB,iBAAgB,GAAG,QAAQ,OAAO,aAAa,OAAO,KAAK,EAAE;AAE9H,UAAQ,IAAI,MAAM,KAAK,UAAU,aAAa,CAAC;AAC/C,UAAQ,IAAI,MAAM,KAAK,QAAQ,CAAC;AAChC,UAAQ,IAAI,sBAAoB,8CAAS,cAAT,mBAAoB,QAApB,mBAAyB,QAAO,IAAG,8CAAS,cAAT,mBAAoB,QAApB,mBAAyB,IAAI,IAAG,8CAAS,cAAT,mBAAoB,QAApB,mBAAyB,UAAU,KAAK,KAAK,EAAE;AAClJ,UAAQ,IAAI,sBAAoB,8CAAS,cAAT,mBAAoB,QAApB,mBAAyB,WAAU,IAAG,8CAAS,cAAT,mBAAoB,QAApB,mBAAyB,OAAO,IAAG,8CAAS,cAAT,mBAAoB,QAApB,mBAAyB,UAAU,KAAK,KAAK,EAAE;AACxJ,UAAQ,IAAI,MAAM,KAAK,WAAW,CAAC;AACnC,UAAQ,IAAI,sBAAoB,8CAAS,cAAT,mBAAoB,WAApB,mBAA4B,QAAO,IAAG,8CAAS,cAAT,mBAAoB,WAApB,mBAA4B,KAAK,QAAQ,EAAE,IAAG,8CAAS,cAAT,mBAAoB,WAApB,mBAA4B,UAAU,KAAK,KAAK,EAAE;AACtK,UAAQ,IAAI,sBAAoB,8CAAS,cAAT,mBAAoB,WAApB,mBAA4B,WAAU,IAAG,8CAAS,cAAT,mBAAoB,WAApB,mBAA4B,QAAQ,QAAQ,EAAE,IAAG,8CAAS,cAAT,mBAAoB,WAApB,mBAA4B,UAAU,KAAK,KAAK,EAAE;AAC5K,UAAQ,IAAI,MAAM,KAAK,SAAS,CAAC;AACjC,UAAQ,IAAI,sBAAoB,8CAAS,cAAT,mBAAoB,aAApB,mBAA8B,SAAQ,MAAI,8CAAS,cAAT,mBAAoB,aAApB,mBAA8B,UAAS,OAAO,OAAO,QAAQ,CAAC,CAAC,QAAQ,KAAK,EAAE;AAExJ,UAAQ,IAAI,MAAM,KAAK,0CAA0C,CAAC;AACtE;AAEO,IAAM,gBAAgB,IAAI,QAAQ,QAAQ,EAC5C,YAAY,2CAA2C,EACvD,SAAS,WAAW,uBAAuB,EAC3C,OAAO,OAAO,UAAU;AACrB,MAAI;AACA,UAAM,aAAa,KAAK;AAAA,EAC5B,SAAS,OAAO;AAAA,EAEhB;AACJ,CAAC;AAEE,IAAM,cAAc,IAAI,QAAQ,MAAM,EACxC,YAAY,yCAAyC,EACrD,SAAS,WAAW,uBAAuB,EAC3C,OAAO,OAAO,UAAU;AACrB,MAAI;AACA,UAAM,WAAW,KAAK;AAAA,EAC1B,SAAS,OAAO;AAAA,EAEhB;AACJ,CAAC;AAEE,IAAM,iBAAiB,IAAI,QAAQ,SAAS,EAC9C,YAAY,4CAA4C,EACxD,SAAS,WAAW,uBAAuB,EAC3C,OAAO,OAAO,UAAU;AACrB,MAAI;AACA,UAAM,cAAc,KAAK;AAAA,EAC7B,SAAS,OAAO;AAAA,EAEhB;AACJ,CAAC;","names":[]}
package/dist/cli.d.mts ADDED
@@ -0,0 +1,2 @@
1
+
2
+ export { }
package/dist/cli.d.ts ADDED
@@ -0,0 +1,2 @@
1
+
2
+ export { }