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.
- package/CHANGELOG.md +72 -0
- package/README.md +114 -0
- package/dist/agent-template.txt +486 -0
- package/dist/background-agent/.gitignore.txt +22 -0
- package/dist/background-agent/eslint.config.js.txt +48 -0
- package/dist/background-agent/microfox.json.txt +4 -0
- package/dist/background-agent/openapi.md.txt +1 -0
- package/dist/background-agent/package.json.txt +47 -0
- package/dist/background-agent/serverless.yml.txt +123 -0
- package/dist/background-agent/src/functions/cron-paginate.ts.txt +135 -0
- package/dist/background-agent/src/functions/cron-populate.ts.txt +33 -0
- package/dist/background-agent/src/functions/route-trigger-index.ts.txt +157 -0
- package/dist/background-agent/src/functions/route-trigger-populate.ts.txt +0 -0
- package/dist/background-agent/src/functions/sqs-index.ts.txt +147 -0
- package/dist/background-agent/src/helpers/ragRedis.ts.txt +78 -0
- package/dist/background-agent/src/index.ts.txt +69 -0
- package/dist/background-agent/tsconfig.json.txt +33 -0
- package/dist/chunk-4HNHBA2H.mjs +104 -0
- package/dist/chunk-4HNHBA2H.mjs.map +1 -0
- package/dist/chunk-ARAHSYJI.mjs +263 -0
- package/dist/chunk-ARAHSYJI.mjs.map +1 -0
- package/dist/chunk-JGAX4PD6.mjs +290 -0
- package/dist/chunk-JGAX4PD6.mjs.map +1 -0
- package/dist/chunk-KPJJOO76.mjs +12 -0
- package/dist/chunk-KPJJOO76.mjs.map +1 -0
- package/dist/chunk-TZQZMKHP.mjs +11 -0
- package/dist/chunk-TZQZMKHP.mjs.map +1 -0
- package/dist/chunk-UFRGJMF4.mjs +154 -0
- package/dist/chunk-UFRGJMF4.mjs.map +1 -0
- package/dist/chunk-UHWJTQKW.mjs +139 -0
- package/dist/chunk-UHWJTQKW.mjs.map +1 -0
- package/dist/chunk-UYROVW53.mjs +89 -0
- package/dist/chunk-UYROVW53.mjs.map +1 -0
- package/dist/chunk-XGFSFWK3.mjs +113 -0
- package/dist/chunk-XGFSFWK3.mjs.map +1 -0
- package/dist/cli.d.mts +2 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +1154 -0
- package/dist/cli.js.map +1 -0
- package/dist/cli.mjs +52 -0
- package/dist/cli.mjs.map +1 -0
- package/dist/commands/add.d.mts +5 -0
- package/dist/commands/add.d.ts +5 -0
- package/dist/commands/add.js +126 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/add.mjs +10 -0
- package/dist/commands/add.mjs.map +1 -0
- package/dist/commands/code.d.mts +5 -0
- package/dist/commands/code.d.ts +5 -0
- package/dist/commands/code.js +187 -0
- package/dist/commands/code.js.map +1 -0
- package/dist/commands/code.mjs +9 -0
- package/dist/commands/code.mjs.map +1 -0
- package/dist/commands/install.d.mts +5 -0
- package/dist/commands/install.d.ts +5 -0
- package/dist/commands/install.js +296 -0
- package/dist/commands/install.js.map +1 -0
- package/dist/commands/install.mjs +9 -0
- package/dist/commands/install.mjs.map +1 -0
- package/dist/commands/kickstart.d.mts +5 -0
- package/dist/commands/kickstart.d.ts +5 -0
- package/dist/commands/kickstart.js +322 -0
- package/dist/commands/kickstart.js.map +1 -0
- package/dist/commands/kickstart.mjs +10 -0
- package/dist/commands/kickstart.mjs.map +1 -0
- package/dist/commands/push.d.mts +5 -0
- package/dist/commands/push.d.ts +5 -0
- package/dist/commands/push.js +137 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/push.mjs +9 -0
- package/dist/commands/push.mjs.map +1 -0
- package/dist/commands/status.d.mts +7 -0
- package/dist/commands/status.d.ts +7 -0
- package/dist/commands/status.js +148 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/status.mjs +13 -0
- package/dist/commands/status.mjs.map +1 -0
- package/dist/commands/update.d.mts +5 -0
- package/dist/commands/update.d.ts +5 -0
- package/dist/commands/update.js +172 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/update.mjs +9 -0
- package/dist/commands/update.mjs.map +1 -0
- package/dist/index.d.mts +20 -0
- package/dist/index.d.ts +20 -0
- package/dist/index.js +406 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +14 -0
- package/dist/index.mjs.map +1 -0
- package/dist/package-template.txt +494 -0
- package/package.json +68 -0
|
@@ -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","fs","import_path","readline","chalk","path","axios"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,296 @@
|
|
|
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 __export = (target, all) => {
|
|
10
|
+
for (var name in all)
|
|
11
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
12
|
+
};
|
|
13
|
+
var __copyProps = (to, from, except, desc) => {
|
|
14
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
15
|
+
for (let key of __getOwnPropNames(from))
|
|
16
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
17
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
18
|
+
}
|
|
19
|
+
return to;
|
|
20
|
+
};
|
|
21
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
22
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
23
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
24
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
25
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
26
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
27
|
+
mod
|
|
28
|
+
));
|
|
29
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
30
|
+
|
|
31
|
+
// src/commands/install.ts
|
|
32
|
+
var install_exports = {};
|
|
33
|
+
__export(install_exports, {
|
|
34
|
+
installCommand: () => installCommand
|
|
35
|
+
});
|
|
36
|
+
module.exports = __toCommonJS(install_exports);
|
|
37
|
+
var import_commander = require("commander");
|
|
38
|
+
|
|
39
|
+
// src/utils/experimental-installer.ts
|
|
40
|
+
var import_fs = __toESM(require("fs"));
|
|
41
|
+
var import_path = __toESM(require("path"));
|
|
42
|
+
var import_child_process = require("child_process");
|
|
43
|
+
var import_chalk = __toESM(require("chalk"));
|
|
44
|
+
var CWD_PACKAGE_JSON = import_path.default.join(process.cwd(), "package.json");
|
|
45
|
+
var CWD_NODE_MODULES = import_path.default.join(process.cwd(), "node_modules");
|
|
46
|
+
var MICROFOX_NODE_MODULES;
|
|
47
|
+
function log(message, isError = false, isWarning = false) {
|
|
48
|
+
const timestamp = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
49
|
+
let prefix;
|
|
50
|
+
if (isError) {
|
|
51
|
+
prefix = import_chalk.default.red(`\u274C [install-microfox ${timestamp}]`);
|
|
52
|
+
} else if (isWarning) {
|
|
53
|
+
prefix = import_chalk.default.yellow(`\u26A0\uFE0F [install-microfox ${timestamp}]`);
|
|
54
|
+
} else {
|
|
55
|
+
prefix = import_chalk.default.blue(`\u2139\uFE0F [install-microfox ${timestamp}]`);
|
|
56
|
+
}
|
|
57
|
+
console.log(`${prefix} ${message}`);
|
|
58
|
+
}
|
|
59
|
+
function logSuccess(message) {
|
|
60
|
+
const timestamp = (/* @__PURE__ */ new Date()).toLocaleTimeString();
|
|
61
|
+
console.log(import_chalk.default.green(`\u2705 [install-microfox ${timestamp}] ${message}`));
|
|
62
|
+
}
|
|
63
|
+
function logSection(title) {
|
|
64
|
+
console.log("\n" + "=".repeat(60));
|
|
65
|
+
console.log(` ${title}`);
|
|
66
|
+
console.log("=".repeat(60));
|
|
67
|
+
}
|
|
68
|
+
function findSourceDir(targetDirName) {
|
|
69
|
+
let currentDir = process.cwd();
|
|
70
|
+
for (let i = 0; i < 10; i++) {
|
|
71
|
+
const gitDir = import_path.default.join(currentDir, ".git");
|
|
72
|
+
if (import_fs.default.existsSync(gitDir)) {
|
|
73
|
+
const parentDir = import_path.default.dirname(currentDir);
|
|
74
|
+
const microfoxDir = import_path.default.join(parentDir, targetDirName);
|
|
75
|
+
if (import_fs.default.existsSync(microfoxDir)) {
|
|
76
|
+
return microfoxDir;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const parent = import_path.default.dirname(currentDir);
|
|
80
|
+
if (parent === currentDir) {
|
|
81
|
+
break;
|
|
82
|
+
}
|
|
83
|
+
currentDir = parent;
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function copyDirectory(src, dest) {
|
|
88
|
+
try {
|
|
89
|
+
const normalizedSrc = import_path.default.resolve(src);
|
|
90
|
+
const normalizedDest = import_path.default.resolve(dest);
|
|
91
|
+
log(`Copying from: ${normalizedSrc}`);
|
|
92
|
+
log(`Copying to: ${normalizedDest}`);
|
|
93
|
+
if (!import_fs.default.existsSync(normalizedDest)) {
|
|
94
|
+
import_fs.default.mkdirSync(normalizedDest, { recursive: true });
|
|
95
|
+
}
|
|
96
|
+
const isWindows = process.platform === "win32";
|
|
97
|
+
if (isWindows) {
|
|
98
|
+
try {
|
|
99
|
+
(0, import_child_process.execSync)(`robocopy "${normalizedSrc}" "${normalizedDest}" /E /NFL /NDL /NJH /NJS /nc /ns /np`, { stdio: "pipe" });
|
|
100
|
+
} catch (error) {
|
|
101
|
+
if (error.status !== 1 && error.status !== 0) {
|
|
102
|
+
throw error;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
} else {
|
|
106
|
+
(0, import_child_process.execSync)(`cp -r "${normalizedSrc}/." "${normalizedDest}"`, { stdio: "pipe" });
|
|
107
|
+
}
|
|
108
|
+
if (import_fs.default.existsSync(normalizedDest) && import_fs.default.readdirSync(normalizedDest).length > 0) {
|
|
109
|
+
log(`\u2705 Copied ${normalizedSrc} -> ${normalizedDest}`);
|
|
110
|
+
return true;
|
|
111
|
+
} else {
|
|
112
|
+
log(`\u274C Copy verification failed: destination is empty`);
|
|
113
|
+
return false;
|
|
114
|
+
}
|
|
115
|
+
} catch (error) {
|
|
116
|
+
log(`\u274C Failed to copy ${src} -> ${dest}: ${error.message}`);
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function updatePackageJson(packageName) {
|
|
121
|
+
var _a, _b, _c;
|
|
122
|
+
try {
|
|
123
|
+
log(`Updating package.json to add ${packageName} with "*" version...`);
|
|
124
|
+
if (!import_fs.default.existsSync(CWD_PACKAGE_JSON)) {
|
|
125
|
+
log(`Package.json file not found at: ${CWD_PACKAGE_JSON}`, true);
|
|
126
|
+
return false;
|
|
127
|
+
}
|
|
128
|
+
const packageJson = JSON.parse(import_fs.default.readFileSync(CWD_PACKAGE_JSON, "utf8"));
|
|
129
|
+
const existingVersion = ((_a = packageJson.dependencies) == null ? void 0 : _a[packageName]) || ((_b = packageJson.devDependencies) == null ? void 0 : _b[packageName]);
|
|
130
|
+
if (existingVersion && existingVersion !== "*") {
|
|
131
|
+
log(`Package ${packageName} already exists with version: ${existingVersion}`, false, true);
|
|
132
|
+
log(`Updating to "*" for local development...`, false, true);
|
|
133
|
+
}
|
|
134
|
+
if (!packageJson.dependencies) {
|
|
135
|
+
packageJson.dependencies = {};
|
|
136
|
+
}
|
|
137
|
+
packageJson.dependencies[packageName] = "*";
|
|
138
|
+
if ((_c = packageJson.devDependencies) == null ? void 0 : _c[packageName]) {
|
|
139
|
+
delete packageJson.devDependencies[packageName];
|
|
140
|
+
log(`Moved ${packageName} from devDependencies to dependencies`);
|
|
141
|
+
}
|
|
142
|
+
import_fs.default.writeFileSync(CWD_PACKAGE_JSON, JSON.stringify(packageJson, null, 2) + "\n");
|
|
143
|
+
logSuccess(`Added ${packageName}: "*" to package.json`);
|
|
144
|
+
return true;
|
|
145
|
+
} catch (error) {
|
|
146
|
+
if (error.code === "ENOENT") {
|
|
147
|
+
log(`Package.json file not found at: ${CWD_PACKAGE_JSON}`, true);
|
|
148
|
+
} else if (error instanceof SyntaxError) {
|
|
149
|
+
log(`Invalid JSON in package.json: ${error.message}`, true);
|
|
150
|
+
} else if (error.code === "EACCES") {
|
|
151
|
+
log(`Permission denied writing to package.json`, true);
|
|
152
|
+
} else {
|
|
153
|
+
log(`Failed to update package.json: ${error.message}`, true);
|
|
154
|
+
}
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function installSpecificPackage(packageName) {
|
|
159
|
+
logSection(`Installing Specific Package: ${packageName}`);
|
|
160
|
+
if (!packageName || typeof packageName !== "string" || !packageName.startsWith("@microfox/")) {
|
|
161
|
+
log(`Invalid package name format: "${packageName}". Must start with "@microfox/"`, true);
|
|
162
|
+
process.exit(1);
|
|
163
|
+
}
|
|
164
|
+
const packageShortName = packageName.replace("@microfox/", "");
|
|
165
|
+
if (!packageShortName || packageShortName.trim() === "") {
|
|
166
|
+
log(`Invalid package name: "${packageName}"`, true);
|
|
167
|
+
process.exit(1);
|
|
168
|
+
}
|
|
169
|
+
const microfoxDir = import_path.default.join(MICROFOX_NODE_MODULES, "@microfox");
|
|
170
|
+
const srcDir = import_path.default.join(microfoxDir, packageShortName);
|
|
171
|
+
log(`Searching for package: ${packageName}`);
|
|
172
|
+
log(`Source directory: ${srcDir}`);
|
|
173
|
+
if (!import_fs.default.existsSync(microfoxDir)) {
|
|
174
|
+
log(`Microfox packages directory not found at: ${microfoxDir}`, true);
|
|
175
|
+
process.exit(1);
|
|
176
|
+
}
|
|
177
|
+
if (!import_fs.default.existsSync(srcDir)) {
|
|
178
|
+
log(`Package "${packageName}" not found in source packages`, true);
|
|
179
|
+
log(`Searched in: ${srcDir}`, true);
|
|
180
|
+
process.exit(1);
|
|
181
|
+
}
|
|
182
|
+
if (!updatePackageJson(packageName)) {
|
|
183
|
+
process.exit(1);
|
|
184
|
+
}
|
|
185
|
+
const microfoxScopeDir = import_path.default.join(CWD_NODE_MODULES, "@microfox");
|
|
186
|
+
if (!import_fs.default.existsSync(microfoxScopeDir)) {
|
|
187
|
+
import_fs.default.mkdirSync(microfoxScopeDir, { recursive: true });
|
|
188
|
+
}
|
|
189
|
+
const destDir = import_path.default.join(CWD_NODE_MODULES, "@microfox", packageShortName);
|
|
190
|
+
log(`Copying package files...`);
|
|
191
|
+
if (copyDirectory(srcDir, destDir)) {
|
|
192
|
+
logSection(`\u2705 SUCCESS`);
|
|
193
|
+
logSuccess(`Package ${packageName} installed for local development!`);
|
|
194
|
+
log(`Package location: ${destDir}`);
|
|
195
|
+
} else {
|
|
196
|
+
log(`Failed to copy package files`, true);
|
|
197
|
+
process.exit(1);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function installAllPackages() {
|
|
201
|
+
log('Installing all @microfox/* packages with "*" version from package.json...');
|
|
202
|
+
const packageJson = JSON.parse(import_fs.default.readFileSync(CWD_PACKAGE_JSON, "utf8"));
|
|
203
|
+
const dependencies = { ...packageJson.dependencies, ...packageJson.devDependencies };
|
|
204
|
+
const microfoxPackages = Object.entries(dependencies).filter(([name, version]) => name.startsWith("@microfox/") && version === "*").map(([name]) => name);
|
|
205
|
+
if (microfoxPackages.length === 0) {
|
|
206
|
+
log('\u2139\uFE0F No @microfox/* packages with "*" version found in package.json');
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
log(`Found ${microfoxPackages.length} @microfox/* packages to install:`);
|
|
210
|
+
microfoxPackages.forEach((pkg) => log(` - ${pkg}`));
|
|
211
|
+
const microfoxScopeDir = import_path.default.join(CWD_NODE_MODULES, "@microfox");
|
|
212
|
+
if (!import_fs.default.existsSync(microfoxScopeDir)) {
|
|
213
|
+
import_fs.default.mkdirSync(microfoxScopeDir, { recursive: true });
|
|
214
|
+
}
|
|
215
|
+
let successCount = 0;
|
|
216
|
+
let failureCount = 0;
|
|
217
|
+
for (const packageName of microfoxPackages) {
|
|
218
|
+
const packageShortName = packageName.replace("@microfox/", "");
|
|
219
|
+
const srcDir = import_path.default.join(MICROFOX_NODE_MODULES, "@microfox", packageShortName);
|
|
220
|
+
const destDir = import_path.default.join(CWD_NODE_MODULES, "@microfox", packageShortName);
|
|
221
|
+
if (!import_fs.default.existsSync(srcDir)) {
|
|
222
|
+
log(`\u26A0\uFE0F Package ${packageName} not found in source node_modules, skipping...`);
|
|
223
|
+
failureCount++;
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
if (copyDirectory(srcDir, destDir)) {
|
|
227
|
+
successCount++;
|
|
228
|
+
} else {
|
|
229
|
+
failureCount++;
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
log(`
|
|
233
|
+
\u{1F4CA} Installation Summary:`);
|
|
234
|
+
log(` \u2705 Successfully installed: ${successCount} packages`);
|
|
235
|
+
if (failureCount > 0) {
|
|
236
|
+
log(` \u274C Failed to install: ${failureCount} packages`);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
async function runExperimentalInstall(packages, targetDirName) {
|
|
240
|
+
try {
|
|
241
|
+
logSection("Microfox Local Package Installer (Experimental)");
|
|
242
|
+
log(`Started at: ${(/* @__PURE__ */ new Date()).toLocaleString()}`);
|
|
243
|
+
log(`Working directory: ${process.cwd()}`);
|
|
244
|
+
const sourceDir = findSourceDir(targetDirName);
|
|
245
|
+
if (!sourceDir) {
|
|
246
|
+
log(`Could not find source directory '${targetDirName}' in any parent of a .git directory.`, true);
|
|
247
|
+
log(`Searched up to 10 levels from ${process.cwd()}`, true);
|
|
248
|
+
process.exit(1);
|
|
249
|
+
}
|
|
250
|
+
log(`Found source directory at: ${sourceDir}`);
|
|
251
|
+
MICROFOX_NODE_MODULES = import_path.default.join(sourceDir, "node_modules");
|
|
252
|
+
if (!import_fs.default.existsSync(MICROFOX_NODE_MODULES)) {
|
|
253
|
+
log(`Source node_modules directory not found at: ${MICROFOX_NODE_MODULES}`, true);
|
|
254
|
+
log(`Please run 'npm install' or 'pnpm install' in ${sourceDir}`, true);
|
|
255
|
+
process.exit(1);
|
|
256
|
+
}
|
|
257
|
+
if (!import_fs.default.existsSync(CWD_PACKAGE_JSON)) {
|
|
258
|
+
log(`package.json not found in current directory: ${CWD_PACKAGE_JSON}`, true);
|
|
259
|
+
process.exit(1);
|
|
260
|
+
}
|
|
261
|
+
if (packages.length > 0) {
|
|
262
|
+
log(`Installing ${packages.length} specific package(s)...`);
|
|
263
|
+
for (let i = 0; i < packages.length; i++) {
|
|
264
|
+
const packageName = packages[i];
|
|
265
|
+
log(`
|
|
266
|
+
[${i + 1}/${packages.length}] Processing: ${packageName}`);
|
|
267
|
+
installSpecificPackage(packageName);
|
|
268
|
+
}
|
|
269
|
+
logSection("\u{1F389} All Specified Packages Installed Successfully");
|
|
270
|
+
} else {
|
|
271
|
+
installAllPackages();
|
|
272
|
+
}
|
|
273
|
+
} catch (error) {
|
|
274
|
+
log("", true);
|
|
275
|
+
log(`Unexpected error occurred: ${error.message}`, true);
|
|
276
|
+
if (error.stack) {
|
|
277
|
+
log(`Stack trace: ${error.stack}`, true);
|
|
278
|
+
}
|
|
279
|
+
process.exit(1);
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// src/commands/install.ts
|
|
284
|
+
var installCommand = new import_commander.Command("install").description("Install packages for local development.").argument("[packages...]", "Specific packages to install").option("--experimental", "Enable experimental features").option("--target <name>", "Specify the target source directory name", "Microfox").action(async (packages, options) => {
|
|
285
|
+
if (options.experimental) {
|
|
286
|
+
await runExperimentalInstall(packages, options.target);
|
|
287
|
+
} else {
|
|
288
|
+
console.log("This command is only available with the --experimental flag.");
|
|
289
|
+
process.exit(1);
|
|
290
|
+
}
|
|
291
|
+
});
|
|
292
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
293
|
+
0 && (module.exports = {
|
|
294
|
+
installCommand
|
|
295
|
+
});
|
|
296
|
+
//# sourceMappingURL=install.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/commands/install.ts","../../src/utils/experimental-installer.ts"],"sourcesContent":["import { Command } from 'commander';\nimport { runExperimentalInstall } from '../utils/experimental-installer';\n\nexport const installCommand = new Command('install')\n .description('Install packages for local development.')\n .argument('[packages...]', 'Specific packages to install')\n .option('--experimental', 'Enable experimental features')\n .option('--target <name>', 'Specify the target source directory name', 'Microfox')\n .action(async (packages, options) => {\n if (options.experimental) {\n await runExperimentalInstall(packages, options.target);\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');\nconst CWD_NODE_MODULES = path.join(process.cwd(), 'node_modules');\nlet MICROFOX_NODE_MODULES: string;\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(`❌ [install-microfox ${timestamp}]`);\n } else if (isWarning) {\n prefix = chalk.yellow(`⚠️ [install-microfox ${timestamp}]`);\n } else {\n prefix = chalk.blue(`ℹ️ [install-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(`✅ [install-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 findSourceDir(targetDirName: string): string | null {\n let currentDir = process.cwd();\n for (let i = 0; i < 10; i++) {\n const gitDir = path.join(currentDir, '.git');\n if (fs.existsSync(gitDir)) {\n const parentDir = path.dirname(currentDir);\n const microfoxDir = path.join(parentDir, targetDirName);\n if (fs.existsSync(microfoxDir)) {\n return microfoxDir;\n }\n }\n const parent = path.dirname(currentDir);\n if (parent === currentDir) {\n break;\n }\n currentDir = parent;\n }\n return null;\n}\n\nfunction copyDirectory(src: string, dest: string): boolean {\n try {\n const normalizedSrc = path.resolve(src);\n const normalizedDest = path.resolve(dest);\n\n log(`Copying from: ${normalizedSrc}`);\n log(`Copying to: ${normalizedDest}`);\n\n if (!fs.existsSync(normalizedDest)) {\n fs.mkdirSync(normalizedDest, { recursive: true });\n }\n\n const isWindows = process.platform === 'win32';\n\n if (isWindows) {\n try {\n execSync(`robocopy \"${normalizedSrc}\" \"${normalizedDest}\" /E /NFL /NDL /NJH /NJS /nc /ns /np`, { stdio: 'pipe' });\n } catch (error: any) {\n if (error.status !== 1 && error.status !== 0) {\n throw error;\n }\n }\n } else {\n execSync(`cp -r \"${normalizedSrc}/.\" \"${normalizedDest}\"`, { stdio: 'pipe' });\n }\n\n if (fs.existsSync(normalizedDest) && fs.readdirSync(normalizedDest).length > 0) {\n log(`✅ Copied ${normalizedSrc} -> ${normalizedDest}`);\n return true;\n } else {\n log(`❌ Copy verification failed: destination is empty`);\n return false;\n }\n } catch (error: any) {\n log(`❌ Failed to copy ${src} -> ${dest}: ${error.message}`);\n return false;\n }\n}\n\nfunction updatePackageJson(packageName: string): boolean {\n try {\n log(`Updating package.json to add ${packageName} with \"*\" version...`);\n\n if (!fs.existsSync(CWD_PACKAGE_JSON)) {\n log(`Package.json file not found at: ${CWD_PACKAGE_JSON}`, true);\n return false;\n }\n\n const packageJson = JSON.parse(fs.readFileSync(CWD_PACKAGE_JSON, 'utf8'));\n\n const existingVersion = packageJson.dependencies?.[packageName] || packageJson.devDependencies?.[packageName];\n if (existingVersion && existingVersion !== '*') {\n log(`Package ${packageName} already exists with version: ${existingVersion}`, false, true);\n log(`Updating to \"*\" for local development...`, false, true);\n }\n\n if (!packageJson.dependencies) {\n packageJson.dependencies = {};\n }\n\n packageJson.dependencies[packageName] = '*';\n\n if (packageJson.devDependencies?.[packageName]) {\n delete packageJson.devDependencies[packageName];\n log(`Moved ${packageName} from devDependencies to dependencies`);\n }\n\n fs.writeFileSync(CWD_PACKAGE_JSON, JSON.stringify(packageJson, null, 2) + '\\n');\n\n logSuccess(`Added ${packageName}: \"*\" to package.json`);\n return true;\n } catch (error: any) {\n if (error.code === 'ENOENT') {\n log(`Package.json file not found at: ${CWD_PACKAGE_JSON}`, true);\n } else if (error instanceof SyntaxError) {\n log(`Invalid JSON in package.json: ${error.message}`, true);\n } else if (error.code === 'EACCES') {\n log(`Permission denied writing to package.json`, true);\n } else {\n log(`Failed to update package.json: ${error.message}`, true);\n }\n return false;\n }\n}\n\nfunction installSpecificPackage(packageName: string) {\n logSection(`Installing Specific Package: ${packageName}`);\n\n if (!packageName || typeof packageName !== 'string' || !packageName.startsWith('@microfox/')) {\n log(`Invalid package name format: \"${packageName}\". Must start with \"@microfox/\"`, true);\n process.exit(1);\n }\n\n const packageShortName = packageName.replace('@microfox/', '');\n if (!packageShortName || packageShortName.trim() === '') {\n log(`Invalid package name: \"${packageName}\"`, true);\n process.exit(1);\n }\n\n const microfoxDir = path.join(MICROFOX_NODE_MODULES, '@microfox');\n const srcDir = path.join(microfoxDir, packageShortName);\n\n log(`Searching for package: ${packageName}`);\n log(`Source directory: ${srcDir}`);\n\n if (!fs.existsSync(microfoxDir)) {\n log(`Microfox packages directory not found at: ${microfoxDir}`, true);\n process.exit(1);\n }\n\n if (!fs.existsSync(srcDir)) {\n log(`Package \"${packageName}\" not found in source packages`, true);\n log(`Searched in: ${srcDir}`, true);\n process.exit(1);\n }\n\n if (!updatePackageJson(packageName)) {\n process.exit(1);\n }\n\n const microfoxScopeDir = path.join(CWD_NODE_MODULES, '@microfox');\n if (!fs.existsSync(microfoxScopeDir)) {\n fs.mkdirSync(microfoxScopeDir, { recursive: true });\n }\n\n const destDir = path.join(CWD_NODE_MODULES, '@microfox', packageShortName);\n\n log(`Copying package files...`);\n if (copyDirectory(srcDir, destDir)) {\n logSection(`✅ SUCCESS`);\n logSuccess(`Package ${packageName} installed for local development!`);\n log(`Package location: ${destDir}`);\n } else {\n log(`Failed to copy package files`, true);\n process.exit(1);\n }\n}\n\nfunction installAllPackages() {\n log('Installing all @microfox/* packages with \"*\" version from package.json...');\n\n const packageJson = JSON.parse(fs.readFileSync(CWD_PACKAGE_JSON, 'utf8'));\n const dependencies = { ...packageJson.dependencies, ...packageJson.devDependencies };\n\n const microfoxPackages = Object.entries(dependencies)\n .filter(([name, version]) => name.startsWith('@microfox/') && version === '*')\n .map(([name]) => name);\n\n if (microfoxPackages.length === 0) {\n log('ℹ️ No @microfox/* packages with \"*\" version found in package.json');\n return;\n }\n\n log(`Found ${microfoxPackages.length} @microfox/* packages to install:`);\n microfoxPackages.forEach(pkg => log(` - ${pkg}`));\n\n const microfoxScopeDir = path.join(CWD_NODE_MODULES, '@microfox');\n if (!fs.existsSync(microfoxScopeDir)) {\n fs.mkdirSync(microfoxScopeDir, { recursive: true });\n }\n\n let successCount = 0;\n let failureCount = 0;\n\n for (const packageName of microfoxPackages) {\n const packageShortName = packageName.replace('@microfox/', '');\n const srcDir = path.join(MICROFOX_NODE_MODULES, '@microfox', packageShortName);\n const destDir = path.join(CWD_NODE_MODULES, '@microfox', packageShortName);\n\n if (!fs.existsSync(srcDir)) {\n log(`⚠️ Package ${packageName} not found in source node_modules, skipping...`);\n failureCount++;\n continue;\n }\n\n if (copyDirectory(srcDir, destDir)) {\n successCount++;\n } else {\n failureCount++;\n }\n }\n\n log(`\\n📊 Installation Summary:`);\n log(` ✅ Successfully installed: ${successCount} packages`);\n if (failureCount > 0) {\n log(` ❌ Failed to install: ${failureCount} packages`);\n }\n}\n\nexport async function runExperimentalInstall(packages: string[], targetDirName: string) {\n try {\n logSection('Microfox Local Package Installer (Experimental)');\n log(`Started at: ${new Date().toLocaleString()}`);\n log(`Working directory: ${process.cwd()}`);\n\n const sourceDir = findSourceDir(targetDirName);\n if (!sourceDir) {\n log(`Could not find source directory '${targetDirName}' in any parent of a .git directory.`, true)\n log(`Searched up to 10 levels from ${process.cwd()}`, true)\n process.exit(1);\n }\n log(`Found source directory at: ${sourceDir}`);\n MICROFOX_NODE_MODULES = path.join(sourceDir, 'node_modules');\n\n if (!fs.existsSync(MICROFOX_NODE_MODULES)) {\n log(`Source node_modules directory not found at: ${MICROFOX_NODE_MODULES}`, true);\n log(`Please run 'npm install' or 'pnpm install' in ${sourceDir}`, true);\n process.exit(1);\n }\n\n if (!fs.existsSync(CWD_PACKAGE_JSON)) {\n log(`package.json not found in current directory: ${CWD_PACKAGE_JSON}`, true);\n process.exit(1);\n }\n\n if (packages.length > 0) {\n log(`Installing ${packages.length} specific package(s)...`);\n for (let i = 0; i < packages.length; i++) {\n const packageName = packages[i];\n log(`\\n[${i + 1}/${packages.length}] Processing: ${packageName}`);\n installSpecificPackage(packageName);\n }\n logSection('🎉 All Specified Packages Installed Successfully');\n } else {\n installAllPackages();\n }\n } catch (error: any) {\n log('', true);\n log(`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":["path","chalk","fs"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|