aiox-core 5.0.1 → 5.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,8 +7,8 @@
7
7
  # - SHA256 hashes for change detection
8
8
  # - File types for categorization
9
9
  #
10
- version: 5.0.1
11
- generated_at: "2026-03-05T22:41:36.134Z"
10
+ version: 5.0.2
11
+ generated_at: "2026-03-06T11:46:12.517Z"
12
12
  generator: scripts/generate-install-manifest.js
13
13
  file_count: 1089
14
14
  files:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aiox-core",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "description": "Synkra AIOX: AI-Orchestrated System for Full Stack Development - Core Framework",
5
5
  "bin": {
6
6
  "aiox": "bin/aiox.js",
@@ -1190,50 +1190,23 @@ async function stepInstallScaffold(targetDir, options = {}) {
1190
1190
 
1191
1191
  const path = require('path');
1192
1192
  const fs = require('fs');
1193
- const { execSync } = require('child_process');
1194
1193
 
1195
- const proSourceDir = path.join(targetDir, 'node_modules', '@aiox-fullstack', 'pro');
1196
-
1197
- // Step 2a: Ensure package.json exists (greenfield projects)
1198
- const packageJsonPath = path.join(targetDir, 'package.json');
1199
- if (!fs.existsSync(packageJsonPath)) {
1200
- const initSpinner = createSpinner(t('proInitPackageJson'));
1201
- initSpinner.start();
1202
- try {
1203
- execSync('npm init -y', { cwd: targetDir, stdio: 'pipe' });
1204
- initSpinner.succeed(t('proPackageJsonCreated'));
1205
- } catch (err) {
1206
- initSpinner.fail(t('proPackageJsonFailed'));
1207
- return { success: false, error: tf('proNpmInitFailed', { message: err.message }) };
1208
- }
1209
- }
1210
-
1211
- // Step 2b: Install @aiox-fullstack/pro if not present
1212
- if (!fs.existsSync(proSourceDir)) {
1213
- const installSpinner = createSpinner(t('proInstallingPackage'));
1214
- installSpinner.start();
1215
- try {
1216
- execSync('npm install @aiox-fullstack/pro', {
1217
- cwd: targetDir,
1218
- stdio: 'pipe',
1219
- timeout: 120000,
1220
- });
1221
- installSpinner.succeed(t('proPackageInstalled'));
1222
- } catch (err) {
1223
- installSpinner.fail(t('proPackageInstallFailed'));
1224
- return {
1225
- success: false,
1226
- error: tf('proNpmInstallFailed', { message: err.message }),
1227
- };
1228
- }
1229
-
1230
- // Validate installation
1231
- if (!fs.existsSync(proSourceDir)) {
1232
- return {
1233
- success: false,
1234
- error: t('proPackageNotFound'),
1235
- };
1236
- }
1194
+ // Resolve pro source directory from multiple locations:
1195
+ // 1. Bundled in aiox-core package (pro/ submodule — npx and local dev)
1196
+ // 2. @aiox-fullstack/pro in node_modules (legacy brownfield)
1197
+ const bundledProDir = path.resolve(__dirname, '..', '..', '..', '..', 'pro');
1198
+ const npmProDir = path.join(targetDir, 'node_modules', '@aiox-fullstack', 'pro');
1199
+
1200
+ let proSourceDir;
1201
+ if (fs.existsSync(bundledProDir) && fs.existsSync(path.join(bundledProDir, 'squads'))) {
1202
+ proSourceDir = bundledProDir;
1203
+ } else if (fs.existsSync(npmProDir)) {
1204
+ proSourceDir = npmProDir;
1205
+ } else {
1206
+ return {
1207
+ success: false,
1208
+ error: t('proPackageNotFound'),
1209
+ };
1237
1210
  }
1238
1211
 
1239
1212
  // Step 2c: Scaffold pro content