@opensaas/stack-cli 0.4.0 → 0.5.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/.turbo/turbo-build.log +1 -1
- package/CHANGELOG.md +52 -0
- package/dist/commands/migrate.d.ts +9 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +473 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/lib/documentation-provider.d.ts +23 -0
- package/dist/mcp/lib/documentation-provider.d.ts.map +1 -1
- package/dist/mcp/lib/documentation-provider.js +471 -0
- package/dist/mcp/lib/documentation-provider.js.map +1 -1
- package/dist/mcp/lib/wizards/migration-wizard.d.ts +80 -0
- package/dist/mcp/lib/wizards/migration-wizard.d.ts.map +1 -0
- package/dist/mcp/lib/wizards/migration-wizard.js +499 -0
- package/dist/mcp/lib/wizards/migration-wizard.js.map +1 -0
- package/dist/mcp/server/index.d.ts.map +1 -1
- package/dist/mcp/server/index.js +103 -0
- package/dist/mcp/server/index.js.map +1 -1
- package/dist/mcp/server/stack-mcp-server.d.ts +85 -0
- package/dist/mcp/server/stack-mcp-server.d.ts.map +1 -1
- package/dist/mcp/server/stack-mcp-server.js +219 -0
- package/dist/mcp/server/stack-mcp-server.js.map +1 -1
- package/dist/migration/generators/migration-generator.d.ts +60 -0
- package/dist/migration/generators/migration-generator.d.ts.map +1 -0
- package/dist/migration/generators/migration-generator.js +510 -0
- package/dist/migration/generators/migration-generator.js.map +1 -0
- package/dist/migration/introspectors/index.d.ts +12 -0
- package/dist/migration/introspectors/index.d.ts.map +1 -0
- package/dist/migration/introspectors/index.js +10 -0
- package/dist/migration/introspectors/index.js.map +1 -0
- package/dist/migration/introspectors/keystone-introspector.d.ts +59 -0
- package/dist/migration/introspectors/keystone-introspector.d.ts.map +1 -0
- package/dist/migration/introspectors/keystone-introspector.js +229 -0
- package/dist/migration/introspectors/keystone-introspector.js.map +1 -0
- package/dist/migration/introspectors/nextjs-introspector.d.ts +59 -0
- package/dist/migration/introspectors/nextjs-introspector.d.ts.map +1 -0
- package/dist/migration/introspectors/nextjs-introspector.js +159 -0
- package/dist/migration/introspectors/nextjs-introspector.js.map +1 -0
- package/dist/migration/introspectors/prisma-introspector.d.ts +45 -0
- package/dist/migration/introspectors/prisma-introspector.d.ts.map +1 -0
- package/dist/migration/introspectors/prisma-introspector.js +190 -0
- package/dist/migration/introspectors/prisma-introspector.js.map +1 -0
- package/dist/migration/types.d.ts +86 -0
- package/dist/migration/types.d.ts.map +1 -0
- package/dist/migration/types.js +5 -0
- package/dist/migration/types.js.map +1 -0
- package/package.json +5 -2
- package/src/commands/migrate.ts +534 -0
- package/src/index.ts +4 -0
- package/src/mcp/lib/documentation-provider.ts +507 -0
- package/src/mcp/lib/wizards/migration-wizard.ts +584 -0
- package/src/mcp/server/index.ts +121 -0
- package/src/mcp/server/stack-mcp-server.ts +243 -0
- package/src/migration/generators/migration-generator.ts +675 -0
- package/src/migration/introspectors/index.ts +12 -0
- package/src/migration/introspectors/keystone-introspector.ts +296 -0
- package/src/migration/introspectors/nextjs-introspector.ts +209 -0
- package/src/migration/introspectors/prisma-introspector.ts +233 -0
- package/src/migration/types.ts +92 -0
- package/tests/introspectors/keystone-introspector.test.ts +255 -0
- package/tests/introspectors/nextjs-introspector.test.ts +302 -0
- package/tests/introspectors/prisma-introspector.test.ts +268 -0
- package/tests/migration-generator.test.ts +592 -0
- package/tests/migration-wizard.test.ts +442 -0
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Migration Wizard - Interactive guide for migrating to OpenSaaS Stack
|
|
3
|
+
*/
|
|
4
|
+
import { MigrationGenerator } from '../../../migration/generators/migration-generator.js';
|
|
5
|
+
export class MigrationWizard {
|
|
6
|
+
sessions = {};
|
|
7
|
+
generator;
|
|
8
|
+
constructor() {
|
|
9
|
+
this.generator = new MigrationGenerator();
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Start a new migration wizard session
|
|
13
|
+
*/
|
|
14
|
+
async startMigration(projectType, analysis) {
|
|
15
|
+
const sessionId = this.generateSessionId();
|
|
16
|
+
// Generate questions based on project type and analysis
|
|
17
|
+
const questions = this.generateQuestions(projectType, analysis);
|
|
18
|
+
const session = {
|
|
19
|
+
id: sessionId,
|
|
20
|
+
projectType,
|
|
21
|
+
analysis: {
|
|
22
|
+
projectTypes: [projectType],
|
|
23
|
+
cwd: process.cwd(),
|
|
24
|
+
models: analysis?.models?.map((m) => ({
|
|
25
|
+
name: m.name,
|
|
26
|
+
fieldCount: m.fields.length,
|
|
27
|
+
})),
|
|
28
|
+
provider: analysis?.provider,
|
|
29
|
+
},
|
|
30
|
+
currentQuestionIndex: 0,
|
|
31
|
+
answers: {},
|
|
32
|
+
isComplete: false,
|
|
33
|
+
createdAt: new Date(),
|
|
34
|
+
updatedAt: new Date(),
|
|
35
|
+
questions,
|
|
36
|
+
};
|
|
37
|
+
this.sessions[sessionId] = session;
|
|
38
|
+
const totalQuestions = questions.length;
|
|
39
|
+
const firstQuestion = questions[0];
|
|
40
|
+
const progressBar = this.renderProgressBar(1, totalQuestions);
|
|
41
|
+
return {
|
|
42
|
+
content: [
|
|
43
|
+
{
|
|
44
|
+
type: 'text',
|
|
45
|
+
text: `# 🚀 OpenSaaS Stack Migration Wizard
|
|
46
|
+
|
|
47
|
+
## Project Analysis
|
|
48
|
+
|
|
49
|
+
- **Project Type:** ${projectType}
|
|
50
|
+
- **Models:** ${analysis?.models?.length || 0}
|
|
51
|
+
- **Database:** ${analysis?.provider || 'Not detected'}
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Let's Configure Your Migration
|
|
56
|
+
|
|
57
|
+
${this.renderQuestion(firstQuestion, 1, totalQuestions)}
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
**Progress:** ${progressBar} 1/${totalQuestions}
|
|
62
|
+
|
|
63
|
+
<details>
|
|
64
|
+
<summary>💡 **Instructions for Claude**</summary>
|
|
65
|
+
|
|
66
|
+
1. Present this question naturally to the user
|
|
67
|
+
2. When they answer, call \`opensaas_answer_migration\` with:
|
|
68
|
+
- \`sessionId\`: "${sessionId}"
|
|
69
|
+
- \`answer\`: their response (string, boolean, or array)
|
|
70
|
+
3. Continue until the wizard is complete
|
|
71
|
+
4. Do NOT mention session IDs to the user
|
|
72
|
+
|
|
73
|
+
</details>`,
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Answer a wizard question
|
|
80
|
+
*/
|
|
81
|
+
async answerQuestion(sessionId, answer) {
|
|
82
|
+
const session = this.sessions[sessionId];
|
|
83
|
+
if (!session) {
|
|
84
|
+
return {
|
|
85
|
+
content: [
|
|
86
|
+
{
|
|
87
|
+
type: 'text',
|
|
88
|
+
text: `❌ **Session not found:** ${sessionId}
|
|
89
|
+
|
|
90
|
+
Please start a new migration with \`opensaas_start_migration\`.`,
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const questions = session.questions;
|
|
96
|
+
const currentQuestion = questions[session.currentQuestionIndex];
|
|
97
|
+
// Validate answer
|
|
98
|
+
const validation = this.validateAnswer(answer, currentQuestion);
|
|
99
|
+
if (!validation.valid) {
|
|
100
|
+
return {
|
|
101
|
+
content: [
|
|
102
|
+
{
|
|
103
|
+
type: 'text',
|
|
104
|
+
text: `❌ **Invalid answer:** ${validation.message}
|
|
105
|
+
|
|
106
|
+
${this.renderQuestion(currentQuestion, session.currentQuestionIndex + 1, questions.length)}`,
|
|
107
|
+
},
|
|
108
|
+
],
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
// Normalize and store answer
|
|
112
|
+
let normalizedAnswer = answer;
|
|
113
|
+
if (currentQuestion.type === 'boolean') {
|
|
114
|
+
const boolValue = this.normalizeBoolean(answer);
|
|
115
|
+
if (boolValue !== null) {
|
|
116
|
+
normalizedAnswer = boolValue;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
session.answers[currentQuestion.id] = normalizedAnswer;
|
|
120
|
+
session.updatedAt = new Date();
|
|
121
|
+
// Move to next question, skipping conditional questions
|
|
122
|
+
session.currentQuestionIndex++;
|
|
123
|
+
while (session.currentQuestionIndex < questions.length) {
|
|
124
|
+
const nextQ = questions[session.currentQuestionIndex];
|
|
125
|
+
// Skip if this question depends on a previous answer that doesn't match
|
|
126
|
+
if (nextQ.dependsOn &&
|
|
127
|
+
session.answers[nextQ.dependsOn.questionId] !== nextQ.dependsOn.value) {
|
|
128
|
+
session.currentQuestionIndex++;
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
break;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Check if complete
|
|
135
|
+
if (session.currentQuestionIndex >= questions.length) {
|
|
136
|
+
session.isComplete = true;
|
|
137
|
+
return this.generateMigrationConfig(session);
|
|
138
|
+
}
|
|
139
|
+
// Render next question
|
|
140
|
+
const nextQuestion = questions[session.currentQuestionIndex];
|
|
141
|
+
const questionNum = session.currentQuestionIndex + 1;
|
|
142
|
+
const progressBar = this.renderProgressBar(questionNum, questions.length);
|
|
143
|
+
return {
|
|
144
|
+
content: [
|
|
145
|
+
{
|
|
146
|
+
type: 'text',
|
|
147
|
+
text: `✅ **Recorded:** ${this.formatAnswer(normalizedAnswer)}
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
${this.renderQuestion(nextQuestion, questionNum, questions.length)}
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
**Progress:** ${progressBar} ${questionNum}/${questions.length}`,
|
|
156
|
+
},
|
|
157
|
+
],
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Generate questions based on project type and analysis
|
|
162
|
+
*/
|
|
163
|
+
generateQuestions(projectType, analysis) {
|
|
164
|
+
const questions = [];
|
|
165
|
+
// 1. Database configuration
|
|
166
|
+
questions.push({
|
|
167
|
+
id: 'preserve_database',
|
|
168
|
+
text: 'Do you want to keep your existing database?',
|
|
169
|
+
type: 'boolean',
|
|
170
|
+
defaultValue: true,
|
|
171
|
+
});
|
|
172
|
+
questions.push({
|
|
173
|
+
id: 'db_provider',
|
|
174
|
+
text: 'Which database provider are you using?',
|
|
175
|
+
type: 'select',
|
|
176
|
+
options: ['sqlite', 'postgresql', 'mysql'],
|
|
177
|
+
defaultValue: analysis?.provider || 'sqlite',
|
|
178
|
+
});
|
|
179
|
+
// 2. Authentication
|
|
180
|
+
questions.push({
|
|
181
|
+
id: 'enable_auth',
|
|
182
|
+
text: 'Do you want to add authentication?',
|
|
183
|
+
type: 'boolean',
|
|
184
|
+
defaultValue: this.hasAuthModels(analysis),
|
|
185
|
+
});
|
|
186
|
+
questions.push({
|
|
187
|
+
id: 'auth_methods',
|
|
188
|
+
text: 'Which authentication methods do you want?',
|
|
189
|
+
type: 'multiselect',
|
|
190
|
+
options: ['email-password', 'google', 'github', 'magic-link'],
|
|
191
|
+
defaultValue: ['email-password'],
|
|
192
|
+
dependsOn: {
|
|
193
|
+
questionId: 'enable_auth',
|
|
194
|
+
value: true,
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
// 3. Access control strategy
|
|
198
|
+
questions.push({
|
|
199
|
+
id: 'default_access',
|
|
200
|
+
text: 'What should be the default access control strategy?',
|
|
201
|
+
type: 'select',
|
|
202
|
+
options: ['public-read-auth-write', 'authenticated-only', 'owner-only', 'admin-only'],
|
|
203
|
+
defaultValue: 'public-read-auth-write',
|
|
204
|
+
});
|
|
205
|
+
// 4. Per-model configuration (if models detected)
|
|
206
|
+
if (analysis?.models && analysis.models.length > 0) {
|
|
207
|
+
// Ask about special models
|
|
208
|
+
const modelNames = analysis.models.map((m) => m.name);
|
|
209
|
+
if (modelNames.some((n) => ['User', 'Account', 'Session'].includes(n))) {
|
|
210
|
+
questions.push({
|
|
211
|
+
id: 'skip_auth_models',
|
|
212
|
+
text: "We detected User/Account/Session models. Should we skip these (they'll be managed by the auth plugin)?",
|
|
213
|
+
type: 'boolean',
|
|
214
|
+
defaultValue: true,
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
// Ask about models that need special access control
|
|
218
|
+
const nonAuthModels = modelNames.filter((n) => !['User', 'Account', 'Session', 'Verification'].includes(n));
|
|
219
|
+
if (nonAuthModels.length > 0) {
|
|
220
|
+
questions.push({
|
|
221
|
+
id: 'models_with_owner',
|
|
222
|
+
text: `Which models should have owner-based access control? (User can only access their own)`,
|
|
223
|
+
type: 'multiselect',
|
|
224
|
+
options: nonAuthModels,
|
|
225
|
+
defaultValue: this.guessOwnerModels(analysis.models, nonAuthModels),
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
// 5. Admin UI
|
|
230
|
+
questions.push({
|
|
231
|
+
id: 'admin_base_path',
|
|
232
|
+
text: 'What base path should the admin UI use?',
|
|
233
|
+
type: 'text',
|
|
234
|
+
defaultValue: '/admin',
|
|
235
|
+
});
|
|
236
|
+
// 6. Additional features
|
|
237
|
+
questions.push({
|
|
238
|
+
id: 'additional_features',
|
|
239
|
+
text: 'Do you want to add any additional features?',
|
|
240
|
+
type: 'multiselect',
|
|
241
|
+
options: ['file-storage', 'semantic-search', 'audit-logging'],
|
|
242
|
+
defaultValue: [],
|
|
243
|
+
});
|
|
244
|
+
// 7. Final confirmation
|
|
245
|
+
questions.push({
|
|
246
|
+
id: 'confirm',
|
|
247
|
+
text: 'Ready to generate your opensaas.config.ts?',
|
|
248
|
+
type: 'boolean',
|
|
249
|
+
defaultValue: true,
|
|
250
|
+
});
|
|
251
|
+
return questions;
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Generate the final migration config
|
|
255
|
+
*/
|
|
256
|
+
async generateMigrationConfig(session) {
|
|
257
|
+
try {
|
|
258
|
+
const output = await this.generator.generate(session);
|
|
259
|
+
// Clean up session
|
|
260
|
+
delete this.sessions[session.id];
|
|
261
|
+
return {
|
|
262
|
+
content: [
|
|
263
|
+
{
|
|
264
|
+
type: 'text',
|
|
265
|
+
text: `# ✅ Migration Complete!
|
|
266
|
+
|
|
267
|
+
## Generated opensaas.config.ts
|
|
268
|
+
|
|
269
|
+
\`\`\`typescript
|
|
270
|
+
${output.configContent}
|
|
271
|
+
\`\`\`
|
|
272
|
+
|
|
273
|
+
---
|
|
274
|
+
|
|
275
|
+
## Install Dependencies
|
|
276
|
+
|
|
277
|
+
\`\`\`bash
|
|
278
|
+
${output.dependencies.map((d) => `pnpm add ${d}`).join('\n')}
|
|
279
|
+
\`\`\`
|
|
280
|
+
|
|
281
|
+
---
|
|
282
|
+
|
|
283
|
+
${output.files.length > 0
|
|
284
|
+
? `## Additional Files
|
|
285
|
+
|
|
286
|
+
${output.files
|
|
287
|
+
.map((f) => `### ${f.path}
|
|
288
|
+
|
|
289
|
+
*${f.description}*
|
|
290
|
+
|
|
291
|
+
\`\`\`${f.language}
|
|
292
|
+
${f.content}
|
|
293
|
+
\`\`\``)
|
|
294
|
+
.join('\n\n')}
|
|
295
|
+
|
|
296
|
+
---
|
|
297
|
+
|
|
298
|
+
`
|
|
299
|
+
: ''}
|
|
300
|
+
|
|
301
|
+
${output.warnings.length > 0
|
|
302
|
+
? `## ⚠️ Warnings
|
|
303
|
+
|
|
304
|
+
${output.warnings.map((w) => `- ${w}`).join('\n')}
|
|
305
|
+
|
|
306
|
+
---
|
|
307
|
+
|
|
308
|
+
`
|
|
309
|
+
: ''}
|
|
310
|
+
|
|
311
|
+
## Next Steps
|
|
312
|
+
|
|
313
|
+
${output.steps.map((step, i) => `${i + 1}. ${step}`).join('\n')}
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
🎉 **Your migration is ready!**
|
|
318
|
+
|
|
319
|
+
The generated config creates an OpenSaaS Stack application that matches your existing schema.
|
|
320
|
+
|
|
321
|
+
📚 **Documentation:** https://stack.opensaas.au/`,
|
|
322
|
+
},
|
|
323
|
+
],
|
|
324
|
+
};
|
|
325
|
+
}
|
|
326
|
+
catch (error) {
|
|
327
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
328
|
+
return {
|
|
329
|
+
content: [
|
|
330
|
+
{
|
|
331
|
+
type: 'text',
|
|
332
|
+
text: `❌ **Failed to generate config:** ${message}
|
|
333
|
+
|
|
334
|
+
Please try again or create the config manually.
|
|
335
|
+
|
|
336
|
+
📚 See: https://stack.opensaas.au/guides/migration`,
|
|
337
|
+
},
|
|
338
|
+
],
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Check if analysis includes auth-related models
|
|
344
|
+
*/
|
|
345
|
+
hasAuthModels(analysis) {
|
|
346
|
+
if (!analysis?.models)
|
|
347
|
+
return false;
|
|
348
|
+
const authModelNames = ['User', 'Account', 'Session'];
|
|
349
|
+
return analysis.models.some((m) => authModelNames.includes(m.name));
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Guess which models should have owner-based access
|
|
353
|
+
*/
|
|
354
|
+
guessOwnerModels(models, modelNames) {
|
|
355
|
+
const ownerModels = [];
|
|
356
|
+
for (const name of modelNames) {
|
|
357
|
+
const model = models.find((m) => m.name === name);
|
|
358
|
+
if (!model)
|
|
359
|
+
continue;
|
|
360
|
+
// Check if model has a relationship to User
|
|
361
|
+
const hasUserRelation = model.fields.some((f) => f.relation &&
|
|
362
|
+
(f.relation.model === 'User' ||
|
|
363
|
+
f.name.toLowerCase().includes('author') ||
|
|
364
|
+
f.name.toLowerCase().includes('owner')));
|
|
365
|
+
if (hasUserRelation) {
|
|
366
|
+
ownerModels.push(name);
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
return ownerModels;
|
|
370
|
+
}
|
|
371
|
+
/**
|
|
372
|
+
* Render a question for display
|
|
373
|
+
*/
|
|
374
|
+
renderQuestion(question, questionNum, totalQuestions) {
|
|
375
|
+
let rendered = `### Question ${questionNum}/${totalQuestions}\n\n**${question.text}**\n\n`;
|
|
376
|
+
if (question.type === 'select') {
|
|
377
|
+
rendered += question.options.map((opt) => `- \`${opt}\``).join('\n');
|
|
378
|
+
}
|
|
379
|
+
else if (question.type === 'multiselect') {
|
|
380
|
+
rendered += question.options.map((opt) => `- \`${opt}\``).join('\n');
|
|
381
|
+
rendered += '\n\n*Select multiple (comma-separated) or empty for none*';
|
|
382
|
+
}
|
|
383
|
+
else if (question.type === 'boolean') {
|
|
384
|
+
rendered += '*Answer: yes or no*';
|
|
385
|
+
}
|
|
386
|
+
else if (question.type === 'text') {
|
|
387
|
+
rendered += '*Enter your response*';
|
|
388
|
+
}
|
|
389
|
+
if (question.defaultValue !== undefined) {
|
|
390
|
+
rendered += `\n\n*Default: ${this.formatAnswer(question.defaultValue)}*`;
|
|
391
|
+
}
|
|
392
|
+
return rendered;
|
|
393
|
+
}
|
|
394
|
+
/**
|
|
395
|
+
* Validate an answer
|
|
396
|
+
*/
|
|
397
|
+
validateAnswer(answer, question) {
|
|
398
|
+
if (question.required && !answer) {
|
|
399
|
+
return { valid: false, message: 'This question requires an answer.' };
|
|
400
|
+
}
|
|
401
|
+
if (question.type === 'boolean') {
|
|
402
|
+
const normalized = this.normalizeBoolean(answer);
|
|
403
|
+
if (normalized === null) {
|
|
404
|
+
return { valid: false, message: 'Please answer with yes/no or true/false.' };
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
if (question.type === 'select' && question.options) {
|
|
408
|
+
if (!question.options.includes(answer)) {
|
|
409
|
+
return {
|
|
410
|
+
valid: false,
|
|
411
|
+
message: `Please select one of: ${question.options.join(', ')}`,
|
|
412
|
+
};
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
if (question.type === 'multiselect' && question.options) {
|
|
416
|
+
const answers = Array.isArray(answer)
|
|
417
|
+
? answer
|
|
418
|
+
: answer
|
|
419
|
+
.split(',')
|
|
420
|
+
.map((a) => a.trim())
|
|
421
|
+
.filter(Boolean);
|
|
422
|
+
const invalid = answers.filter((a) => !question.options.includes(a));
|
|
423
|
+
if (invalid.length > 0) {
|
|
424
|
+
return {
|
|
425
|
+
valid: false,
|
|
426
|
+
message: `Invalid options: ${invalid.join(', ')}. Valid: ${question.options.join(', ')}`,
|
|
427
|
+
};
|
|
428
|
+
}
|
|
429
|
+
}
|
|
430
|
+
return { valid: true };
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Normalize boolean answer
|
|
434
|
+
*/
|
|
435
|
+
normalizeBoolean(answer) {
|
|
436
|
+
if (typeof answer === 'boolean')
|
|
437
|
+
return answer;
|
|
438
|
+
if (typeof answer !== 'string')
|
|
439
|
+
return null;
|
|
440
|
+
const lower = answer.toLowerCase().trim();
|
|
441
|
+
if (['yes', 'y', 'true', '1'].includes(lower))
|
|
442
|
+
return true;
|
|
443
|
+
if (['no', 'n', 'false', '0'].includes(lower))
|
|
444
|
+
return false;
|
|
445
|
+
return null;
|
|
446
|
+
}
|
|
447
|
+
/**
|
|
448
|
+
* Format an answer for display
|
|
449
|
+
*/
|
|
450
|
+
formatAnswer(answer) {
|
|
451
|
+
if (typeof answer === 'boolean')
|
|
452
|
+
return answer ? 'Yes' : 'No';
|
|
453
|
+
if (Array.isArray(answer))
|
|
454
|
+
return answer.length > 0 ? answer.join(', ') : '(none)';
|
|
455
|
+
return String(answer);
|
|
456
|
+
}
|
|
457
|
+
/**
|
|
458
|
+
* Generate a unique session ID
|
|
459
|
+
*/
|
|
460
|
+
generateSessionId() {
|
|
461
|
+
return `migration_${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
|
|
462
|
+
}
|
|
463
|
+
/**
|
|
464
|
+
* Render a progress bar
|
|
465
|
+
*/
|
|
466
|
+
renderProgressBar(current, total) {
|
|
467
|
+
const filled = Math.round((current / total) * 10);
|
|
468
|
+
const empty = 10 - filled;
|
|
469
|
+
return '▓'.repeat(filled) + '░'.repeat(empty);
|
|
470
|
+
}
|
|
471
|
+
/**
|
|
472
|
+
* Get a session by ID (for testing/debugging)
|
|
473
|
+
*/
|
|
474
|
+
getSession(sessionId) {
|
|
475
|
+
return this.sessions[sessionId];
|
|
476
|
+
}
|
|
477
|
+
/**
|
|
478
|
+
* Clear completed sessions
|
|
479
|
+
*/
|
|
480
|
+
clearCompletedSessions() {
|
|
481
|
+
Object.keys(this.sessions).forEach((id) => {
|
|
482
|
+
if (this.sessions[id].isComplete) {
|
|
483
|
+
delete this.sessions[id];
|
|
484
|
+
}
|
|
485
|
+
});
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* Clear old sessions (older than 1 hour)
|
|
489
|
+
*/
|
|
490
|
+
clearOldSessions() {
|
|
491
|
+
const oneHourAgo = Date.now() - 60 * 60 * 1000;
|
|
492
|
+
Object.keys(this.sessions).forEach((id) => {
|
|
493
|
+
if (this.sessions[id].createdAt.getTime() < oneHourAgo) {
|
|
494
|
+
delete this.sessions[id];
|
|
495
|
+
}
|
|
496
|
+
});
|
|
497
|
+
}
|
|
498
|
+
}
|
|
499
|
+
//# sourceMappingURL=migration-wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration-wizard.js","sourceRoot":"","sources":["../../../../src/mcp/lib/wizards/migration-wizard.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/server/index.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/server/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwOH;;GAEG;AACH,wBAAsB,cAAc,kBAmHnC"}
|
package/dist/mcp/server/index.js
CHANGED
|
@@ -120,6 +120,97 @@ const TOOLS = [
|
|
|
120
120
|
required: ['feature'],
|
|
121
121
|
},
|
|
122
122
|
},
|
|
123
|
+
{
|
|
124
|
+
name: 'opensaas_start_migration',
|
|
125
|
+
description: 'Start the migration wizard for an existing project. Returns the first question to begin the migration process.',
|
|
126
|
+
inputSchema: {
|
|
127
|
+
type: 'object',
|
|
128
|
+
properties: {
|
|
129
|
+
projectType: {
|
|
130
|
+
type: 'string',
|
|
131
|
+
description: 'Type of project being migrated',
|
|
132
|
+
enum: ['prisma', 'keystone', 'nextjs'],
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
required: ['projectType'],
|
|
136
|
+
},
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
name: 'opensaas_answer_migration',
|
|
140
|
+
description: 'Answer a question in the migration wizard. Use this after opensaas_start_migration to progress through the migration.',
|
|
141
|
+
inputSchema: {
|
|
142
|
+
type: 'object',
|
|
143
|
+
properties: {
|
|
144
|
+
sessionId: {
|
|
145
|
+
type: 'string',
|
|
146
|
+
description: 'Migration session ID from the wizard',
|
|
147
|
+
},
|
|
148
|
+
answer: {
|
|
149
|
+
description: 'Answer to the current question',
|
|
150
|
+
oneOf: [
|
|
151
|
+
{ type: 'string' },
|
|
152
|
+
{ type: 'boolean' },
|
|
153
|
+
{ type: 'array', items: { type: 'string' } },
|
|
154
|
+
],
|
|
155
|
+
},
|
|
156
|
+
},
|
|
157
|
+
required: ['sessionId', 'answer'],
|
|
158
|
+
},
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
name: 'opensaas_introspect_prisma',
|
|
162
|
+
description: 'Analyze a Prisma schema file and return detailed information about models, fields, and relationships. This helps you understand your existing schema before migration.',
|
|
163
|
+
inputSchema: {
|
|
164
|
+
type: 'object',
|
|
165
|
+
properties: {
|
|
166
|
+
schemaPath: {
|
|
167
|
+
type: 'string',
|
|
168
|
+
description: 'Path to schema.prisma (defaults to prisma/schema.prisma)',
|
|
169
|
+
},
|
|
170
|
+
},
|
|
171
|
+
},
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
name: 'opensaas_introspect_keystone',
|
|
175
|
+
description: 'Analyze a KeystoneJS config file and return information about lists and fields. This helps you understand your existing schema before migration.',
|
|
176
|
+
inputSchema: {
|
|
177
|
+
type: 'object',
|
|
178
|
+
properties: {
|
|
179
|
+
configPath: {
|
|
180
|
+
type: 'string',
|
|
181
|
+
description: 'Path to keystone.config.ts (defaults to keystone.config.ts)',
|
|
182
|
+
},
|
|
183
|
+
},
|
|
184
|
+
},
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'opensaas_search_migration_docs',
|
|
188
|
+
description: 'Search OpenSaaS Stack documentation for migration-related topics. Searches both local CLAUDE.md files and online documentation.',
|
|
189
|
+
inputSchema: {
|
|
190
|
+
type: 'object',
|
|
191
|
+
properties: {
|
|
192
|
+
query: {
|
|
193
|
+
type: 'string',
|
|
194
|
+
description: 'Search query (e.g., "prisma to opensaas", "access control patterns", "field types")',
|
|
195
|
+
},
|
|
196
|
+
},
|
|
197
|
+
required: ['query'],
|
|
198
|
+
},
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
name: 'opensaas_get_example',
|
|
202
|
+
description: 'Get example code for a specific feature or pattern. Returns code snippets from the examples directory.',
|
|
203
|
+
inputSchema: {
|
|
204
|
+
type: 'object',
|
|
205
|
+
properties: {
|
|
206
|
+
feature: {
|
|
207
|
+
type: 'string',
|
|
208
|
+
description: 'Feature to get example for (e.g., "blog-with-auth", "access-control", "relationships", "hooks", "custom-fields")',
|
|
209
|
+
},
|
|
210
|
+
},
|
|
211
|
+
required: ['feature'],
|
|
212
|
+
},
|
|
213
|
+
},
|
|
123
214
|
];
|
|
124
215
|
/**
|
|
125
216
|
* Create and start the MCP server
|
|
@@ -157,6 +248,18 @@ export async function startMCPServer() {
|
|
|
157
248
|
return await stackServer.suggestFeatures(args);
|
|
158
249
|
case 'opensaas_validate_feature':
|
|
159
250
|
return await stackServer.validateFeature(args);
|
|
251
|
+
case 'opensaas_start_migration':
|
|
252
|
+
return await stackServer.startMigration(args);
|
|
253
|
+
case 'opensaas_answer_migration':
|
|
254
|
+
return await stackServer.answerMigration(args);
|
|
255
|
+
case 'opensaas_introspect_prisma':
|
|
256
|
+
return await stackServer.introspectPrisma(args);
|
|
257
|
+
case 'opensaas_introspect_keystone':
|
|
258
|
+
return await stackServer.introspectKeystone(args);
|
|
259
|
+
case 'opensaas_search_migration_docs':
|
|
260
|
+
return await stackServer.searchMigrationDocs(args);
|
|
261
|
+
case 'opensaas_get_example':
|
|
262
|
+
return await stackServer.getExample(args);
|
|
160
263
|
default:
|
|
161
264
|
return {
|
|
162
265
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/server/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/server/index.ts"],"names":[],"mappings":"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"}
|