aios-core 4.2.7 → 4.2.9

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: 4.2.7
11
- generated_at: "2026-02-16T14:10:16.018Z"
10
+ version: 4.2.9
11
+ generated_at: "2026-02-16T15:01:11.763Z"
12
12
  generator: scripts/generate-install-manifest.js
13
13
  file_count: 1004
14
14
  files:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aios-core",
3
- "version": "4.2.7",
3
+ "version": "4.2.9",
4
4
  "description": "Synkra AIOS: AI-Orchestrated System for Full Stack Development - Core Framework",
5
5
  "bin": {
6
6
  "aios": "bin/aios.js",
@@ -55,7 +55,7 @@
55
55
  "validate:gemini-integration": "node .aios-core/infrastructure/scripts/validate-gemini-integration.js",
56
56
  "sync:skills:codex": "node .aios-core/infrastructure/scripts/codex-skills-sync/index.js",
57
57
  "sync:skills:codex:global": "node .aios-core/infrastructure/scripts/codex-skills-sync/index.js --global --global-only",
58
- "validate:codex-skills": "node .aios-core/infrastructure/scripts/codex-skills-sync/validate.js --strict",
58
+ "validate:codex-skills": "node .aios-core/infrastructure/scripts/codex-skills-sync/validate.js --strict",
59
59
  "validate:paths": "node .aios-core/infrastructure/scripts/validate-paths.js",
60
60
  "validate:parity": "node .aios-core/infrastructure/scripts/validate-parity.js",
61
61
  "validate:semantic-lint": "node scripts/semantic-lint.js",
@@ -16,6 +16,13 @@ const path = require('path');
16
16
  const yaml = require('js-yaml');
17
17
  const { hashFileAsync, hashFilesMatchAsync } = require('../installer/file-hasher');
18
18
 
19
+ /**
20
+ * Directories excluded from scaffolding (private/internal squads).
21
+ */
22
+ const SCAFFOLD_EXCLUDES = [
23
+ 'mmos-squad',
24
+ ];
25
+
19
26
  /**
20
27
  * Items to scaffold from pro package into user project.
21
28
  * Each entry defines source (relative to proSourceDir) and dest (relative to targetDir).
@@ -114,6 +121,12 @@ async function scaffoldProContent(targetDir, proSourceDir, options = {}) {
114
121
  }
115
122
  }
116
123
 
124
+ // Merge pro-config into core-config
125
+ const merged = await mergeProConfig(targetDir);
126
+ if (merged && onProgress) {
127
+ onProgress({ item: 'pro-config', status: 'done', message: 'Pro config merged into core-config.yaml' });
128
+ }
129
+
117
130
  // Generate pro-version.json (AC4)
118
131
  const versionInfo = await generateProVersionJson(targetDir, proSourceDir, result.copiedFiles);
119
132
  result.versionInfo = versionInfo;
@@ -162,6 +175,11 @@ async function scaffoldDirectory(sourceDir, destDir, options = {}) {
162
175
  const items = await fs.readdir(sourceDir, { withFileTypes: true });
163
176
 
164
177
  for (const item of items) {
178
+ // Skip excluded directories (e.g. private squads)
179
+ if (SCAFFOLD_EXCLUDES.includes(item.name)) {
180
+ continue;
181
+ }
182
+
165
183
  const sourcePath = path.join(sourceDir, item.name);
166
184
  const destPath = path.join(destDir, item.name);
167
185
 
@@ -324,6 +342,36 @@ async function rollbackScaffold(rollbackFiles) {
324
342
  return { removed, errors };
325
343
  }
326
344
 
345
+ /**
346
+ * Merge pro-config.yaml sections into core-config.yaml.
347
+ * Deep merges top-level keys (pro, memory, metrics, integrations, squads).
348
+ *
349
+ * @param {string} targetDir - Project root directory
350
+ * @returns {Promise<boolean>} True if merge was performed
351
+ */
352
+ async function mergeProConfig(targetDir) {
353
+ const coreConfigPath = path.join(targetDir, '.aios-core', 'core-config.yaml');
354
+ const proConfigPath = path.join(targetDir, '.aios-core', 'pro-config.yaml');
355
+
356
+ if (!await fs.pathExists(proConfigPath) || !await fs.pathExists(coreConfigPath)) {
357
+ return false;
358
+ }
359
+
360
+ const coreConfig = yaml.load(await fs.readFile(coreConfigPath, 'utf8')) || {};
361
+ const proConfig = yaml.load(await fs.readFile(proConfigPath, 'utf8')) || {};
362
+
363
+ for (const [key, value] of Object.entries(proConfig)) {
364
+ if (coreConfig[key] && typeof coreConfig[key] === 'object' && typeof value === 'object' && !Array.isArray(value)) {
365
+ coreConfig[key] = { ...coreConfig[key], ...value };
366
+ } else {
367
+ coreConfig[key] = value;
368
+ }
369
+ }
370
+
371
+ await fs.writeFile(coreConfigPath, yaml.dump(coreConfig, { lineWidth: -1 }), 'utf8');
372
+ return true;
373
+ }
374
+
327
375
  module.exports = {
328
376
  scaffoldProContent,
329
377
  scaffoldDirectory,
@@ -331,5 +379,7 @@ module.exports = {
331
379
  generateProVersionJson,
332
380
  generateInstalledManifest,
333
381
  rollbackScaffold,
382
+ mergeProConfig,
334
383
  SCAFFOLD_ITEMS,
384
+ SCAFFOLD_EXCLUDES,
335
385
  };
@@ -710,10 +710,12 @@ async function runWizard(options = {}) {
710
710
  const isCI = process.env.CI === 'true' || !process.stdout.isTTY;
711
711
  const hasProKey = !!process.env.AIOS_PRO_KEY;
712
712
 
713
+ const proOptions = { targetDir: process.cwd() };
714
+
713
715
  if (isCI && hasProKey) {
714
716
  // CI mode: auto-run if AIOS_PRO_KEY is set
715
717
  console.log('\nšŸ”‘ Pro license key detected, running Pro setup...');
716
- const proResult = await runProWizard({ quiet: true });
718
+ const proResult = await runProWizard({ ...proOptions, quiet: true });
717
719
  answers.proInstalled = proResult.success;
718
720
  answers.proResult = proResult;
719
721
  } else if (!isCI && !options.quiet) {
@@ -728,15 +730,19 @@ async function runWizard(options = {}) {
728
730
  ]);
729
731
 
730
732
  if (hasPro) {
731
- const proResult = await runProWizard();
733
+ const proResult = await runProWizard(proOptions);
732
734
  answers.proInstalled = proResult.success;
733
735
  answers.proResult = proResult;
736
+
737
+ if (!proResult.success && proResult.error) {
738
+ console.error(`\nāš ļø Pro installation issue: ${proResult.error}`);
739
+ }
734
740
  } else {
735
741
  answers.proInstalled = false;
736
742
  }
737
743
  }
738
- } catch {
739
- // Pro module not available — skip silently
744
+ } catch (error) {
745
+ console.error(`\nāš ļø Pro setup error: ${error.message}`);
740
746
  answers.proInstalled = false;
741
747
  }
742
748
  }
