mycontext-cli 2.0.25 → 2.0.27
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 +184 -37
- package/dist/cli.js +92 -80
- package/dist/cli.js.map +1 -1
- package/dist/commands/build-app.d.ts +6 -1
- package/dist/commands/build-app.d.ts.map +1 -1
- package/dist/commands/build-app.js +97 -9
- package/dist/commands/build-app.js.map +1 -1
- package/dist/commands/compile-prd.d.ts.map +1 -1
- package/dist/commands/compile-prd.js +7 -0
- package/dist/commands/compile-prd.js.map +1 -1
- package/dist/commands/export-progress.d.ts +34 -0
- package/dist/commands/export-progress.d.ts.map +1 -0
- package/dist/commands/export-progress.js +552 -0
- package/dist/commands/export-progress.js.map +1 -0
- package/dist/commands/generate-context-files.d.ts.map +1 -1
- package/dist/commands/generate-context-files.js +10 -2
- package/dist/commands/generate-context-files.js.map +1 -1
- package/dist/commands/generate.d.ts +8 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +212 -0
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/help.d.ts +17 -0
- package/dist/commands/help.d.ts.map +1 -0
- package/dist/commands/help.js +329 -0
- package/dist/commands/help.js.map +1 -0
- package/dist/commands/import-project-plan.d.ts +27 -0
- package/dist/commands/import-project-plan.d.ts.map +1 -0
- package/dist/commands/import-project-plan.js +411 -0
- package/dist/commands/import-project-plan.js.map +1 -0
- package/dist/commands/pm-integration.d.ts +18 -0
- package/dist/commands/pm-integration.d.ts.map +1 -0
- package/dist/commands/pm-integration.js +385 -0
- package/dist/commands/pm-integration.js.map +1 -0
- package/dist/commands/setup-complete.d.ts +16 -0
- package/dist/commands/setup-complete.d.ts.map +1 -0
- package/dist/commands/setup-complete.js +468 -0
- package/dist/commands/setup-complete.js.map +1 -0
- package/dist/commands/setup-shadcn.d.ts +20 -0
- package/dist/commands/setup-shadcn.d.ts.map +1 -0
- package/dist/commands/setup-shadcn.js +241 -0
- package/dist/commands/setup-shadcn.js.map +1 -0
- package/dist/commands/suggest.d.ts +15 -0
- package/dist/commands/suggest.d.ts.map +1 -0
- package/dist/commands/suggest.js +288 -0
- package/dist/commands/suggest.js.map +1 -0
- package/dist/commands/update.d.ts +0 -4
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +7 -197
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/workflow.d.ts +16 -0
- package/dist/commands/workflow.d.ts.map +1 -0
- package/dist/commands/workflow.js +464 -0
- package/dist/commands/workflow.js.map +1 -0
- package/dist/package.json +1 -1
- package/dist/services/PMIntegrationService.d.ts +46 -0
- package/dist/services/PMIntegrationService.d.ts.map +1 -0
- package/dist/services/PMIntegrationService.js +363 -0
- package/dist/services/PMIntegrationService.js.map +1 -0
- package/dist/services/WebhookServer.d.ts +37 -0
- package/dist/services/WebhookServer.d.ts.map +1 -0
- package/dist/services/WebhookServer.js +231 -0
- package/dist/services/WebhookServer.js.map +1 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/types/pm-integration.d.ts +241 -0
- package/dist/types/pm-integration.d.ts.map +1 -0
- package/dist/types/pm-integration.js +24 -0
- package/dist/types/pm-integration.js.map +1 -0
- package/dist/utils/NextJSProjectValidator.d.ts.map +1 -1
- package/dist/utils/NextJSProjectValidator.js +14 -7
- package/dist/utils/NextJSProjectValidator.js.map +1 -1
- package/dist/utils/ProjectStateAnalyzer.d.ts +46 -0
- package/dist/utils/ProjectStateAnalyzer.d.ts.map +1 -0
- package/dist/utils/ProjectStateAnalyzer.js +311 -0
- package/dist/utils/ProjectStateAnalyzer.js.map +1 -0
- package/dist/utils/ProjectStructureValidator.d.ts +12 -0
- package/dist/utils/ProjectStructureValidator.d.ts.map +1 -1
- package/dist/utils/ProjectStructureValidator.js +111 -14
- package/dist/utils/ProjectStructureValidator.js.map +1 -1
- package/dist/utils/claudeAgentClient.d.ts +4 -0
- package/dist/utils/claudeAgentClient.d.ts.map +1 -1
- package/dist/utils/claudeAgentClient.js +90 -20
- package/dist/utils/claudeAgentClient.js.map +1 -1
- package/dist/utils/errorHandler.d.ts +31 -74
- package/dist/utils/errorHandler.d.ts.map +1 -1
- package/dist/utils/errorHandler.js +190 -276
- package/dist/utils/errorHandler.js.map +1 -1
- package/dist/utils/hybridAIClient.js +1 -1
- package/dist/utils/hybridAIClient.js.map +1 -1
- package/dist/utils/mcpTools.d.ts +9 -9
- package/dist/utils/nextStepsSuggester.d.ts +52 -0
- package/dist/utils/nextStepsSuggester.d.ts.map +1 -0
- package/dist/utils/nextStepsSuggester.js +438 -0
- package/dist/utils/nextStepsSuggester.js.map +1 -0
- package/dist/utils/progress.d.ts +31 -1
- package/dist/utils/progress.d.ts.map +1 -1
- package/dist/utils/progress.js +110 -2
- package/dist/utils/progress.js.map +1 -1
- package/dist/utils/workflowEngine.d.ts +96 -0
- package/dist/utils/workflowEngine.d.ts.map +1 -0
- package/dist/utils/workflowEngine.js +793 -0
- package/dist/utils/workflowEngine.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,241 @@
|
|
|
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.SetupShadcnCommand = void 0;
|
|
40
|
+
const child_process_1 = require("child_process");
|
|
41
|
+
const fs = __importStar(require("fs-extra"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
44
|
+
const spinner_1 = require("../utils/spinner");
|
|
45
|
+
class SetupShadcnCommand {
|
|
46
|
+
constructor() {
|
|
47
|
+
this.spinner = new spinner_1.EnhancedSpinner("Setting up shadcn/ui...");
|
|
48
|
+
}
|
|
49
|
+
async execute(options) {
|
|
50
|
+
const projectRoot = process.cwd();
|
|
51
|
+
console.log(chalk_1.default.blue("🎨 Setting up shadcn/ui components...\n"));
|
|
52
|
+
// Check if we're in a Next.js project
|
|
53
|
+
if (!(await this.isValidProject(projectRoot))) {
|
|
54
|
+
console.log(chalk_1.default.red("❌ Not in a valid Next.js project"));
|
|
55
|
+
console.log(" Please run this command from your Next.js project root");
|
|
56
|
+
process.exit(1);
|
|
57
|
+
}
|
|
58
|
+
// Check if shadcn is already initialized
|
|
59
|
+
if ((await this.isShadcnInitialized(projectRoot)) && !options.force) {
|
|
60
|
+
console.log(chalk_1.default.yellow("⚠️ shadcn/ui is already initialized"));
|
|
61
|
+
console.log(" Use --force to reinitialize");
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
// Initialize shadcn/ui first
|
|
65
|
+
await this.initializeShadcn(projectRoot);
|
|
66
|
+
// Install components
|
|
67
|
+
if (options.all) {
|
|
68
|
+
await this.installAllComponents(projectRoot);
|
|
69
|
+
}
|
|
70
|
+
else if (options.components && options.components.length > 0) {
|
|
71
|
+
await this.installSpecificComponents(projectRoot, options.components);
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
// Interactive mode - let user choose
|
|
75
|
+
await this.interactiveComponentInstallation(projectRoot);
|
|
76
|
+
}
|
|
77
|
+
console.log(chalk_1.default.green("\n✅ shadcn/ui setup completed!"));
|
|
78
|
+
console.log(chalk_1.default.gray(" Run: mycontext generate-components all --with-tests"));
|
|
79
|
+
}
|
|
80
|
+
async isValidProject(projectRoot) {
|
|
81
|
+
const packageJsonPath = path.join(projectRoot, "package.json");
|
|
82
|
+
const nextConfigPath = path.join(projectRoot, "next.config.js");
|
|
83
|
+
if (!(await fs.pathExists(packageJsonPath)))
|
|
84
|
+
return false;
|
|
85
|
+
try {
|
|
86
|
+
const packageJson = await fs.readJson(packageJsonPath);
|
|
87
|
+
return !!(packageJson.dependencies?.next || packageJson.devDependencies?.next);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async isShadcnInitialized(projectRoot) {
|
|
94
|
+
const componentsPath = path.join(projectRoot, "components.json");
|
|
95
|
+
const uiPath = path.join(projectRoot, "components", "ui");
|
|
96
|
+
return ((await fs.pathExists(componentsPath)) && (await fs.pathExists(uiPath)));
|
|
97
|
+
}
|
|
98
|
+
async initializeShadcn(projectRoot) {
|
|
99
|
+
console.log(chalk_1.default.cyan("📦 Initializing shadcn/ui..."));
|
|
100
|
+
// Check package manager
|
|
101
|
+
const packageManager = await this.detectPackageManager(projectRoot);
|
|
102
|
+
// Run shadcn init
|
|
103
|
+
await this.runShadcnCommand(projectRoot, packageManager, ["init", "--yes"]);
|
|
104
|
+
}
|
|
105
|
+
async installAllComponents(projectRoot) {
|
|
106
|
+
console.log(chalk_1.default.cyan("\n📦 Installing all essential shadcn/ui components..."));
|
|
107
|
+
console.log(chalk_1.default.gray(" This may take a few minutes...\n"));
|
|
108
|
+
const components = [
|
|
109
|
+
"accordion",
|
|
110
|
+
"alert",
|
|
111
|
+
"alert-dialog",
|
|
112
|
+
"aspect-ratio",
|
|
113
|
+
"avatar",
|
|
114
|
+
"badge",
|
|
115
|
+
"breadcrumb",
|
|
116
|
+
"button",
|
|
117
|
+
"calendar",
|
|
118
|
+
"card",
|
|
119
|
+
"carousel",
|
|
120
|
+
"chart",
|
|
121
|
+
"checkbox",
|
|
122
|
+
"collapsible",
|
|
123
|
+
"command",
|
|
124
|
+
"context-menu",
|
|
125
|
+
"dialog",
|
|
126
|
+
"drawer",
|
|
127
|
+
"dropdown-menu",
|
|
128
|
+
"form",
|
|
129
|
+
"hover-card",
|
|
130
|
+
"input",
|
|
131
|
+
"input-otp",
|
|
132
|
+
"label",
|
|
133
|
+
"menubar",
|
|
134
|
+
"navigation-menu",
|
|
135
|
+
"pagination",
|
|
136
|
+
"popover",
|
|
137
|
+
"progress",
|
|
138
|
+
"radio-group",
|
|
139
|
+
"resizable",
|
|
140
|
+
"scroll-area",
|
|
141
|
+
"select",
|
|
142
|
+
"separator",
|
|
143
|
+
"sheet",
|
|
144
|
+
"sidebar",
|
|
145
|
+
"skeleton",
|
|
146
|
+
"slider",
|
|
147
|
+
"sonner",
|
|
148
|
+
"switch",
|
|
149
|
+
"table",
|
|
150
|
+
"tabs",
|
|
151
|
+
"textarea",
|
|
152
|
+
"toggle",
|
|
153
|
+
"toggle-group",
|
|
154
|
+
"tooltip",
|
|
155
|
+
"field",
|
|
156
|
+
"button-group",
|
|
157
|
+
"empty",
|
|
158
|
+
"input-group",
|
|
159
|
+
"spinner",
|
|
160
|
+
];
|
|
161
|
+
const packageManager = await this.detectPackageManager(projectRoot);
|
|
162
|
+
// Install components in batches to avoid overwhelming the terminal
|
|
163
|
+
const batchSize = 10;
|
|
164
|
+
for (let i = 0; i < components.length; i += batchSize) {
|
|
165
|
+
const batch = components.slice(i, i + batchSize);
|
|
166
|
+
console.log(chalk_1.default.gray(` Installing batch ${Math.floor(i / batchSize) + 1}/${Math.ceil(components.length / batchSize)}: ${batch.join(", ")}`));
|
|
167
|
+
await this.runShadcnCommand(projectRoot, packageManager, [
|
|
168
|
+
"add",
|
|
169
|
+
...batch,
|
|
170
|
+
]);
|
|
171
|
+
// Small delay between batches
|
|
172
|
+
if (i + batchSize < components.length) {
|
|
173
|
+
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async installSpecificComponents(projectRoot, components) {
|
|
178
|
+
console.log(chalk_1.default.cyan(`\n📦 Installing ${components.length} shadcn/ui components...`));
|
|
179
|
+
const packageManager = await this.detectPackageManager(projectRoot);
|
|
180
|
+
await this.runShadcnCommand(projectRoot, packageManager, [
|
|
181
|
+
"add",
|
|
182
|
+
...components,
|
|
183
|
+
]);
|
|
184
|
+
}
|
|
185
|
+
async interactiveComponentInstallation(projectRoot) {
|
|
186
|
+
console.log(chalk_1.default.cyan("\n📦 Interactive shadcn/ui component installation"));
|
|
187
|
+
console.log(chalk_1.default.gray(" You will now interact directly with shadcn/ui CLI\n"));
|
|
188
|
+
const packageManager = await this.detectPackageManager(projectRoot);
|
|
189
|
+
// Provide instructions to user
|
|
190
|
+
console.log(chalk_1.default.yellow("💡 Instructions:"));
|
|
191
|
+
console.log(" • Select the components you need");
|
|
192
|
+
console.log(" • Use spacebar to select/deselect components");
|
|
193
|
+
console.log(" • Press Enter to confirm selection");
|
|
194
|
+
console.log(" • Press Ctrl+C to cancel\n");
|
|
195
|
+
// Let user interact with shadcn directly
|
|
196
|
+
await this.runShadcnCommand(projectRoot, packageManager, ["add"]);
|
|
197
|
+
}
|
|
198
|
+
async runShadcnCommand(projectRoot, packageManager, args) {
|
|
199
|
+
return new Promise((resolve, reject) => {
|
|
200
|
+
const command = packageManager === "npm"
|
|
201
|
+
? "npx"
|
|
202
|
+
: packageManager === "pnpm"
|
|
203
|
+
? "pnpm dlx"
|
|
204
|
+
: "yarn dlx";
|
|
205
|
+
const fullCommand = [command, "shadcn@latest", ...args];
|
|
206
|
+
console.log(chalk_1.default.gray(` Running: ${fullCommand.join(" ")}`));
|
|
207
|
+
const child = (0, child_process_1.spawn)(command, ["shadcn@latest", ...args], {
|
|
208
|
+
cwd: projectRoot,
|
|
209
|
+
stdio: "inherit", // Pass all stdio directly to user
|
|
210
|
+
shell: true,
|
|
211
|
+
});
|
|
212
|
+
child.on("close", (code) => {
|
|
213
|
+
if (code === 0) {
|
|
214
|
+
resolve();
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
reject(new Error(`shadcn command failed with code ${code}`));
|
|
218
|
+
}
|
|
219
|
+
});
|
|
220
|
+
child.on("error", (error) => {
|
|
221
|
+
reject(error);
|
|
222
|
+
});
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
async detectPackageManager(projectRoot) {
|
|
226
|
+
// Check for lock files
|
|
227
|
+
const pnpmLock = path.join(projectRoot, "pnpm-lock.yaml");
|
|
228
|
+
const yarnLock = path.join(projectRoot, "yarn.lock");
|
|
229
|
+
const packageLock = path.join(projectRoot, "package-lock.json");
|
|
230
|
+
if (await fs.pathExists(pnpmLock))
|
|
231
|
+
return "pnpm";
|
|
232
|
+
if (await fs.pathExists(yarnLock))
|
|
233
|
+
return "yarn";
|
|
234
|
+
if (await fs.pathExists(packageLock))
|
|
235
|
+
return "npm";
|
|
236
|
+
// Default to npm if no lock file found
|
|
237
|
+
return "npm";
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
exports.SetupShadcnCommand = SetupShadcnCommand;
|
|
241
|
+
//# sourceMappingURL=setup-shadcn.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-shadcn.js","sourceRoot":"","sources":["../../src/commands/setup-shadcn.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export declare class SuggestCommand {
|
|
3
|
+
private program;
|
|
4
|
+
constructor(program: Command);
|
|
5
|
+
execute(options: {
|
|
6
|
+
command?: string;
|
|
7
|
+
limit?: number;
|
|
8
|
+
}): Promise<void>;
|
|
9
|
+
private showContextSuggestions;
|
|
10
|
+
private suggestSimilarCommands;
|
|
11
|
+
private getAllCommands;
|
|
12
|
+
private findSimilarCommands;
|
|
13
|
+
private calculateSimilarity;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=suggest.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.d.ts","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,qBAAa,cAAc;IACzB,OAAO,CAAC,OAAO,CAAU;gBAEb,OAAO,EAAE,OAAO;IAItB,OAAO,CAAC,OAAO,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC;YAU7D,sBAAsB;YA+CtB,sBAAsB;IAyDpC,OAAO,CAAC,cAAc;IA4JtB,OAAO,CAAC,mBAAmB;IA0C3B,OAAO,CAAC,mBAAmB;CAkD5B"}
|
|
@@ -0,0 +1,288 @@
|
|
|
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.SuggestCommand = void 0;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const nextStepsSuggester_1 = require("../utils/nextStepsSuggester");
|
|
9
|
+
class SuggestCommand {
|
|
10
|
+
constructor(program) {
|
|
11
|
+
this.program = program;
|
|
12
|
+
}
|
|
13
|
+
async execute(options) {
|
|
14
|
+
const projectRoot = process.cwd();
|
|
15
|
+
if (options.command) {
|
|
16
|
+
await this.suggestSimilarCommands(options.command, options.limit);
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
await this.showContextSuggestions(projectRoot);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
async showContextSuggestions(projectRoot) {
|
|
23
|
+
console.log(chalk_1.default.blue("💡 Context-Aware Suggestions\n"));
|
|
24
|
+
// Get intelligent suggestions based on project state
|
|
25
|
+
const suggestions = await nextStepsSuggester_1.NextStepsSuggester.getIntelligentSuggestions(projectRoot);
|
|
26
|
+
if (suggestions.length === 0) {
|
|
27
|
+
console.log(chalk_1.default.green("🎉 Your project appears to be complete!"));
|
|
28
|
+
console.log(chalk_1.default.gray("No suggestions needed at this time."));
|
|
29
|
+
console.log();
|
|
30
|
+
console.log(chalk_1.default.yellow("Available commands if you need them:"));
|
|
31
|
+
console.log(` ${chalk_1.default.cyan("mycontext status")} - Check project status`);
|
|
32
|
+
console.log(` ${chalk_1.default.cyan("mycontext validate")} - Validate project quality`);
|
|
33
|
+
console.log(` ${chalk_1.default.cyan("mycontext workflow list")} - See available workflows`);
|
|
34
|
+
return;
|
|
35
|
+
}
|
|
36
|
+
console.log(chalk_1.default.green("Recommended Actions:"));
|
|
37
|
+
suggestions.slice(0, 5).forEach((suggestion, index) => {
|
|
38
|
+
console.log(` ${index + 1}. ${suggestion.description}`);
|
|
39
|
+
console.log(chalk_1.default.gray(` ${suggestion.command}`));
|
|
40
|
+
if (suggestion.context) {
|
|
41
|
+
console.log(chalk_1.default.gray(` ℹ️ ${suggestion.context}`));
|
|
42
|
+
}
|
|
43
|
+
console.log();
|
|
44
|
+
});
|
|
45
|
+
console.log(chalk_1.default.yellow("Quick Commands:"));
|
|
46
|
+
console.log(` ${chalk_1.default.cyan("mycontext setup-complete --auto-continue")} - Complete project setup`);
|
|
47
|
+
console.log(` ${chalk_1.default.cyan("mycontext workflow suggest")} - More workflow suggestions`);
|
|
48
|
+
console.log(` ${chalk_1.default.cyan("mycontext help")} - Context-aware help`);
|
|
49
|
+
}
|
|
50
|
+
async suggestSimilarCommands(input, limit = 5) {
|
|
51
|
+
const availableCommands = this.getAllCommands();
|
|
52
|
+
const matches = this.findSimilarCommands(input, availableCommands);
|
|
53
|
+
if (matches.length === 0) {
|
|
54
|
+
console.log(chalk_1.default.red(`❌ No commands found similar to "${input}"`));
|
|
55
|
+
console.log();
|
|
56
|
+
console.log(chalk_1.default.yellow("💡 Try these instead:"));
|
|
57
|
+
console.log(` ${chalk_1.default.cyan("mycontext help")} - Show available commands`);
|
|
58
|
+
console.log(` ${chalk_1.default.cyan("mycontext suggest")} - Get context-aware suggestions`);
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
console.log(chalk_1.default.blue(`🔍 Suggestions for "${input}"\n`));
|
|
62
|
+
matches.slice(0, limit).forEach((match, index) => {
|
|
63
|
+
const similarityPercent = Math.round(match.similarity * 100);
|
|
64
|
+
const similarityIcon = similarityPercent > 80 ? "🎯" : similarityPercent > 60 ? "💡" : "🤔";
|
|
65
|
+
console.log(`${index + 1}. ${similarityIcon} ${chalk_1.default.cyan(match.command)}`);
|
|
66
|
+
console.log(` ${match.description}`);
|
|
67
|
+
console.log(chalk_1.default.gray(` Category: ${match.category} • Similarity: ${similarityPercent}%`));
|
|
68
|
+
console.log();
|
|
69
|
+
});
|
|
70
|
+
if (matches.length > limit) {
|
|
71
|
+
console.log(chalk_1.default.gray(`... and ${matches.length - limit} more suggestions`));
|
|
72
|
+
}
|
|
73
|
+
console.log(chalk_1.default.yellow("💡 Pro Tips:"));
|
|
74
|
+
console.log(chalk_1.default.gray(" • Use tab completion for faster command entry"));
|
|
75
|
+
console.log(chalk_1.default.gray(" • Run 'mycontext help' for detailed command reference"));
|
|
76
|
+
console.log(chalk_1.default.gray(" • Use 'mycontext suggest' for context-aware recommendations"));
|
|
77
|
+
}
|
|
78
|
+
getAllCommands() {
|
|
79
|
+
return [
|
|
80
|
+
// Core commands
|
|
81
|
+
{
|
|
82
|
+
command: "init <project-name>",
|
|
83
|
+
description: "Initialize a new MyContext project",
|
|
84
|
+
category: "Setup",
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
command: "setup-complete",
|
|
88
|
+
description: "Analyze and complete project setup automatically",
|
|
89
|
+
category: "Setup",
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
command: "generate <type>",
|
|
93
|
+
description: "Generate code, types, components, or architecture",
|
|
94
|
+
category: "Generation",
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
command: "generate-components [target]",
|
|
98
|
+
description: "Generate React components with AI",
|
|
99
|
+
category: "Generation",
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
command: "generate-context-files",
|
|
103
|
+
description: "Generate detailed project context files",
|
|
104
|
+
category: "Generation",
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
command: "compile-prd",
|
|
108
|
+
description: "Compile comprehensive PRD from context files",
|
|
109
|
+
category: "Generation",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
command: "validate [target]",
|
|
113
|
+
description: "Validate project quality and structure",
|
|
114
|
+
category: "Quality",
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
command: "status",
|
|
118
|
+
description: "Show current project status and health",
|
|
119
|
+
category: "Info",
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
command: "help [topic]",
|
|
123
|
+
description: "Show context-aware help and guidance",
|
|
124
|
+
category: "Info",
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
command: "suggest [command]",
|
|
128
|
+
description: "Get command suggestions and recommendations",
|
|
129
|
+
category: "Info",
|
|
130
|
+
},
|
|
131
|
+
// Workflow commands
|
|
132
|
+
{
|
|
133
|
+
command: "workflow list",
|
|
134
|
+
description: "List all available workflows",
|
|
135
|
+
category: "Workflow",
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
command: "workflow start <id>",
|
|
139
|
+
description: "Start a specific workflow",
|
|
140
|
+
category: "Workflow",
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
command: "workflow status",
|
|
144
|
+
description: "Check current workflow progress",
|
|
145
|
+
category: "Workflow",
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
command: "workflow continue",
|
|
149
|
+
description: "Resume the current workflow",
|
|
150
|
+
category: "Workflow",
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
command: "workflow stop",
|
|
154
|
+
description: "Stop the current workflow",
|
|
155
|
+
category: "Workflow",
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
command: "workflow suggest",
|
|
159
|
+
description: "Get intelligent workflow recommendations",
|
|
160
|
+
category: "Workflow",
|
|
161
|
+
},
|
|
162
|
+
// Setup commands
|
|
163
|
+
{
|
|
164
|
+
command: "setup-shadcn",
|
|
165
|
+
description: "Configure shadcn/ui component library",
|
|
166
|
+
category: "Setup",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
command: "setup-instantdb",
|
|
170
|
+
description: "Configure InstantDB for real-time data",
|
|
171
|
+
category: "Setup",
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
command: "setup-database",
|
|
175
|
+
description: "Set up database configuration",
|
|
176
|
+
category: "Setup",
|
|
177
|
+
},
|
|
178
|
+
// Utility commands
|
|
179
|
+
{
|
|
180
|
+
command: "promote",
|
|
181
|
+
description: "Move components from development to production",
|
|
182
|
+
category: "Deployment",
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
command: "preview",
|
|
186
|
+
description: "Preview generated components",
|
|
187
|
+
category: "Development",
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
command: "agent-flow",
|
|
191
|
+
description: "Manage AI agent workflows",
|
|
192
|
+
category: "AI",
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
command: "generate-todos",
|
|
196
|
+
description: "Generate TODO items from PRD",
|
|
197
|
+
category: "Planning",
|
|
198
|
+
},
|
|
199
|
+
{
|
|
200
|
+
command: "sanitize",
|
|
201
|
+
description: "Clean and sanitize project files",
|
|
202
|
+
category: "Maintenance",
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
command: "build-strategy",
|
|
206
|
+
description: "Generate build and deployment strategies",
|
|
207
|
+
category: "Deployment",
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
command: "health-check",
|
|
211
|
+
description: "Check system and provider health",
|
|
212
|
+
category: "Info",
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
command: "migrate",
|
|
216
|
+
description: "Migrate project configuration",
|
|
217
|
+
category: "Maintenance",
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
command: "update",
|
|
221
|
+
description: "Update MyContext CLI to latest version",
|
|
222
|
+
category: "Maintenance",
|
|
223
|
+
},
|
|
224
|
+
];
|
|
225
|
+
}
|
|
226
|
+
findSimilarCommands(input, commands) {
|
|
227
|
+
const inputLower = input.toLowerCase();
|
|
228
|
+
const matches = [];
|
|
229
|
+
for (const cmd of commands) {
|
|
230
|
+
const commandSimilarity = this.calculateSimilarity(inputLower, cmd.command.toLowerCase());
|
|
231
|
+
const descriptionSimilarity = this.calculateSimilarity(inputLower, cmd.description.toLowerCase());
|
|
232
|
+
const categorySimilarity = this.calculateSimilarity(inputLower, cmd.category.toLowerCase());
|
|
233
|
+
const maxSimilarity = Math.max(commandSimilarity, descriptionSimilarity, categorySimilarity);
|
|
234
|
+
if (maxSimilarity > 0.3) {
|
|
235
|
+
// Only include reasonably similar matches
|
|
236
|
+
matches.push({
|
|
237
|
+
command: cmd.command,
|
|
238
|
+
description: cmd.description,
|
|
239
|
+
similarity: maxSimilarity,
|
|
240
|
+
category: cmd.category,
|
|
241
|
+
});
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
// Sort by similarity (highest first)
|
|
245
|
+
return matches.sort((a, b) => b.similarity - a.similarity);
|
|
246
|
+
}
|
|
247
|
+
calculateSimilarity(str1, str2) {
|
|
248
|
+
if (str1 === str2)
|
|
249
|
+
return 1.0;
|
|
250
|
+
// Simple fuzzy matching using substring similarity
|
|
251
|
+
const len1 = str1.length;
|
|
252
|
+
const len2 = str2.length;
|
|
253
|
+
if (len1 === 0)
|
|
254
|
+
return len2 === 0 ? 1.0 : 0.0;
|
|
255
|
+
if (len2 === 0)
|
|
256
|
+
return 0.0;
|
|
257
|
+
// Check for exact substring matches
|
|
258
|
+
if (str2.toLowerCase().includes(str1.toLowerCase()) ||
|
|
259
|
+
str1.toLowerCase().includes(str2.toLowerCase())) {
|
|
260
|
+
return 0.8; // High similarity for substring matches
|
|
261
|
+
}
|
|
262
|
+
// Calculate word overlap
|
|
263
|
+
const words1 = str1.toLowerCase().split(/[\s\-_]+/);
|
|
264
|
+
const words2 = str2.toLowerCase().split(/[\s\-_]+/);
|
|
265
|
+
let commonWords = 0;
|
|
266
|
+
for (const word1 of words1) {
|
|
267
|
+
if (words2.some((word2) => word2.includes(word1) || word1.includes(word2))) {
|
|
268
|
+
commonWords++;
|
|
269
|
+
}
|
|
270
|
+
}
|
|
271
|
+
const wordSimilarity = commonWords / Math.max(words1.length, words2.length);
|
|
272
|
+
// Character-level similarity (simple)
|
|
273
|
+
let charMatches = 0;
|
|
274
|
+
const shorter = len1 < len2 ? str1 : str2;
|
|
275
|
+
const longer = len1 < len2 ? str2 : str1;
|
|
276
|
+
for (let i = 0; i < shorter.length; i++) {
|
|
277
|
+
const char = shorter[i];
|
|
278
|
+
if (char && longer.includes(char)) {
|
|
279
|
+
charMatches++;
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
const charSimilarity = charMatches / shorter.length;
|
|
283
|
+
// Combine word and character similarity
|
|
284
|
+
return wordSimilarity * 0.7 + charSimilarity * 0.3;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
exports.SuggestCommand = SuggestCommand;
|
|
288
|
+
//# sourceMappingURL=suggest.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"suggest.js","sourceRoot":"","sources":["../../src/commands/suggest.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa;IAClB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../src/commands/update.ts"],"names":[],"mappings":"AAIA,qBAAa,aAAa;IAClB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;YAehB,UAAU;CAoBzB"}
|