@symplek/cli 0.0.0-stage → 0.2.0-beta.0
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/CHANGELOG.md +47 -0
- package/LICENSE +21 -0
- package/README.md +74 -2
- package/bin/symplek.js +5 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +44 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/add.d.ts +36 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +467 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/generate.d.ts +26 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +491 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +46 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +350 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/migrate.d.ts +41 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +518 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/validate.d.ts +252 -0
- package/dist/commands/validate.d.ts.map +1 -0
- package/dist/commands/validate.js +515 -0
- package/dist/commands/validate.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +46 -0
- package/dist/index.js.map +1 -0
- package/dist/models.d.ts +24 -0
- package/dist/models.d.ts.map +1 -0
- package/dist/models.js +39 -0
- package/dist/models.js.map +1 -0
- package/dist/naming.d.ts +20 -0
- package/dist/naming.d.ts.map +1 -0
- package/dist/naming.js +48 -0
- package/dist/naming.js.map +1 -0
- package/dist/templates/agent/agent.ts.template +41 -0
- package/dist/templates/agent/general.yaml.template +34 -0
- package/dist/templates/agent/researcher.yaml.template +42 -0
- package/dist/templates/agent/reviewer.yaml.template +51 -0
- package/dist/templates/project/full/.github/workflows/ci.yml.template +34 -0
- package/dist/templates/project/full/.gitignore.template +6 -0
- package/dist/templates/project/full/Dockerfile.template +43 -0
- package/dist/templates/project/full/README.md.template +77 -0
- package/dist/templates/project/full/agents/example.yaml.template +16 -0
- package/dist/templates/project/full/package.json.template +30 -0
- package/dist/templates/project/full/src/index.ts.template +43 -0
- package/dist/templates/project/full/src/symplek.config.ts.template +20 -0
- package/dist/templates/project/full/src/tools/index.ts.template +73 -0
- package/dist/templates/project/full/tests/example.test.ts.template +49 -0
- package/dist/templates/project/full/tsconfig.json.template +18 -0
- package/dist/templates/project/minimal/.gitignore.template +6 -0
- package/dist/templates/project/minimal/agents/example.yaml.template +16 -0
- package/dist/templates/project/minimal/package.json.template +27 -0
- package/dist/templates/project/minimal/src/index.ts.template +43 -0
- package/dist/templates/project/minimal/src/symplek.config.ts.template +20 -0
- package/dist/templates/project/minimal/tsconfig.json.template +18 -0
- package/dist/templates/project/standard/.gitignore.template +6 -0
- package/dist/templates/project/standard/README.md.template +77 -0
- package/dist/templates/project/standard/agents/example.yaml.template +16 -0
- package/dist/templates/project/standard/package.json.template +30 -0
- package/dist/templates/project/standard/src/index.ts.template +43 -0
- package/dist/templates/project/standard/src/symplek.config.ts.template +20 -0
- package/dist/templates/project/standard/src/tools/index.ts.template +73 -0
- package/dist/templates/project/standard/tests/example.test.ts.template +49 -0
- package/dist/templates/project/standard/tsconfig.json.template +18 -0
- package/dist/utils/templates.d.ts +41 -0
- package/dist/utils/templates.d.ts.map +1 -0
- package/dist/utils/templates.js +133 -0
- package/dist/utils/templates.js.map +1 -0
- package/package.json +60 -3
|
@@ -0,0 +1,350 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* symplek init command - scaffolds new Symplek projects
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.promptForConfig = promptForConfig;
|
|
10
|
+
exports.createProject = createProject;
|
|
11
|
+
exports.installDependencies = installDependencies;
|
|
12
|
+
exports.printSuccess = printSuccess;
|
|
13
|
+
exports.initCommand = initCommand;
|
|
14
|
+
const node_child_process_1 = require("node:child_process");
|
|
15
|
+
const node_fs_1 = require("node:fs");
|
|
16
|
+
const node_path_1 = require("node:path");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const commander_1 = require("commander");
|
|
19
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
20
|
+
const ora_1 = __importDefault(require("ora"));
|
|
21
|
+
const templates_js_1 = require("../utils/templates.js");
|
|
22
|
+
/** Validate project name is kebab-case (lowercase start, alphanumeric/hyphen body) */
|
|
23
|
+
function isValidProjectName(name) {
|
|
24
|
+
return /^[a-z][a-zA-Z0-9-]*[a-zA-Z0-9]$/.test(name) || /^[a-z]$/.test(name);
|
|
25
|
+
}
|
|
26
|
+
/** Detect package manager from lockfiles in current directory */
|
|
27
|
+
function detectPackageManager() {
|
|
28
|
+
if ((0, node_fs_1.existsSync)("pnpm-lock.yaml"))
|
|
29
|
+
return "pnpm";
|
|
30
|
+
if ((0, node_fs_1.existsSync)("yarn.lock"))
|
|
31
|
+
return "yarn";
|
|
32
|
+
if ((0, node_fs_1.existsSync)("bun.lockb"))
|
|
33
|
+
return "bun";
|
|
34
|
+
return "npm";
|
|
35
|
+
}
|
|
36
|
+
/** Get install command for package manager */
|
|
37
|
+
function getInstallCommand(pm) {
|
|
38
|
+
switch (pm) {
|
|
39
|
+
case "npm":
|
|
40
|
+
return ["npm", "install"];
|
|
41
|
+
case "pnpm":
|
|
42
|
+
return ["pnpm", "install"];
|
|
43
|
+
case "yarn":
|
|
44
|
+
return ["yarn"];
|
|
45
|
+
case "bun":
|
|
46
|
+
return ["bun", "install"];
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Get project name from options or prompt
|
|
51
|
+
*/
|
|
52
|
+
async function getProjectName(options) {
|
|
53
|
+
if (options.name) {
|
|
54
|
+
if (!isValidProjectName(options.name)) {
|
|
55
|
+
console.error(chalk_1.default.red(`Invalid project name: ${options.name}`));
|
|
56
|
+
console.error(chalk_1.default.yellow("Project name must be kebab-case (e.g., my-agent)"));
|
|
57
|
+
process.exit(1);
|
|
58
|
+
}
|
|
59
|
+
return options.name;
|
|
60
|
+
}
|
|
61
|
+
if (options.yes) {
|
|
62
|
+
return "my-symplek-project";
|
|
63
|
+
}
|
|
64
|
+
const { name } = await inquirer_1.default.prompt([
|
|
65
|
+
{
|
|
66
|
+
type: "input",
|
|
67
|
+
name: "name",
|
|
68
|
+
message: "Project name:",
|
|
69
|
+
default: "my-symplek-project",
|
|
70
|
+
validate: (input) => {
|
|
71
|
+
if (!input.trim()) {
|
|
72
|
+
return "Project name is required";
|
|
73
|
+
}
|
|
74
|
+
if (!isValidProjectName(input)) {
|
|
75
|
+
return "Project name must be kebab-case (e.g., my-agent)";
|
|
76
|
+
}
|
|
77
|
+
if ((0, node_fs_1.existsSync)(input)) {
|
|
78
|
+
return `Directory "${input}" already exists`;
|
|
79
|
+
}
|
|
80
|
+
return true;
|
|
81
|
+
},
|
|
82
|
+
},
|
|
83
|
+
]);
|
|
84
|
+
return name;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get template from options or prompt
|
|
88
|
+
*/
|
|
89
|
+
async function getTemplate(options) {
|
|
90
|
+
if (options.template) {
|
|
91
|
+
if (!["minimal", "standard", "full"].includes(options.template)) {
|
|
92
|
+
console.error(chalk_1.default.red(`Invalid template: ${options.template}`));
|
|
93
|
+
console.error(chalk_1.default.yellow("Valid templates: minimal, standard, full"));
|
|
94
|
+
process.exit(1);
|
|
95
|
+
}
|
|
96
|
+
return options.template;
|
|
97
|
+
}
|
|
98
|
+
if (options.yes) {
|
|
99
|
+
return "standard";
|
|
100
|
+
}
|
|
101
|
+
const { template } = await inquirer_1.default.prompt([
|
|
102
|
+
{
|
|
103
|
+
type: "list",
|
|
104
|
+
name: "template",
|
|
105
|
+
message: "Select project template:",
|
|
106
|
+
choices: [
|
|
107
|
+
{
|
|
108
|
+
name: "minimal - Basic setup with core dependencies",
|
|
109
|
+
value: "minimal",
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
name: "standard - Includes tools, tests, and README",
|
|
113
|
+
value: "standard",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: "full - Complete setup with CI/CD and Docker",
|
|
117
|
+
value: "full",
|
|
118
|
+
},
|
|
119
|
+
],
|
|
120
|
+
default: "standard",
|
|
121
|
+
},
|
|
122
|
+
]);
|
|
123
|
+
return template;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get package manager from options or prompt
|
|
127
|
+
*/
|
|
128
|
+
async function getPackageManager(options) {
|
|
129
|
+
if (options.pm) {
|
|
130
|
+
if (!["npm", "pnpm", "yarn", "bun"].includes(options.pm)) {
|
|
131
|
+
console.error(chalk_1.default.red(`Invalid package manager: ${options.pm}`));
|
|
132
|
+
console.error(chalk_1.default.yellow("Valid options: npm, pnpm, yarn, bun"));
|
|
133
|
+
process.exit(1);
|
|
134
|
+
}
|
|
135
|
+
return options.pm;
|
|
136
|
+
}
|
|
137
|
+
if (options.yes) {
|
|
138
|
+
return detectPackageManager();
|
|
139
|
+
}
|
|
140
|
+
const detected = detectPackageManager();
|
|
141
|
+
const { packageManager } = await inquirer_1.default.prompt([
|
|
142
|
+
{
|
|
143
|
+
type: "list",
|
|
144
|
+
name: "packageManager",
|
|
145
|
+
message: "Select package manager:",
|
|
146
|
+
choices: [
|
|
147
|
+
{ name: "npm", value: "npm" },
|
|
148
|
+
{ name: "pnpm (recommended)", value: "pnpm" },
|
|
149
|
+
{ name: "yarn", value: "yarn" },
|
|
150
|
+
{ name: "bun", value: "bun" },
|
|
151
|
+
],
|
|
152
|
+
default: detected,
|
|
153
|
+
},
|
|
154
|
+
]);
|
|
155
|
+
return packageManager;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Get TypeScript config from options or prompt
|
|
159
|
+
*/
|
|
160
|
+
async function getTypeScriptConfig(options) {
|
|
161
|
+
if (options.yes) {
|
|
162
|
+
return "strict";
|
|
163
|
+
}
|
|
164
|
+
const { typescript } = await inquirer_1.default.prompt([
|
|
165
|
+
{
|
|
166
|
+
type: "list",
|
|
167
|
+
name: "typescript",
|
|
168
|
+
message: "TypeScript configuration:",
|
|
169
|
+
choices: [
|
|
170
|
+
{
|
|
171
|
+
name: "strict - Recommended for new projects",
|
|
172
|
+
value: "strict",
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
name: "standard - More lenient settings",
|
|
176
|
+
value: "standard",
|
|
177
|
+
},
|
|
178
|
+
],
|
|
179
|
+
default: "strict",
|
|
180
|
+
},
|
|
181
|
+
]);
|
|
182
|
+
return typescript;
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Prompt user for project configuration
|
|
186
|
+
*/
|
|
187
|
+
async function promptForConfig(options) {
|
|
188
|
+
// Get project name
|
|
189
|
+
const name = await getProjectName(options);
|
|
190
|
+
// Check if directory exists
|
|
191
|
+
if ((0, node_fs_1.existsSync)(name)) {
|
|
192
|
+
console.error(chalk_1.default.red(`Directory "${name}" already exists`));
|
|
193
|
+
process.exit(1);
|
|
194
|
+
}
|
|
195
|
+
// Get remaining config
|
|
196
|
+
const template = await getTemplate(options);
|
|
197
|
+
const packageManager = await getPackageManager(options);
|
|
198
|
+
const typescript = await getTypeScriptConfig(options);
|
|
199
|
+
return {
|
|
200
|
+
name,
|
|
201
|
+
template,
|
|
202
|
+
packageManager,
|
|
203
|
+
typescript,
|
|
204
|
+
targetDir: (0, node_path_1.join)(process.cwd(), name),
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Recursively copy template files to target directory
|
|
209
|
+
*/
|
|
210
|
+
function copyTemplateDir(templateDir, targetDir, vars) {
|
|
211
|
+
const entries = (0, node_fs_1.readdirSync)(templateDir);
|
|
212
|
+
for (const entry of entries) {
|
|
213
|
+
const srcPath = (0, node_path_1.join)(templateDir, entry);
|
|
214
|
+
const stat = (0, node_fs_1.statSync)(srcPath);
|
|
215
|
+
if (stat.isDirectory()) {
|
|
216
|
+
const destDir = (0, node_path_1.join)(targetDir, entry);
|
|
217
|
+
(0, node_fs_1.mkdirSync)(destDir, { recursive: true });
|
|
218
|
+
copyTemplateDir(srcPath, destDir, vars);
|
|
219
|
+
}
|
|
220
|
+
else if (entry.endsWith(".template")) {
|
|
221
|
+
// Remove .template extension and process content
|
|
222
|
+
const destPath = (0, node_path_1.join)(targetDir, entry.replace(".template", ""));
|
|
223
|
+
const content = (0, node_fs_1.readFileSync)(srcPath, "utf-8");
|
|
224
|
+
const processed = (0, templates_js_1.processTemplate)(content, vars);
|
|
225
|
+
// Ensure parent directory exists
|
|
226
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(destPath), { recursive: true });
|
|
227
|
+
(0, node_fs_1.writeFileSync)(destPath, processed, "utf-8");
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Create project from template
|
|
233
|
+
*/
|
|
234
|
+
async function createProject(config) {
|
|
235
|
+
const spinner = (0, ora_1.default)("Creating project files...").start();
|
|
236
|
+
try {
|
|
237
|
+
// Create target directory
|
|
238
|
+
(0, node_fs_1.mkdirSync)(config.targetDir, { recursive: true });
|
|
239
|
+
// Get template variables
|
|
240
|
+
const vars = {
|
|
241
|
+
...(0, templates_js_1.getDefaultVars)(config.name),
|
|
242
|
+
strict: config.typescript === "strict" ? "true" : "false",
|
|
243
|
+
};
|
|
244
|
+
// Get template path and copy files
|
|
245
|
+
const templatePath = (0, templates_js_1.getProjectTemplatePath)(config.template);
|
|
246
|
+
copyTemplateDir(templatePath, config.targetDir, vars);
|
|
247
|
+
spinner.succeed(chalk_1.default.green("Project files created"));
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
spinner.fail(chalk_1.default.red("Failed to create project files"));
|
|
251
|
+
throw error;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Install project dependencies
|
|
256
|
+
*/
|
|
257
|
+
async function installDependencies(packageManager, targetDir) {
|
|
258
|
+
const spinner = (0, ora_1.default)(`Installing dependencies with ${packageManager}...`).start();
|
|
259
|
+
return new Promise((resolve, reject) => {
|
|
260
|
+
const [cmd, ...args] = getInstallCommand(packageManager);
|
|
261
|
+
const child = (0, node_child_process_1.spawn)(cmd, args, {
|
|
262
|
+
cwd: targetDir,
|
|
263
|
+
stdio: "pipe",
|
|
264
|
+
shell: process.platform === "win32",
|
|
265
|
+
});
|
|
266
|
+
let stderr = "";
|
|
267
|
+
// Drain stdout — without a consumer the pipe buffer fills on verbose installs
|
|
268
|
+
// and blocks the "close" event, hanging the CLI indefinitely (N59).
|
|
269
|
+
child.stdout?.on("data", () => {
|
|
270
|
+
/* intentionally discarded */
|
|
271
|
+
});
|
|
272
|
+
child.stderr?.on("data", (data) => {
|
|
273
|
+
stderr += data.toString();
|
|
274
|
+
});
|
|
275
|
+
child.on("close", (code) => {
|
|
276
|
+
if (code === 0) {
|
|
277
|
+
spinner.succeed(chalk_1.default.green("Dependencies installed"));
|
|
278
|
+
resolve();
|
|
279
|
+
}
|
|
280
|
+
else {
|
|
281
|
+
spinner.fail(chalk_1.default.red("Failed to install dependencies"));
|
|
282
|
+
if (stderr) {
|
|
283
|
+
console.error(chalk_1.default.dim(stderr));
|
|
284
|
+
}
|
|
285
|
+
reject(new Error(`${packageManager} install failed with code ${code}`));
|
|
286
|
+
}
|
|
287
|
+
});
|
|
288
|
+
child.on("error", (error) => {
|
|
289
|
+
spinner.fail(chalk_1.default.red("Failed to install dependencies"));
|
|
290
|
+
reject(error);
|
|
291
|
+
});
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Print success message with next steps
|
|
296
|
+
*/
|
|
297
|
+
function printSuccess(config) {
|
|
298
|
+
console.log();
|
|
299
|
+
console.log(chalk_1.default.green.bold("✓ ") +
|
|
300
|
+
chalk_1.default.bold(`Project "${config.name}" created successfully!`));
|
|
301
|
+
console.log();
|
|
302
|
+
console.log(chalk_1.default.bold("Next steps:"));
|
|
303
|
+
console.log();
|
|
304
|
+
console.log(chalk_1.default.cyan(` cd ${config.name}`));
|
|
305
|
+
const runCmd = config.packageManager === "npm" ? "npm run" : config.packageManager;
|
|
306
|
+
console.log(chalk_1.default.cyan(` ${runCmd} dev`));
|
|
307
|
+
console.log();
|
|
308
|
+
console.log(chalk_1.default.dim("Useful commands:"));
|
|
309
|
+
console.log(chalk_1.default.dim(` ${runCmd} build Build your agents`));
|
|
310
|
+
console.log(chalk_1.default.dim(` ${runCmd} test Run tests`));
|
|
311
|
+
console.log(chalk_1.default.dim(` symplek add agent Add a new agent`));
|
|
312
|
+
console.log();
|
|
313
|
+
console.log(chalk_1.default.dim("Documentation: ") +
|
|
314
|
+
chalk_1.default.blue.underline("https://github.com/symplek/symplek#readme"));
|
|
315
|
+
console.log();
|
|
316
|
+
}
|
|
317
|
+
/**
|
|
318
|
+
* Create the init command
|
|
319
|
+
*/
|
|
320
|
+
function initCommand() {
|
|
321
|
+
const cmd = new commander_1.Command("init")
|
|
322
|
+
.description("Initialize a new Symplek project")
|
|
323
|
+
.option("-n, --name <name>", "Project name (kebab-case)")
|
|
324
|
+
.option("-t, --template <template>", "Template: minimal, standard, full", "standard")
|
|
325
|
+
.option("-p, --pm <pm>", "Package manager: npm, pnpm, yarn, bun")
|
|
326
|
+
.option("-y, --yes", "Skip prompts and use defaults")
|
|
327
|
+
.action(async (options) => {
|
|
328
|
+
console.log();
|
|
329
|
+
console.log(chalk_1.default.bold.blue("🚀 Symplek Project Initializer"));
|
|
330
|
+
console.log();
|
|
331
|
+
try {
|
|
332
|
+
// Gather configuration
|
|
333
|
+
const config = await promptForConfig(options);
|
|
334
|
+
// Create project
|
|
335
|
+
await createProject(config);
|
|
336
|
+
// Install dependencies
|
|
337
|
+
await installDependencies(config.packageManager, config.targetDir);
|
|
338
|
+
// Print success
|
|
339
|
+
printSuccess(config);
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
console.error();
|
|
343
|
+
console.error(chalk_1.default.red("Error: ") +
|
|
344
|
+
(error instanceof Error ? error.message : String(error)));
|
|
345
|
+
process.exit(1);
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
return cmd;
|
|
349
|
+
}
|
|
350
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `symplek migrate` command - scans codebase for zero-trust migration issues
|
|
3
|
+
* Detects patterns affected by the zero-trust breaking change and provides
|
|
4
|
+
* auto-fix for safe patterns.
|
|
5
|
+
*/
|
|
6
|
+
import { Command } from "commander";
|
|
7
|
+
/** Represents a migration issue found in the codebase */
|
|
8
|
+
export interface MigrationIssue {
|
|
9
|
+
/** File path where the issue was found */
|
|
10
|
+
file: string;
|
|
11
|
+
/** Line number (1-indexed) */
|
|
12
|
+
line: number;
|
|
13
|
+
/** The problematic code snippet */
|
|
14
|
+
code: string;
|
|
15
|
+
/** How to fix it */
|
|
16
|
+
suggestion: string;
|
|
17
|
+
/** Can be auto-fixed */
|
|
18
|
+
autoFixable: boolean;
|
|
19
|
+
/** Pattern that matched */
|
|
20
|
+
patternId: string;
|
|
21
|
+
/** Human-readable description of the issue */
|
|
22
|
+
description?: string;
|
|
23
|
+
/** Column offset for precise replacement (auto-fix only) */
|
|
24
|
+
matchStart?: number;
|
|
25
|
+
/** Match end position (auto-fix only) */
|
|
26
|
+
matchEnd?: number;
|
|
27
|
+
}
|
|
28
|
+
/** Detect migration issues in a project */
|
|
29
|
+
export declare function detectMigrationIssues(projectPath: string): Promise<MigrationIssue[]>;
|
|
30
|
+
/** Apply auto-fixes to all files */
|
|
31
|
+
export declare function autoFixIssues(issues: MigrationIssue[]): Promise<{
|
|
32
|
+
filesModified: number;
|
|
33
|
+
fixesApplied: number;
|
|
34
|
+
}>;
|
|
35
|
+
/** Generate markdown migration report */
|
|
36
|
+
export declare function generateMigrationReport(issues: MigrationIssue[]): string;
|
|
37
|
+
/**
|
|
38
|
+
* Create the migrate command
|
|
39
|
+
*/
|
|
40
|
+
export declare function migrateCommand(): Command;
|
|
41
|
+
//# sourceMappingURL=migrate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAOpC,yDAAyD;AACzD,MAAM,WAAW,cAAc;IAC7B,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,8BAA8B;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,oBAAoB;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,wBAAwB;IACxB,WAAW,EAAE,OAAO,CAAC;IACrB,2BAA2B;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,8CAA8C;IAC9C,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AA+OD,2CAA2C;AAC3C,wBAAsB,qBAAqB,CACzC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,EAAE,CAAC,CAuB3B;AAiED,oCAAoC;AACpC,wBAAsB,aAAa,CACjC,MAAM,EAAE,cAAc,EAAE,GACvB,OAAO,CAAC;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAuB1D;AAMD,yCAAyC;AACzC,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,CA+ExE;AAmFD;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CA+ExC"}
|