@@ -1,99 +0,0 @@
1
- #!/bin/bash
2
- # MMOS Architecture Guard - Pre-commit Hook
3
- # Version: 1.0
4
- # Purpose: Prevent architectural violations in file placement
5
-
6
- set -e
7
-
8
- echo "šŸ›”ļø Running MMOS Architecture Guard..."
9
-
10
- # Colors
11
- RED='\033[0;31m'
12
- GREEN='\033[0;32m'
13
- YELLOW='\033[1;33m'
14
- NC='\033[0m' # No Color
15
-
16
- violations=0
17
-
18
- # Get staged files
19
- staged_files=$(git diff --cached --name-only --diff-filter=ACM)
20
-
21
- # Rule 1: No mind-specific folders in docs/mmos/
22
- echo "Checking Rule 1: No mind-specific folders in docs/mmos/..."
23
-
24
- if echo "$staged_files" | grep -qE "docs/mmos/(validations|migrations)/[a-z_-]+"; then
25
- echo -e "${RED}āŒ VIOLATION: Mind-specific folders detected in docs/mmos/${NC}"
26
- echo ""
27
- echo "Found:"
28
- echo "$staged_files" | grep -E "docs/mmos/(validations|migrations)/[a-z_-]+" | sed 's/^/ - /'
29
- echo ""
30
- echo -e "${YELLOW}Fix: Move to outputs/minds/{slug}/docs/ instead${NC}"
31
- echo ""
32
- echo "Examples:"
33
- echo " āŒ docs/mmos/validations/pedro-valerio-checklist.md"
34
- echo " āœ… outputs/minds/pedro_valerio/docs/validation-checklist.md"
35
- echo ""
36
- violations=$((violations + 1))
37
- fi
38
-
39
- # Rule 2: No output files in expansion pack
40
- echo "Checking Rule 2: No output files in expansion pack..."
41
-
42
- if echo "$staged_files" | grep -qE "expansion-packs/mmos/(benchmarks|outputs|results)/"; then
43
- echo -e "${RED}āŒ VIOLATION: Output files in expansion pack${NC}"
44
- echo ""
45
- echo "Found:"
46
- echo "$staged_files" | grep -E "expansion-packs/mmos/(benchmarks|outputs|results)/" | sed 's/^/ - /'
47
- echo ""
48
- echo -e "${YELLOW}Fix: Move to docs/mmos/qa/benchmarks/ or appropriate output location${NC}"
49
- echo ""
50
- violations=$((violations + 1))
51
- fi
52
-
53
- # Rule 3: Check for common naming violations
54
- echo "Checking Rule 3: Mind-specific files should be in outputs/minds/..."
55
-
56
- # Check for files with mind names in docs/mmos/ (excluding allowed folders)
57
- for mind_name in $(ls outputs/minds/ 2>/dev/null | grep -v "^README" || true); do
58
- if echo "$staged_files" | grep -qE "docs/mmos/.*${mind_name}"; then
59
- # Exclude allowed locations (reports can mention minds)
60
- if ! echo "$staged_files" | grep -qE "docs/mmos/(reports|architecture)/"; then
61
- echo -e "${YELLOW}āš ļø WARNING: File containing mind name '$mind_name' in docs/mmos/${NC}"
62
- echo "$staged_files" | grep -E "docs/mmos/.*${mind_name}" | sed 's/^/ - /'
63
- echo ""
64
- echo "Verify this is system-level documentation, not mind-specific"
65
- echo ""
66
- fi
67
- fi
68
- done
69
-
70
- # Rule 4: Verify outputs/minds/{slug}/ structure
71
- echo "Checking Rule 4: outputs/minds/{slug}/ structure..."
72
-
73
- if echo "$staged_files" | grep -qE "outputs/minds/[^/]+/[^/]+\.(md|yaml|json)$"; then
74
- echo -e "${YELLOW}āš ļø WARNING: Files in outputs/minds/{slug}/ root detected${NC}"
75
- echo ""
76
- echo "Found:"
77
- echo "$staged_files" | grep -E "outputs/minds/[^/]+/[^/]+\.(md|yaml|json)$" | sed 's/^/ - /'
78
- echo ""
79
- echo "Pipeline outputs should be in subfolders:"
80
- echo " - analysis/, synthesis/, implementation/, system_prompts/, kb/"
81
- echo " - Process docs should be in docs/"
82
- echo " - Logs should be in logs/"
83
- echo ""
84
- fi
85
-
86
- # Final verdict
87
- echo ""
88
- if [ $violations -gt 0 ]; then
89
- echo -e "${RED}āŒ COMMIT REJECTED: $violations architectural violation(s) found${NC}"
90
- echo ""
91
- echo "Review:"
92
- echo " - docs/mmos/ARCHITECTURE_RULES.md"
93
- echo " - .aios-core/checklists/mmos-architecture-guard.md"
94
- echo ""
95
- exit 1
96
- else
97
- echo -e "${GREEN}āœ… Architecture guard passed${NC}"
98
- exit 0
99
- fi