mycontext-cli 4.2.0 → 4.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.
- package/README.md +128 -133
- package/dist/README.md +128 -133
- package/dist/cli.js +76 -0
- package/dist/cli.js.map +1 -1
- package/dist/commands/doctor.d.ts +18 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +53 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +99 -2
- package/dist/commands/init.js.map +1 -1
- package/dist/core/brain/BrainClient.d.ts +2 -0
- package/dist/core/brain/BrainClient.d.ts.map +1 -1
- package/dist/core/brain/BrainClient.js +19 -0
- package/dist/core/brain/BrainClient.js.map +1 -1
- package/dist/doctor/DoctorEngine.d.ts +5 -0
- package/dist/doctor/DoctorEngine.d.ts.map +1 -0
- package/dist/doctor/DoctorEngine.js +491 -0
- package/dist/doctor/DoctorEngine.js.map +1 -0
- package/dist/doctor/api.d.ts +4 -0
- package/dist/doctor/api.d.ts.map +1 -0
- package/dist/doctor/api.js +19 -0
- package/dist/doctor/api.js.map +1 -0
- package/dist/doctor/rules/dead-code-rules.d.ts +3 -0
- package/dist/doctor/rules/dead-code-rules.d.ts.map +1 -0
- package/dist/doctor/rules/dead-code-rules.js +269 -0
- package/dist/doctor/rules/dead-code-rules.js.map +1 -0
- package/dist/doctor/rules/index.d.ts +11 -0
- package/dist/doctor/rules/index.d.ts.map +1 -0
- package/dist/doctor/rules/index.js +21 -0
- package/dist/doctor/rules/index.js.map +1 -0
- package/dist/doctor/rules/nextjs-rules.d.ts +3 -0
- package/dist/doctor/rules/nextjs-rules.d.ts.map +1 -0
- package/dist/doctor/rules/nextjs-rules.js +357 -0
- package/dist/doctor/rules/nextjs-rules.js.map +1 -0
- package/dist/doctor/rules/node-rules.d.ts +3 -0
- package/dist/doctor/rules/node-rules.d.ts.map +1 -0
- package/dist/doctor/rules/node-rules.js +290 -0
- package/dist/doctor/rules/node-rules.js.map +1 -0
- package/dist/doctor/rules/turbo-rules.d.ts +3 -0
- package/dist/doctor/rules/turbo-rules.d.ts.map +1 -0
- package/dist/doctor/rules/turbo-rules.js +215 -0
- package/dist/doctor/rules/turbo-rules.js.map +1 -0
- package/dist/doctor/types.d.ts +87 -0
- package/dist/doctor/types.d.ts.map +1 -0
- package/dist/doctor/types.js +6 -0
- package/dist/doctor/types.js.map +1 -0
- package/dist/package.json +4 -4
- package/dist/services/ContextSyncer.d.ts +40 -0
- package/dist/services/ContextSyncer.d.ts.map +1 -0
- package/dist/services/ContextSyncer.js +219 -0
- package/dist/services/ContextSyncer.js.map +1 -0
- package/dist/services/ProjectScanner.d.ts +74 -0
- package/dist/services/ProjectScanner.d.ts.map +1 -0
- package/dist/services/ProjectScanner.js +343 -0
- package/dist/services/ProjectScanner.js.map +1 -0
- package/dist/services/ScaffoldAgent.d.ts +35 -0
- package/dist/services/ScaffoldAgent.d.ts.map +1 -0
- package/dist/services/ScaffoldAgent.js +228 -0
- package/dist/services/ScaffoldAgent.js.map +1 -0
- package/dist/tui/PlanningMode.d.ts +42 -0
- package/dist/tui/PlanningMode.d.ts.map +1 -0
- package/dist/tui/PlanningMode.js +401 -0
- package/dist/tui/PlanningMode.js.map +1 -0
- package/dist/tui/TUIClient.d.ts +20 -0
- package/dist/tui/TUIClient.d.ts.map +1 -0
- package/dist/tui/TUIClient.js +50 -0
- package/dist/tui/TUIClient.js.map +1 -0
- package/dist/types/mega-context.d.ts +118 -0
- package/dist/types/mega-context.d.ts.map +1 -0
- package/dist/types/mega-context.js +3 -0
- package/dist/types/mega-context.js.map +1 -0
- package/dist/types/tui.d.ts +29 -0
- package/dist/types/tui.d.ts.map +1 -0
- package/dist/types/tui.js +8 -0
- package/dist/types/tui.js.map +1 -0
- package/dist/types/unified-context.d.ts +102 -0
- package/dist/types/unified-context.d.ts.map +1 -0
- package/dist/types/unified-context.js +50 -0
- package/dist/types/unified-context.js.map +1 -0
- package/dist/utils/FileGenerator.d.ts +5 -0
- package/dist/utils/FileGenerator.d.ts.map +1 -1
- package/dist/utils/FileGenerator.js +48 -0
- package/dist/utils/FileGenerator.js.map +1 -1
- package/dist/utils/deepMerge.d.ts +14 -0
- package/dist/utils/deepMerge.d.ts.map +1 -0
- package/dist/utils/deepMerge.js +87 -0
- package/dist/utils/deepMerge.js.map +1 -0
- package/dist/utils/fileSystem.d.ts.map +1 -1
- package/dist/utils/fileSystem.js +32 -4
- package/dist/utils/fileSystem.js.map +1 -1
- package/package.json +24 -22
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
+
};
|
|
38
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
+
exports.ScaffoldAgent = void 0;
|
|
40
|
+
const spinner_1 = require("../utils/spinner");
|
|
41
|
+
const fileSystem_1 = require("../utils/fileSystem");
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
const path = __importStar(require("path"));
|
|
45
|
+
const fs = __importStar(require("fs-extra"));
|
|
46
|
+
class ScaffoldAgent {
|
|
47
|
+
constructor() {
|
|
48
|
+
this.fs = new fileSystem_1.FileSystemManager();
|
|
49
|
+
this.spinner = new spinner_1.EnhancedSpinner("Refining architecture...");
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Deterministically scaffold the project from the MegaContext
|
|
53
|
+
*/
|
|
54
|
+
async scaffold(context) {
|
|
55
|
+
console.log(chalk_1.default.blue(`\n🚀 Scaling up to 100% deterministic scaffold for: ${context.project.name}\n`));
|
|
56
|
+
const projectPath = path.resolve(process.cwd(), context.project.name);
|
|
57
|
+
// 1. Framework Scaffold (Next.js)
|
|
58
|
+
if (!fs.existsSync(projectPath)) {
|
|
59
|
+
this.spinner.updateText("Bootstrapping Next.js + InstantDB...");
|
|
60
|
+
this.spinner.start();
|
|
61
|
+
try {
|
|
62
|
+
// Using a more deterministic install command (pnpm dlx create-next-app)
|
|
63
|
+
// We use --no-eslint --no-tailwind --no-src-dir etc to have full control?
|
|
64
|
+
// For now, let's stick to standard recommended setup but fast
|
|
65
|
+
(0, child_process_1.execSync)(`pnpm dlx create-next-app@latest ${context.project.name} --typescript --tailwind --eslint --app --no-src-dir --import-alias "@/*" --use-pnpm`, {
|
|
66
|
+
stdio: "ignore"
|
|
67
|
+
});
|
|
68
|
+
this.spinner.success({ text: "Next.js shell created." });
|
|
69
|
+
}
|
|
70
|
+
catch (e) {
|
|
71
|
+
this.spinner.error({ text: "Failed to scaffold Next.js app." });
|
|
72
|
+
throw e;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// 2. Install InstantDB
|
|
76
|
+
this.spinner.updateText("Installing InstantDB SDK...");
|
|
77
|
+
this.spinner.start();
|
|
78
|
+
(0, child_process_1.execSync)("pnpm add @instantdb/react @instantdb/admin", { cwd: projectPath, stdio: "ignore" });
|
|
79
|
+
this.spinner.success({ text: "InstantDB SDK installed." });
|
|
80
|
+
// 3. Generate Schema
|
|
81
|
+
this.spinner.updateText("Generating InstantDB Schema...");
|
|
82
|
+
this.spinner.start();
|
|
83
|
+
await this.generateSchemaFile(projectPath, context);
|
|
84
|
+
this.spinner.success({ text: "Schema generated from MegaContext." });
|
|
85
|
+
// 4. Generate Routes & Pages
|
|
86
|
+
this.spinner.updateText("Generating Route Structure...");
|
|
87
|
+
this.spinner.start();
|
|
88
|
+
await this.generateRoutes(projectPath, context);
|
|
89
|
+
this.spinner.success({ text: "Routes & Layouts generated." });
|
|
90
|
+
// 5. Persist "Living Brain"
|
|
91
|
+
this.spinner.updateText("Initializing Living Brain (.mycontext)...");
|
|
92
|
+
this.spinner.start();
|
|
93
|
+
await this.saveContext(projectPath, context);
|
|
94
|
+
await this.createAlign(projectPath);
|
|
95
|
+
await this.createReadme(projectPath, context);
|
|
96
|
+
await this.createEnvFile(projectPath);
|
|
97
|
+
this.spinner.success({ text: "Context, Utils, & .env saved." });
|
|
98
|
+
console.log(chalk_1.default.green(`\n✅ Project "${context.project.name}" is ready!`));
|
|
99
|
+
console.log(chalk_1.default.gray(` cd ${context.project.name} && pnpm dev`));
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Generate instant.schema.ts
|
|
103
|
+
*/
|
|
104
|
+
async generateSchemaFile(projectPath, context) {
|
|
105
|
+
// This would actually generate the full TS file content based on context.database.entities
|
|
106
|
+
// For prototype, we generate a stub
|
|
107
|
+
const schemaContent = `
|
|
108
|
+
import { i } from "@instantdb/react";
|
|
109
|
+
|
|
110
|
+
export const graph = i.graph(
|
|
111
|
+
"${context.project.id}",
|
|
112
|
+
{
|
|
113
|
+
${Object.entries(context.database.entities).map(([name, def]) => `${name}: i.entity({
|
|
114
|
+
${Object.keys(def.fields).map(f => `${f}: i.string()`).join(",\n ")}
|
|
115
|
+
})`).join(",\n ")}
|
|
116
|
+
}
|
|
117
|
+
);
|
|
118
|
+
`;
|
|
119
|
+
await fs.ensureDir(path.join(projectPath, "lib"));
|
|
120
|
+
await fs.writeFile(path.join(projectPath, "lib", "instant.schema.ts"), schemaContent);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Generate Next.js App Router structure
|
|
124
|
+
*/
|
|
125
|
+
async generateRoutes(projectPath, context) {
|
|
126
|
+
const appDir = path.join(projectPath, "app");
|
|
127
|
+
for (const [routePath, routeNode] of Object.entries(context.routing.routes)) {
|
|
128
|
+
if (routeNode.type === "page") {
|
|
129
|
+
const relativePath = routePath === "/" ? "" : routePath.slice(1); // remove leading slash
|
|
130
|
+
const targetDir = path.join(appDir, relativePath);
|
|
131
|
+
await fs.ensureDir(targetDir);
|
|
132
|
+
const pageContent = `
|
|
133
|
+
export default function Page() {
|
|
134
|
+
return (
|
|
135
|
+
<div className="container mx-auto py-10">
|
|
136
|
+
<h1 className="text-4xl font-bold">${routeNode.ui?.title || "Page"}</h1>
|
|
137
|
+
<p className="mt-4 text-muted-foreground">${routeNode.ui?.description || ""}</p>
|
|
138
|
+
{/* Components: ${routeNode.ui?.components?.map(c => c.name).join(", ")} */}
|
|
139
|
+
</div>
|
|
140
|
+
);
|
|
141
|
+
}
|
|
142
|
+
`;
|
|
143
|
+
await fs.writeFile(path.join(targetDir, "page.tsx"), pageContent);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
// ... existing methods ...
|
|
148
|
+
/**
|
|
149
|
+
* Create .env file with API keys
|
|
150
|
+
*/
|
|
151
|
+
async createEnvFile(projectPath) {
|
|
152
|
+
// Collect specific keys we care about
|
|
153
|
+
const keys = [];
|
|
154
|
+
if (process.env.GEMINI_API_KEY)
|
|
155
|
+
keys.push(`GEMINI_API_KEY=${process.env.GEMINI_API_KEY}`);
|
|
156
|
+
if (process.env.GOOGLE_API_KEY)
|
|
157
|
+
keys.push(`GOOGLE_API_KEY=${process.env.GOOGLE_API_KEY}`);
|
|
158
|
+
if (process.env.OPENROUTER_API_KEY)
|
|
159
|
+
keys.push(`OPENROUTER_API_KEY=${process.env.OPENROUTER_API_KEY}`);
|
|
160
|
+
// Default InstantDB App ID (Placeholder)
|
|
161
|
+
keys.push(`NEXT_PUBLIC_INSTANT_APP_ID=${process.env.NEXT_PUBLIC_INSTANT_APP_ID || "YOUR_APP_ID_HERE"}`);
|
|
162
|
+
if (keys.length > 0) {
|
|
163
|
+
await fs.writeFile(path.join(projectPath, ".env"), keys.join("\n"));
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Save the MegaContext to .mycontext/context.json
|
|
168
|
+
*/
|
|
169
|
+
async saveContext(projectPath, context) {
|
|
170
|
+
const contextDir = path.join(projectPath, ".mycontext");
|
|
171
|
+
await fs.ensureDir(contextDir);
|
|
172
|
+
await fs.writeJSON(path.join(contextDir, "context.json"), context, { spaces: 2 });
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Create the .mycontext/ALIGN file
|
|
176
|
+
*/
|
|
177
|
+
async createAlign(projectPath) {
|
|
178
|
+
const alignContent = `# MyContext Alignment Guard [SYNC]
|
|
179
|
+
Any changes to code, architecture, or features MUST be synchronized with:
|
|
180
|
+
1. \`.mycontext/context.json\` (Source of Truth / Living Brain)
|
|
181
|
+
2. \`README.md\` (Human-facing orientation & usage)
|
|
182
|
+
|
|
183
|
+
[PHILOSOPHY: DETERMINISTIC SCAFFOLDING]:
|
|
184
|
+
- **Next.js + InstantDB First**: We are built for Next.js full-stack projects using InstantDB as the backend.
|
|
185
|
+
- **Mega Context (100% Knowledge)**:
|
|
186
|
+
- Before ANY code is generated, the MegaContext must be 100% populated.
|
|
187
|
+
|
|
188
|
+
[PROJECT SCANNER — CONTEXT SYNC]:
|
|
189
|
+
- Run \`mycontext scan --assess\` to compare actual code against planned context.json.
|
|
190
|
+
- Identifies routes/components/entities in code but missing from context, and vice versa.
|
|
191
|
+
- Use during development to keep context.json aligned with reality.
|
|
192
|
+
`;
|
|
193
|
+
const contextDir = path.join(projectPath, ".mycontext");
|
|
194
|
+
await fs.ensureDir(contextDir);
|
|
195
|
+
await fs.writeFile(path.join(contextDir, "ALIGN"), alignContent);
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Generate a README.md based on the context
|
|
199
|
+
*/
|
|
200
|
+
async createReadme(projectPath, context) {
|
|
201
|
+
const readmeContent = `# ${context.project.name}
|
|
202
|
+
|
|
203
|
+
${context.project.description}
|
|
204
|
+
|
|
205
|
+
## Tech Stack
|
|
206
|
+
- **Framework**: Next.js (App Router)
|
|
207
|
+
- **Backend**: InstantDB
|
|
208
|
+
- **Styling**: TailwindCSS + ShadCN
|
|
209
|
+
|
|
210
|
+
## Computed Architecture
|
|
211
|
+
- **Roles**: ${context.auth.roles.map(r => r.name).join(", ")}
|
|
212
|
+
- **Entities**: ${Object.keys(context.database.entities).join(", ")}
|
|
213
|
+
- **Routes**: ${Object.keys(context.routing.routes).join(", ")}
|
|
214
|
+
|
|
215
|
+
## Getting Started
|
|
216
|
+
|
|
217
|
+
\`\`\`bash
|
|
218
|
+
pnpm install
|
|
219
|
+
pnpm dev
|
|
220
|
+
\`\`\`
|
|
221
|
+
|
|
222
|
+
Generated by MyContext CLI 🚀
|
|
223
|
+
`;
|
|
224
|
+
await fs.writeFile(path.join(projectPath, "README.md"), readmeContent);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
exports.ScaffoldAgent = ScaffoldAgent;
|
|
228
|
+
//# sourceMappingURL=ScaffoldAgent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScaffoldAgent.js","sourceRoot":"","sources":["../../src/services/ScaffoldAgent.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { TUIClient } from "./TUIClient";
|
|
2
|
+
import { MegaContext } from "../types/mega-context";
|
|
3
|
+
export declare class PlanningMode {
|
|
4
|
+
private client;
|
|
5
|
+
private projectPath;
|
|
6
|
+
constructor(client: TUIClient, projectPath?: string);
|
|
7
|
+
/**
|
|
8
|
+
* Start the AI-driven interview process.
|
|
9
|
+
* If existing context is found, enters refinement mode.
|
|
10
|
+
* Otherwise, starts fresh.
|
|
11
|
+
*/
|
|
12
|
+
start(): Promise<MegaContext>;
|
|
13
|
+
/**
|
|
14
|
+
* Load existing context.json if present (schema-agnostic)
|
|
15
|
+
*/
|
|
16
|
+
private loadExistingContext;
|
|
17
|
+
/**
|
|
18
|
+
* REFINEMENT MODE: Schema-agnostic — works with MegaContext OR Brain format
|
|
19
|
+
*/
|
|
20
|
+
private startRefinementMode;
|
|
21
|
+
/**
|
|
22
|
+
* FRESH MODE: Original clean-slate interview
|
|
23
|
+
*/
|
|
24
|
+
private startFreshMode;
|
|
25
|
+
/**
|
|
26
|
+
* Get or initialize AICore safely
|
|
27
|
+
*/
|
|
28
|
+
private getAICore;
|
|
29
|
+
/**
|
|
30
|
+
* Ensure an API key is available for AI generation
|
|
31
|
+
*/
|
|
32
|
+
private ensureApiKey;
|
|
33
|
+
/**
|
|
34
|
+
* Show API key help
|
|
35
|
+
*/
|
|
36
|
+
private showApiKeyHelp;
|
|
37
|
+
/**
|
|
38
|
+
* Present the context to the user and allow edits
|
|
39
|
+
*/
|
|
40
|
+
private reviewAndRefine;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=PlanningMode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanningMode.d.ts","sourceRoot":"","sources":["../../src/tui/PlanningMode.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAOpD,qBAAa,YAAY;IACvB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,MAAM,EAAE,SAAS,EAAE,WAAW,GAAE,MAAsB;IAKlE;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,WAAW,CAAC;IAWnC;;OAEG;YACW,mBAAmB;IAajC;;OAEG;YACW,mBAAmB;IAwKjC;;OAEG;YACW,cAAc;IAiF5B;;OAEG;IACH,OAAO,CAAC,SAAS;IAYjB;;OAEG;YACW,YAAY;IAiC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IAOtB;;OAEG;YACW,eAAe;CAmC9B"}
|