@mnemosyne_os/forge 1.0.0 → 1.2.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.
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.CLI_RESONANCE_DIR = exports.DEFAULT_VAULT = void 0;
7
+ exports.resolveChronicleDir = resolveChronicleDir;
8
+ exports.loadVaultConfig = loadVaultConfig;
9
+ exports.saveVaultConfig = saveVaultConfig;
10
+ exports.listChronicles = listChronicles;
11
+ exports.loadCustomModels = loadCustomModels;
12
+ exports.saveCustomModels = saveCustomModels;
13
+ exports.importFromModelCard = importFromModelCard;
14
+ const fs_1 = __importDefault(require("fs"));
15
+ const path_1 = __importDefault(require("path"));
16
+ const os_1 = __importDefault(require("os"));
17
+ // ─────────────────────────────────────────────
18
+ // Vault — MnemoVault path resolution
19
+ // Structure: MnemoVault/<Workspace>/<ResonanceProject>/<IDE>/<Provider>/
20
+ //
21
+ // Workspace = the ecosystem / org (e.g. 'Mnemosyne-OS')
22
+ // ResonanceProject = a feature / component (e.g. 'CLI', 'Dashboard')
23
+ // IDE = the AI assistant (e.g. 'Antigravity', 'Cursor')
24
+ // Provider = the model company (e.g. 'Anthropic', 'GoogleDeepMind')
25
+ // ─────────────────────────────────────────────
26
+ exports.DEFAULT_VAULT = path_1.default.join(os_1.default.homedir(), 'Documents', 'MnemoVault');
27
+ exports.CLI_RESONANCE_DIR = '.cli_resonance';
28
+ /**
29
+ * Resolve the chronicle output directory.
30
+ * New structure: <vault>/<Workspace>/<ResonanceProject>/<IDE>/<Provider>/
31
+ * Legacy fallback (no workspace/project): <vault>/.cli_resonance/<IDE>/<Provider>/
32
+ */
33
+ function resolveChronicleDir(config) {
34
+ let dir;
35
+ if (config.workspace && config.resonanceProject) {
36
+ // Full Resonance Project structure
37
+ dir = path_1.default.join(config.vaultPath, config.workspace, config.resonanceProject, config.ide, config.provider);
38
+ }
39
+ else {
40
+ // Legacy: .cli_resonance/IDE/Provider
41
+ dir = path_1.default.join(config.vaultPath, exports.CLI_RESONANCE_DIR, config.ide, config.provider);
42
+ }
43
+ fs_1.default.mkdirSync(dir, { recursive: true });
44
+ return dir;
45
+ }
46
+ /**
47
+ * Load config from .mnemo-config.json in the .cli_resonance/ root.
48
+ * Returns null if not initialized.
49
+ */
50
+ function loadVaultConfig() {
51
+ const configPath = path_1.default.join(exports.DEFAULT_VAULT, exports.CLI_RESONANCE_DIR, '.mnemo-config.json');
52
+ if (!fs_1.default.existsSync(configPath))
53
+ return null;
54
+ try {
55
+ return JSON.parse(fs_1.default.readFileSync(configPath, 'utf8'));
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ /**
62
+ * Save config to .mnemo-config.json.
63
+ */
64
+ function saveVaultConfig(config) {
65
+ const dir = path_1.default.join(config.vaultPath, exports.CLI_RESONANCE_DIR);
66
+ fs_1.default.mkdirSync(dir, { recursive: true });
67
+ const configPath = path_1.default.join(dir, '.mnemo-config.json');
68
+ fs_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf8');
69
+ }
70
+ /**
71
+ * List all chronicles for the current IDE/Provider.
72
+ */
73
+ function listChronicles(config) {
74
+ const dir = resolveChronicleDir(config);
75
+ if (!fs_1.default.existsSync(dir))
76
+ return [];
77
+ return fs_1.default.readdirSync(dir)
78
+ .filter(f => f.endsWith('.md'))
79
+ .sort()
80
+ .reverse(); // most recent first
81
+ }
82
+ const DEFAULT_MODELS_PATH = (vaultPath) => path_1.default.join(vaultPath, exports.CLI_RESONANCE_DIR, 'models.json');
83
+ function loadCustomModels(vaultPath = exports.DEFAULT_VAULT) {
84
+ const p = DEFAULT_MODELS_PATH(vaultPath);
85
+ if (!fs_1.default.existsSync(p))
86
+ return [];
87
+ try {
88
+ return JSON.parse(fs_1.default.readFileSync(p, 'utf8'));
89
+ }
90
+ catch {
91
+ return [];
92
+ }
93
+ }
94
+ function saveCustomModels(models, vaultPath = exports.DEFAULT_VAULT) {
95
+ const dir = path_1.default.join(vaultPath, exports.CLI_RESONANCE_DIR);
96
+ fs_1.default.mkdirSync(dir, { recursive: true });
97
+ fs_1.default.writeFileSync(DEFAULT_MODELS_PATH(vaultPath), JSON.stringify(models, null, 2), 'utf8');
98
+ }
99
+ /**
100
+ * Import a model from a UniversalModelCard-compatible JSON.
101
+ * Extracts: model_info.model_id, model_info.provider, model_info.name
102
+ */
103
+ function importFromModelCard(cardPath) {
104
+ try {
105
+ const raw = JSON.parse(fs_1.default.readFileSync(cardPath, 'utf8'));
106
+ // UniversalModelCard v1.0.0 — extract key fields
107
+ const info = raw?.model_info ?? raw;
108
+ const modelId = info?.model_id ?? info?.id ?? null;
109
+ const provider = info?.provider ?? info?.organization ?? info?.developer ?? null;
110
+ const displayName = info?.name ?? info?.display_name ?? modelId;
111
+ if (!modelId || !provider)
112
+ return null;
113
+ return { modelId, provider, displayName };
114
+ }
115
+ catch {
116
+ return null;
117
+ }
118
+ }
package/package.json CHANGED
@@ -1,7 +1,13 @@
1
1
  {
2
2
  "name": "@mnemosyne_os/forge",
3
- "version": "1.0.0",
3
+ "version": "1.2.2",
4
4
  "description": "MnemoForge CLI — The AI Inception Engine for the Mnemosyne Neural OS ecosystem. Scaffold sovereign, AI-governed modules in one command.",
5
+ "files": [
6
+ "dist/",
7
+ "README.md",
8
+ "CHANGELOG.md",
9
+ "LICENSE"
10
+ ],
5
11
  "main": "dist/cli.js",
6
12
  "bin": {
7
13
  "mnemoforge": "./dist/cli.js"
@@ -12,6 +18,10 @@
12
18
  "dev": "tsc -w",
13
19
  "prepublishOnly": "npm run build"
14
20
  },
21
+ "publishConfig": {
22
+ "access": "public",
23
+ "registry": "https://registry.npmjs.org/"
24
+ },
15
25
  "keywords": [
16
26
  "mnemosyne",
17
27
  "cli",
@@ -25,7 +35,9 @@
25
35
  "cursor",
26
36
  "sovereign-ai",
27
37
  "code-generator",
28
- "boilerplate"
38
+ "boilerplate",
39
+ "chronicle",
40
+ "neural-coding"
29
41
  ],
30
42
  "author": {
31
43
  "name": "Tony Trochet",
@@ -1,36 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports. = ;
7
- const react_1 = __importDefault(require("react"));
8
- const framer_motion_1 = require("framer-motion");
9
- /**
10
- * {{MODULE_NAME}}
11
- * Forged by MnemoForge SDK.
12
- *
13
- * Objective: Build a Liquid Glass UX for Mnemosyne Ecosystem.
14
- */
15
- function () { {
16
- MODULE_NAME;
17
- } }
18
- () => {
19
- return (<framer_motion_1.motion.div initial={{ opacity: 0, scale: 0.95 }} animate={{ opacity: 1, scale: 1 }} className="p-6 rounded-2xl border bg-surface/60 backdrop-blur-md border-border/50 text-foreground">
20
- <div className="flex items-center gap-4 mb-4">
21
- <div className="w-10 h-10 rounded-full flex items-center justify-center bg-violet-500/20 text-violet-400 border border-violet-500/50">
22
-
23
- </div>
24
- <div>
25
- <h2 className="text-xl font-bold tracking-tight">{{ MODULE_NAME }} Module</h2>
26
- <p className="text-sm text-muted">Awaiting Agentic Construction...</p>
27
- </div>
28
- </div>
29
-
30
- <div className="p-4 rounded-xl bg-surface/80 border border-border/30 italic text-muted text-sm group hover:border-violet-500/30 transition-colors">
31
- <span className="group-hover:text-primary transition-colors">
32
- Agent Instructions: Open `.cursorrules` to review Liquid Glass guidelines.
33
- </span>
34
- </div>
35
- </framer_motion_1.motion.div>);
36
- };
package/src/cli.ts DELETED
@@ -1,121 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- import { Command } from 'commander';
4
- import chalk from 'chalk';
5
- import inquirer from 'inquirer';
6
- import fs from 'fs';
7
- import path from 'path';
8
-
9
- // ─────────────────────────────────────────────
10
- // MnemoForge CLI — Mnemosyne Neural OS
11
- // AI Inception Engine · XPACEGEMS LLC
12
- // ─────────────────────────────────────────────
13
-
14
- const BANNER = `
15
- ${chalk.hex('#8B5CF6')('███╗ ███╗███╗ ██╗███████╗███╗ ███╗ ██████╗')}
16
- ${chalk.hex('#8B5CF6')('████╗ ████║████╗ ██║██╔════╝████╗ ████║██╔═══██╗')}
17
- ${chalk.hex('#A78BFA')('██╔████╔██║██╔██╗ ██║█████╗ ██╔████╔██║██║ ██║')}
18
- ${chalk.hex('#C4B5FD')('██║╚██╔╝██║██║╚██╗██║██╔══╝ ██║╚██╔╝██║██║ ██║')}
19
- ${chalk.hex('#DDD6FE')('██║ ╚═╝ ██║██║ ╚████║███████╗██║ ╚═╝ ██║╚██████╔╝')}
20
- ${chalk.hex('#EDE9FE')('╚═╝ ╚═╝╚═╝ ╚═══╝╚══════╝╚═╝ ╚═╝ ╚═════╝ ')}
21
- ${chalk.hex('#F5F3FF').bold(' F O R G E C L I')}
22
- ${chalk.gray(' The AI Inception Engine — Mnemosyne Neural OS')}
23
- ${chalk.gray(' XPACEGEMS LLC · MIT License')}
24
- `;
25
-
26
- const program = new Command();
27
-
28
- program
29
- .name('mnemoforge')
30
- .description('MnemoForge — AI Inception Engine for the Mnemosyne Neural OS ecosystem')
31
- .version('1.0.0', '-v, --version', 'Display current version')
32
- .addHelpText('beforeAll', BANNER);
33
-
34
- program
35
- .command('init')
36
- .description('Scaffold a new Mnemosyne-grade module with AI governance DNA')
37
- .argument('[module-name]', 'Name of the module to create (PascalCase recommended)')
38
- .option('--no-git', 'Skip git initialization')
39
- .action(async (moduleName) => {
40
- console.log(BANNER);
41
-
42
- let name = moduleName;
43
-
44
- if (!name) {
45
- const answers = await inquirer.prompt([
46
- {
47
- type: 'input',
48
- name: 'moduleName',
49
- message: chalk.cyan('What is the name of your new Mnemosyne module?') + chalk.gray(' (e.g., QuantumVaultUI)'),
50
- validate: (input: string) => {
51
- if (input.trim() === '') return 'Module name is required.';
52
- if (!/^[a-zA-Z][a-zA-Z0-9-_]*$/.test(input.trim())) {
53
- return 'Module name must start with a letter and contain only letters, numbers, hyphens, or underscores.';
54
- }
55
- return true;
56
- }
57
- }
58
- ]);
59
- name = answers.moduleName.trim();
60
- }
61
-
62
- const targetDir = path.resolve(process.cwd(), name);
63
-
64
- console.log(chalk.hex('#8B5CF6').bold(`\n⬡ Forging Module: ${chalk.white.bold(name)}`));
65
- console.log(chalk.gray(` Target: ${targetDir}\n`));
66
-
67
- if (fs.existsSync(targetDir)) {
68
- console.log(chalk.red(`\n✖ Directory "${name}" already exists. Choose a different name or remove the existing folder.\n`));
69
- process.exit(1);
70
- }
71
-
72
- fs.mkdirSync(targetDir, { recursive: true });
73
-
74
- // Resolve templates — works whether running from /src (development) or /dist (production)
75
- const isCompiled = __dirname.endsWith('dist') || __dirname.includes(path.join('dist'));
76
- const templatesDir = isCompiled
77
- ? path.join(__dirname, '..', 'src', 'templates')
78
- : path.join(__dirname, 'templates');
79
-
80
- const copyTemplate = (file: string, destName: string = file): boolean => {
81
- try {
82
- const srcPath = path.join(templatesDir, file);
83
- if (!fs.existsSync(srcPath)) {
84
- console.log(chalk.yellow(` ⚠ Template "${file}" not found — skipping.`));
85
- return false;
86
- }
87
- let content = fs.readFileSync(srcPath, 'utf8');
88
- content = content.replace(/\{\{MODULE_NAME\}\}/g, name);
89
- fs.writeFileSync(path.join(targetDir, destName), content, 'utf8');
90
- console.log(chalk.green(` ✔ ${destName}`));
91
- return true;
92
- } catch (err: unknown) {
93
- const message = err instanceof Error ? err.message : String(err);
94
- console.log(chalk.red(` ✖ Failed to create "${file}": ${message}`));
95
- return false;
96
- }
97
- };
98
-
99
- // Scaffold the module
100
- copyTemplate('.cursorrules');
101
- copyTemplate('AGENT_INSTRUCTIONS.md');
102
- copyTemplate('index.template.tsx', 'index.tsx');
103
-
104
- // Success output
105
- console.log(chalk.hex('#8B5CF6').bold('\n✦ Module Forged Successfully!\n'));
106
-
107
- console.log(chalk.white(' Next steps for developers:'));
108
- console.log(chalk.gray(` cd ${name}`));
109
- console.log(chalk.gray(' npm install'));
110
- console.log(chalk.gray(' code .\n'));
111
-
112
- console.log(chalk.white(' For AI Agents (Cursor / Claude / Copilot):'));
113
- console.log(chalk.hex('#A78BFA')(` 1. Read .cursorrules → Liquid Glass design constraints`));
114
- console.log(chalk.hex('#A78BFA')(` 2. Read AGENT_INSTRUCTIONS.md → Mission context`));
115
- console.log(chalk.hex('#A78BFA')(` 3. Build index.tsx → Your sovereign module awaits\n`));
116
-
117
- console.log(chalk.gray(' Documentation: https://github.com/yaka0007/Mnemosyne-Neural-OS'));
118
- console.log(chalk.gray(' Part of: Mnemosyne Neural OS — XPACEGEMS LLC\n'));
119
- });
120
-
121
- program.parse(process.argv);
@@ -1,55 +0,0 @@
1
- # Mnemosyne Module — AI Governance Rules (Liquid Glass Design System)
2
- # Generated by MnemoForge CLI · https://github.com/yaka0007/Mnemosyne-Neural-OS
3
-
4
- You are an AI agent building the module: **{{MODULE_NAME}}**
5
- This module is part of the **Mnemosyne Neural OS** ecosystem by XPACEGEMS LLC.
6
-
7
- ---
8
-
9
- ## DESIGN SYSTEM: Liquid Glass
10
-
11
- All UI must follow the Mnemosyne "Liquid Glass" aesthetic:
12
-
13
- - **Surfaces**: Translucent backgrounds (`bg-surface/60`), `backdrop-blur-md`
14
- - **Borders**: Subtle (`border-border/50`), never solid hard borders
15
- - **Accents**: Violet spectrum (`violet-400`, `violet-500`, `purple-400`)
16
- - **Typography**: Inter or system-ui, sharp tracking for headings
17
- - **Shadows**: Layered glow effects (`shadow-violet-500/20`)
18
- - **Dark-first**: Design in dark mode; light mode is optional
19
-
20
- ## STYLING RULES
21
-
22
- 1. **Tailwind CSS ONLY** — No inline `style={{ }}` unless binding to a dynamic JS value
23
- 2. **No arbitrary magic numbers** — Use Tailwind spacing scale
24
- 3. **Framer Motion** for ALL transitions:
25
- - Entry: `initial={{ opacity: 0, scale: 0.95 }}` / `animate={{ opacity: 1, scale: 1 }}`
26
- - Use `<motion.div layout>` for list animations
27
- - Hover: `whileHover={{ scale: 1.02 }}`
28
- 4. **Micro-animations on interactive elements** — hover glow, pulse, or scale
29
- 5. **Responsive** — Mobile-first with `sm:`, `md:`, `lg:` breakpoints
30
-
31
- ## ARCHITECTURE RULES
32
-
33
- 1. **State**: Zustand only. No Redux, no Context API for shared state.
34
- 2. **TypeScript**: Strict mode. No `any`. All props typed with interfaces.
35
- 3. **Icons**: `lucide-react` exclusively for UI metaphors.
36
- 4. **Components**: Decompose into `components/` subdirectory — no 300-line monoliths.
37
- 5. **No placeholders**: Every generated file must be complete and deployable.
38
- 6. **Imports**: Named exports preferred over default exports.
39
-
40
- ## QUALITY STANDARD
41
-
42
- Every component must make a developer say:
43
- > "This looks like a Sovereign Command Center from 2030."
44
-
45
- If it looks like a generic SaaS dashboard template, you have failed.
46
-
47
- ## MNEMOSYNC INTEGRATION (Optional)
48
-
49
- If this module communicates with the Mnemosyne agent coordination layer:
50
- - Read/write to `live_state.json` via the MnemoSync protocol
51
- - Update agent status fields: `status`, `intent`, `files_touched`
52
- - Emit events to the Resonance Engine via the registered IPC channel
53
-
54
- ---
55
- *MnemoForge v1.0.0 · MIT License · XPACEGEMS LLC*
@@ -1,60 +0,0 @@
1
- # Mission Directive — {{MODULE_NAME}}
2
- # Generated by MnemoForge CLI · Mnemosyne Neural OS
3
-
4
- ---
5
-
6
- ## Context
7
-
8
- You have been initialized by the **MnemoForge Inception Engine** to build the module **{{MODULE_NAME}}**.
9
-
10
- This module is part of the **Mnemosyne Neural OS** — a production-grade sovereign AI operating system.
11
- Repository: https://github.com/yaka0007/Mnemosyne-Neural-OS
12
-
13
- ---
14
-
15
- ## Your Instructions
16
-
17
- ### Step 1 — Internalize the Rules
18
- Read `.cursorrules` in this directory. It defines:
19
- - The **Liquid Glass design system** you must follow
20
- - **Styling constraints** (Tailwind-only, Framer Motion, Zustand)
21
- - **TypeScript standards** (strict mode, no `any`)
22
- - **Quality bar** ("Sovereign Command Center from 2030")
23
-
24
- ### Step 2 — Build `index.tsx`
25
- - Replace the scaffold with real, functional UI
26
- - Decompose complex components into `components/` subdirectory
27
- - All types must be explicit — no implicit `any`
28
- - All interactions must have micro-animations
29
-
30
- ### Step 3 — Verify Quality
31
- Before declaring your work complete, confirm:
32
- - [ ] Zero inline styles (unless dynamic JS binding)
33
- - [ ] All transitions use Framer Motion
34
- - [ ] State managed via Zustand (if stateful)
35
- - [ ] TypeScript compiles with zero errors
36
- - [ ] UI matches "Liquid Glass" aesthetic (translucent, dark, violet-accented)
37
-
38
- ### Step 4 — (Optional) MnemoSync Integration
39
- If this module connects to the Mnemosyne coordination layer:
40
- - Emit your completion status to the MnemoSync daemon
41
- - Update the relevant `pulse.json` with `"status": "idle"` when done
42
-
43
- ---
44
-
45
- ## Technical Stack Available
46
-
47
- | Concern | Technology |
48
- |---|---|
49
- | UI Framework | React 18 |
50
- | Styling | Tailwind CSS + CSS Variables |
51
- | Animations | Framer Motion |
52
- | State | Zustand |
53
- | Icons | lucide-react |
54
- | Language | TypeScript 5 (strict) |
55
- | Build | Vite |
56
-
57
- ---
58
-
59
- *End of mission directive. The module awaits construction.*
60
- *MnemoForge v1.0.0 · XPACEGEMS LLC · MIT License*
@@ -1,34 +0,0 @@
1
- import React from 'react';
2
- import { motion } from 'framer-motion';
3
-
4
- /**
5
- * {{MODULE_NAME}}
6
- * Forged by MnemoForge SDK.
7
- *
8
- * Objective: Build a Liquid Glass UX for Mnemosyne Ecosystem.
9
- */
10
- export function {{MODULE_NAME}}() {
11
- return (
12
- <motion.div
13
- initial={{ opacity: 0, scale: 0.95 }}
14
- animate={{ opacity: 1, scale: 1 }}
15
- className="p-6 rounded-2xl border bg-surface/60 backdrop-blur-md border-border/50 text-foreground"
16
- >
17
- <div className="flex items-center gap-4 mb-4">
18
- <div className="w-10 h-10 rounded-full flex items-center justify-center bg-violet-500/20 text-violet-400 border border-violet-500/50">
19
-
20
- </div>
21
- <div>
22
- <h2 className="text-xl font-bold tracking-tight">{{MODULE_NAME}} Module</h2>
23
- <p className="text-sm text-muted">Awaiting Agentic Construction...</p>
24
- </div>
25
- </div>
26
-
27
- <div className="p-4 rounded-xl bg-surface/80 border border-border/30 italic text-muted text-sm group hover:border-violet-500/30 transition-colors">
28
- <span className="group-hover:text-primary transition-colors">
29
- Agent Instructions: Open `.cursorrules` to review Liquid Glass guidelines.
30
- </span>
31
- </div>
32
- </motion.div>
33
- );
34
- }
package/tsconfig.json DELETED
@@ -1,15 +0,0 @@
1
- {
2
- "compilerOptions": {
3
- "target": "ES2022",
4
- "module": "CommonJS",
5
- "moduleResolution": "node",
6
- "outDir": "./dist",
7
- "rootDir": "./src",
8
- "strict": true,
9
- "esModuleInterop": true,
10
- "skipLibCheck": true,
11
- "forceConsistentCasingInFileNames": true
12
- },
13
- "include": ["src/**/*"],
14
- "exclude": ["src/templates/**/*"]
15
- }