@opensaas/stack-cli 0.5.0 → 0.6.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/README.md +76 -0
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +91 -265
- package/dist/commands/migrate.js.map +1 -1
- package/package.json +7 -2
- package/plugin/.claude-plugin/plugin.json +15 -0
- package/plugin/README.md +112 -0
- package/plugin/agents/migration-assistant.md +150 -0
- package/plugin/commands/analyze-schema.md +34 -0
- package/plugin/commands/generate-config.md +33 -0
- package/plugin/commands/validate-migration.md +34 -0
- package/plugin/skills/opensaas-migration/SKILL.md +192 -0
- package/.turbo/turbo-build.log +0 -4
- package/CHANGELOG.md +0 -462
- package/CLAUDE.md +0 -298
- package/src/commands/__snapshots__/generate.test.ts.snap +0 -413
- package/src/commands/dev.test.ts +0 -215
- package/src/commands/dev.ts +0 -48
- package/src/commands/generate.test.ts +0 -282
- package/src/commands/generate.ts +0 -182
- package/src/commands/init.ts +0 -34
- package/src/commands/mcp.ts +0 -135
- package/src/commands/migrate.ts +0 -534
- package/src/generator/__snapshots__/context.test.ts.snap +0 -361
- package/src/generator/__snapshots__/prisma.test.ts.snap +0 -174
- package/src/generator/__snapshots__/types.test.ts.snap +0 -1702
- package/src/generator/context.test.ts +0 -139
- package/src/generator/context.ts +0 -227
- package/src/generator/index.ts +0 -7
- package/src/generator/lists.test.ts +0 -335
- package/src/generator/lists.ts +0 -140
- package/src/generator/plugin-types.ts +0 -147
- package/src/generator/prisma-config.ts +0 -46
- package/src/generator/prisma-extensions.ts +0 -159
- package/src/generator/prisma.test.ts +0 -211
- package/src/generator/prisma.ts +0 -161
- package/src/generator/types.test.ts +0 -268
- package/src/generator/types.ts +0 -537
- package/src/index.ts +0 -46
- package/src/mcp/lib/documentation-provider.ts +0 -710
- package/src/mcp/lib/features/catalog.ts +0 -301
- package/src/mcp/lib/generators/feature-generator.ts +0 -598
- package/src/mcp/lib/types.ts +0 -89
- package/src/mcp/lib/wizards/migration-wizard.ts +0 -584
- package/src/mcp/lib/wizards/wizard-engine.ts +0 -427
- package/src/mcp/server/index.ts +0 -361
- package/src/mcp/server/stack-mcp-server.ts +0 -544
- package/src/migration/generators/migration-generator.ts +0 -675
- package/src/migration/introspectors/index.ts +0 -12
- package/src/migration/introspectors/keystone-introspector.ts +0 -296
- package/src/migration/introspectors/nextjs-introspector.ts +0 -209
- package/src/migration/introspectors/prisma-introspector.ts +0 -233
- package/src/migration/types.ts +0 -92
- package/tests/introspectors/keystone-introspector.test.ts +0 -255
- package/tests/introspectors/nextjs-introspector.test.ts +0 -302
- package/tests/introspectors/prisma-introspector.test.ts +0 -268
- package/tests/migration-generator.test.ts +0 -592
- package/tests/migration-wizard.test.ts +0 -442
- package/tsconfig.json +0 -13
- package/tsconfig.tsbuildinfo +0 -1
- package/vitest.config.ts +0 -26
package/README.md
CHANGED
|
@@ -143,6 +143,82 @@ pnpm db:push # Create database
|
|
|
143
143
|
pnpm dev # Start dev server
|
|
144
144
|
```
|
|
145
145
|
|
|
146
|
+
### `opensaas migrate`
|
|
147
|
+
|
|
148
|
+
Migrate an existing Prisma, KeystoneJS, or Next.js project to OpenSaas Stack.
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
opensaas migrate [options]
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
**Options:**
|
|
155
|
+
|
|
156
|
+
- `--with-ai` - Enable AI-guided migration with Claude Code
|
|
157
|
+
- `--type <type>` - Force project type detection (prisma, nextjs, keystone)
|
|
158
|
+
|
|
159
|
+
**What it does:**
|
|
160
|
+
|
|
161
|
+
1. Detects project type (Prisma, KeystoneJS, Next.js)
|
|
162
|
+
2. Analyzes schema and counts models
|
|
163
|
+
3. With `--with-ai`: Sets up Claude Code integration
|
|
164
|
+
4. Provides next steps for migration
|
|
165
|
+
|
|
166
|
+
**Examples:**
|
|
167
|
+
|
|
168
|
+
```bash
|
|
169
|
+
# Basic migration analysis
|
|
170
|
+
opensaas migrate
|
|
171
|
+
|
|
172
|
+
# AI-guided migration (recommended)
|
|
173
|
+
opensaas migrate --with-ai
|
|
174
|
+
|
|
175
|
+
# Force project type
|
|
176
|
+
opensaas migrate --type prisma --with-ai
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
**AI-Assisted Migration (with --with-ai):**
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
🚀 OpenSaas Stack Migration
|
|
183
|
+
|
|
184
|
+
✔ Detected: prisma, nextjs
|
|
185
|
+
✔ Found 8 models
|
|
186
|
+
├─ User (6 fields)
|
|
187
|
+
├─ Post (10 fields)
|
|
188
|
+
├─ Comment (5 fields)
|
|
189
|
+
└─ ...
|
|
190
|
+
✔ Claude Code ready
|
|
191
|
+
├─ Created .claude directory
|
|
192
|
+
├─ Generated migration assistant
|
|
193
|
+
└─ Registered MCP server
|
|
194
|
+
|
|
195
|
+
✅ Analysis complete!
|
|
196
|
+
|
|
197
|
+
🤖 Next Steps:
|
|
198
|
+
|
|
199
|
+
1. Open this project in Claude Code
|
|
200
|
+
2. Ask: "Help me migrate to OpenSaas Stack"
|
|
201
|
+
3. Follow the interactive wizard
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
**After running:**
|
|
205
|
+
|
|
206
|
+
1. Open project in Claude Code
|
|
207
|
+
2. Ask: "Help me migrate to OpenSaas Stack"
|
|
208
|
+
3. Answer wizard questions about:
|
|
209
|
+
- Database configuration
|
|
210
|
+
- Authentication needs
|
|
211
|
+
- Access control patterns
|
|
212
|
+
- Admin UI preferences
|
|
213
|
+
4. Claude generates `opensaas.config.ts`
|
|
214
|
+
5. Install dependencies and run `opensaas generate`
|
|
215
|
+
|
|
216
|
+
**Manual Migration:**
|
|
217
|
+
|
|
218
|
+
Without `--with-ai`, the command provides project analysis and you create the config manually.
|
|
219
|
+
|
|
220
|
+
**See also:** [Migration Guide](https://stack.opensaas.au/docs/guides/migration)
|
|
221
|
+
|
|
146
222
|
## Usage in Projects
|
|
147
223
|
|
|
148
224
|
### Quick Start (New Projects)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA8UnC;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,OAAO,CAkB9C"}
|
package/dist/commands/migrate.js
CHANGED
|
@@ -64,59 +64,89 @@ function ensureDir(dirPath) {
|
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
/**
|
|
67
|
-
*
|
|
67
|
+
* Get plugin source path (relative to CLI package)
|
|
68
68
|
*/
|
|
69
|
-
function
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
const modelList = data.models?.map((m) => `- ${m.name} (${m.fieldCount} fields)`).join('\n') || '';
|
|
74
|
-
const modelDetails = data.models?.map((m) => `- **${m.name}**: ${m.fieldCount} fields`).join('\n') || '';
|
|
75
|
-
return template
|
|
76
|
-
.replace(/\{\{PROJECT_TYPES\}\}/g, data.projectTypes.join(', '))
|
|
77
|
-
.replace(/\{\{PROJECT_TYPE\}\}/g, projectType)
|
|
78
|
-
.replace(/\{\{PROJECT_TYPE_LOWER\}\}/g, projectTypeLower)
|
|
79
|
-
.replace(/\{\{PROVIDER\}\}/g, data.provider || 'sqlite')
|
|
80
|
-
.replace(/\{\{MODEL_COUNT\}\}/g, String(modelCount))
|
|
81
|
-
.replace(/\{\{HAS_AUTH\}\}/g, String(data.hasAuth || false))
|
|
82
|
-
.replace(/\{\{MODEL_LIST\}\}/g, modelList)
|
|
83
|
-
.replace(/\{\{MODEL_DETAILS\}\}/g, modelDetails);
|
|
69
|
+
function getPluginSourcePath() {
|
|
70
|
+
// This will be the path to the plugin directory within the installed CLI package
|
|
71
|
+
const cliPackageDir = path.dirname(path.dirname(new URL(import.meta.url).pathname));
|
|
72
|
+
return path.join(cliPackageDir, 'plugin');
|
|
84
73
|
}
|
|
85
74
|
/**
|
|
86
|
-
* Setup Claude Code integration
|
|
75
|
+
* Setup Claude Code integration with plugin
|
|
87
76
|
*/
|
|
88
77
|
async function setupClaudeCode(cwd, analysis) {
|
|
89
78
|
const claudeDir = path.join(cwd, '.claude');
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
// Create
|
|
93
|
-
|
|
94
|
-
ensureDir(commandsDir);
|
|
95
|
-
// Create settings.json
|
|
96
|
-
const settings = {
|
|
79
|
+
// Create .claude directory
|
|
80
|
+
ensureDir(claudeDir);
|
|
81
|
+
// Create .mcp.json at project root (project-scoped MCP configuration)
|
|
82
|
+
const mcpConfig = {
|
|
97
83
|
mcpServers: {
|
|
98
84
|
'opensaas-migration': {
|
|
85
|
+
type: 'stdio',
|
|
99
86
|
command: 'npx',
|
|
100
|
-
args: ['@opensaas/stack-cli', 'mcp', 'start'],
|
|
101
|
-
|
|
87
|
+
args: ['-y', '@opensaas/stack-cli', 'mcp', 'start'],
|
|
88
|
+
env: {},
|
|
102
89
|
},
|
|
103
90
|
},
|
|
104
91
|
};
|
|
105
|
-
fs.writeFileSync(path.join(
|
|
106
|
-
//
|
|
107
|
-
const
|
|
92
|
+
fs.writeFileSync(path.join(cwd, '.mcp.json'), JSON.stringify(mcpConfig, null, 2));
|
|
93
|
+
// Write project metadata file for the plugin to read
|
|
94
|
+
const projectMetadata = {
|
|
95
|
+
projectTypes: analysis.projectTypes,
|
|
96
|
+
provider: analysis.provider || 'sqlite',
|
|
97
|
+
models: analysis.models || [],
|
|
98
|
+
hasAuth: analysis.hasAuth || false,
|
|
99
|
+
cwd: analysis.cwd,
|
|
100
|
+
};
|
|
101
|
+
fs.writeFileSync(path.join(claudeDir, 'opensaas-project.json'), JSON.stringify(projectMetadata, null, 2));
|
|
102
|
+
// Configure Claude Code plugin in settings.json
|
|
103
|
+
const settingsPath = path.join(claudeDir, 'settings.json');
|
|
104
|
+
let settings = {};
|
|
105
|
+
// Read existing settings if they exist
|
|
106
|
+
if (fs.existsSync(settingsPath)) {
|
|
107
|
+
try {
|
|
108
|
+
settings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
// If settings file is invalid, start fresh
|
|
112
|
+
settings = {};
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
// Get the plugin source path
|
|
116
|
+
const pluginSource = getPluginSourcePath();
|
|
117
|
+
// Add plugin configuration
|
|
118
|
+
if (!settings.plugins) {
|
|
119
|
+
settings.plugins = {};
|
|
120
|
+
}
|
|
121
|
+
if (!settings.plugins.installed) {
|
|
122
|
+
settings.plugins.installed = [];
|
|
123
|
+
}
|
|
124
|
+
// Check if plugin is already installed
|
|
125
|
+
const pluginId = 'opensaas-migration@local';
|
|
126
|
+
const isInstalled = settings.plugins.installed.some((p) => typeof p === 'string' ? p === pluginId : p.id === pluginId);
|
|
127
|
+
if (!isInstalled) {
|
|
128
|
+
settings.plugins.installed.push({
|
|
129
|
+
id: pluginId,
|
|
130
|
+
source: pluginSource,
|
|
131
|
+
enabled: true,
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
// Write settings back
|
|
135
|
+
fs.writeFileSync(settingsPath, JSON.stringify(settings, null, 2));
|
|
136
|
+
// Create a simple README explaining the setup
|
|
137
|
+
const readmeContent = `# OpenSaaS Stack Migration
|
|
108
138
|
|
|
109
|
-
This project is
|
|
139
|
+
This project is set up for AI-assisted migration to OpenSaaS Stack.
|
|
110
140
|
|
|
111
141
|
## Project Summary
|
|
112
142
|
|
|
113
|
-
- **Project
|
|
114
|
-
- **Database Provider:** {
|
|
115
|
-
- **Models Detected:** {
|
|
143
|
+
- **Project Types:** ${analysis.projectTypes.join(', ')}
|
|
144
|
+
- **Database Provider:** ${analysis.provider || 'Not detected'}
|
|
145
|
+
- **Models Detected:** ${analysis.models?.length || 0}
|
|
116
146
|
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
147
|
+
${analysis.models && analysis.models.length > 0
|
|
148
|
+
? `\n### Models\n\n${analysis.models.map((m) => `- ${m.name} (${m.fieldCount} fields)`).join('\n')}`
|
|
149
|
+
: ''}
|
|
120
150
|
|
|
121
151
|
## Quick Start
|
|
122
152
|
|
|
@@ -128,242 +158,36 @@ Claude will guide you through:
|
|
|
128
158
|
3. Setting up authentication (optional)
|
|
129
159
|
4. Generating \`opensaas.config.ts\`
|
|
130
160
|
|
|
131
|
-
##
|
|
132
|
-
|
|
133
|
-
| Command | Description |
|
|
134
|
-
|---------|-------------|
|
|
135
|
-
| \`/analyze-schema\` | View detailed schema analysis |
|
|
136
|
-
| \`/generate-config\` | Generate the config file |
|
|
137
|
-
| \`/validate-migration\` | Validate generated config |
|
|
138
|
-
|
|
139
|
-
## Resources
|
|
140
|
-
|
|
141
|
-
- [OpenSaaS Stack Documentation](https://stack.opensaas.au/)
|
|
142
|
-
- [Migration Guide](https://stack.opensaas.au/guides/migration)
|
|
143
|
-
- [GitHub Repository](https://github.com/OpenSaasAU/stack)
|
|
144
|
-
|
|
145
|
-
## Generated By
|
|
146
|
-
|
|
147
|
-
This migration was set up using:
|
|
148
|
-
\`\`\`bash
|
|
149
|
-
npx @opensaas/stack-cli migrate --with-ai
|
|
150
|
-
\`\`\`
|
|
151
|
-
`;
|
|
152
|
-
fs.writeFileSync(path.join(claudeDir, 'README.md'), generateTemplateContent(readmeTemplate, analysis));
|
|
153
|
-
// Create migration assistant agent template
|
|
154
|
-
const agentTemplate = `You are the OpenSaaS Stack Migration Assistant, helping users migrate their existing projects to OpenSaaS Stack.
|
|
155
|
-
|
|
156
|
-
## Project Context
|
|
157
|
-
|
|
158
|
-
**Project Type:** {{PROJECT_TYPES}}
|
|
159
|
-
**Database Provider:** {{PROVIDER}}
|
|
160
|
-
**Total Models:** {{MODEL_COUNT}}
|
|
161
|
-
|
|
162
|
-
### Detected Models
|
|
163
|
-
|
|
164
|
-
{{MODEL_DETAILS}}
|
|
165
|
-
|
|
166
|
-
## Your Role
|
|
167
|
-
|
|
168
|
-
Guide the user through a complete migration to OpenSaaS Stack:
|
|
169
|
-
|
|
170
|
-
1. **Analyze** their current project structure
|
|
171
|
-
2. **Explain** what OpenSaaS Stack offers (access control, admin UI, type safety)
|
|
172
|
-
3. **Guide** them through the migration wizard
|
|
173
|
-
4. **Generate** a working \`opensaas.config.ts\`
|
|
174
|
-
5. **Validate** the generated configuration
|
|
175
|
-
6. **Provide** clear next steps
|
|
176
|
-
|
|
177
|
-
## Available MCP Tools
|
|
178
|
-
|
|
179
|
-
### Schema Analysis
|
|
180
|
-
- \`opensaas_introspect_prisma\` - Analyze Prisma schema in detail
|
|
181
|
-
- \`opensaas_introspect_keystone\` - Analyze KeystoneJS config
|
|
182
|
-
|
|
183
|
-
### Migration Wizard
|
|
184
|
-
- \`opensaas_start_migration\` - Start the interactive wizard
|
|
185
|
-
- \`opensaas_answer_migration\` - Answer wizard questions
|
|
186
|
-
|
|
187
|
-
### Documentation
|
|
188
|
-
- \`opensaas_search_migration_docs\` - Search migration documentation
|
|
189
|
-
- \`opensaas_get_example\` - Get example code patterns
|
|
190
|
-
|
|
191
|
-
### Validation
|
|
192
|
-
- \`opensaas_validate_feature\` - Validate implementation
|
|
193
|
-
|
|
194
|
-
## Conversation Guidelines
|
|
195
|
-
|
|
196
|
-
### When the user says "help me migrate" or similar:
|
|
197
|
-
|
|
198
|
-
1. **Acknowledge** their project:
|
|
199
|
-
> "I can see you have a {{PROJECT_TYPE}} project with {{MODEL_COUNT}} models. Let me help you migrate to OpenSaaS Stack!"
|
|
200
|
-
|
|
201
|
-
2. **Start the wizard** by calling:
|
|
202
|
-
\`\`\`
|
|
203
|
-
opensaas_start_migration({ projectType: "{{PROJECT_TYPE_LOWER}}" })
|
|
204
|
-
\`\`\`
|
|
205
|
-
|
|
206
|
-
3. **Present questions naturally** - don't mention session IDs or technical details to the user
|
|
207
|
-
|
|
208
|
-
4. **Explain choices** - help them understand what each option means:
|
|
209
|
-
- Access control patterns
|
|
210
|
-
- Authentication options
|
|
211
|
-
- Database configuration
|
|
212
|
-
|
|
213
|
-
5. **Show progress** - let them know how far along they are
|
|
214
|
-
|
|
215
|
-
6. **Generate the config** when complete and explain what was created
|
|
216
|
-
|
|
217
|
-
### When explaining OpenSaaS Stack:
|
|
161
|
+
## What's Configured
|
|
218
162
|
|
|
219
|
-
|
|
220
|
-
- **Built-in access control** - Secure by default
|
|
221
|
-
- **Admin UI** - Auto-generated from your schema
|
|
222
|
-
- **Type safety** - Full TypeScript support
|
|
223
|
-
- **Prisma integration** - Uses familiar ORM
|
|
224
|
-
- **Plugin system** - Easy to extend
|
|
163
|
+
### OpenSaaS Migration Plugin
|
|
225
164
|
|
|
226
|
-
|
|
165
|
+
The migration assistant plugin provides:
|
|
166
|
+
- **Migration Assistant Agent**: Contextual help throughout the migration
|
|
167
|
+
- **Slash Commands**: \`/analyze-schema\`, \`/generate-config\`, \`/validate-migration\`
|
|
168
|
+
- **Migration Skill**: Expert knowledge about migration patterns
|
|
227
169
|
|
|
228
|
-
|
|
229
|
-
- Use \`opensaas_get_example\` to show code patterns
|
|
230
|
-
- Be honest if something isn't supported
|
|
170
|
+
### MCP Server
|
|
231
171
|
|
|
232
|
-
|
|
172
|
+
The \`.mcp.json\` file configures the OpenSaaS migration MCP server with tools for:
|
|
173
|
+
- Schema analysis
|
|
174
|
+
- Interactive migration wizard
|
|
175
|
+
- Documentation search
|
|
176
|
+
- Code generation
|
|
233
177
|
|
|
234
|
-
|
|
235
|
-
- Explain technical concepts simply
|
|
236
|
-
- Celebrate progress ("Great choice!", "Almost there!")
|
|
237
|
-
- Don't overwhelm with information
|
|
178
|
+
When you open this project in Claude Code, you may be prompted to approve the MCP server.
|
|
238
179
|
|
|
239
|
-
##
|
|
240
|
-
|
|
241
|
-
**User:** Help me migrate to OpenSaaS Stack
|
|
242
|
-
|
|
243
|
-
**You:** I can see you have a {{PROJECT_TYPE}} project with {{MODEL_COUNT}} models. OpenSaaS Stack will give you:
|
|
244
|
-
|
|
245
|
-
- Automatic admin UI for managing your data
|
|
246
|
-
- Built-in access control to secure your API
|
|
247
|
-
- Type-safe database operations
|
|
248
|
-
|
|
249
|
-
Let me start the migration wizard to configure your project...
|
|
250
|
-
|
|
251
|
-
[Call opensaas_start_migration]
|
|
252
|
-
|
|
253
|
-
**User:** [answers questions]
|
|
254
|
-
|
|
255
|
-
**You:** [Continue through wizard, explain each choice, generate final config]
|
|
256
|
-
|
|
257
|
-
## Error Handling
|
|
258
|
-
|
|
259
|
-
If something goes wrong:
|
|
260
|
-
1. Explain what happened in simple terms
|
|
261
|
-
2. Suggest alternatives or manual steps
|
|
262
|
-
3. Link to documentation for more help
|
|
263
|
-
|
|
264
|
-
## After Migration
|
|
265
|
-
|
|
266
|
-
Once the config is generated, guide them through:
|
|
267
|
-
1. Installing dependencies
|
|
268
|
-
2. Running \`opensaas generate\`
|
|
269
|
-
3. Running \`prisma db push\`
|
|
270
|
-
4. Starting their dev server
|
|
271
|
-
5. Visiting the admin UI
|
|
272
|
-
`;
|
|
273
|
-
fs.writeFileSync(path.join(agentsDir, 'migration-assistant.md'), generateTemplateContent(agentTemplate, analysis));
|
|
274
|
-
// Create analyze-schema command
|
|
275
|
-
const analyzeSchemaTemplate = `Analyze the current project schema and provide a detailed breakdown.
|
|
276
|
-
|
|
277
|
-
## Instructions
|
|
278
|
-
|
|
279
|
-
1. Use \`opensaas_introspect_prisma\` or \`opensaas_introspect_keystone\` based on project type
|
|
280
|
-
2. Present the results in a clear, organized format
|
|
281
|
-
3. Highlight:
|
|
282
|
-
- All models and their fields
|
|
283
|
-
- Relationships between models
|
|
284
|
-
- Potential access control patterns
|
|
285
|
-
- Any issues or warnings
|
|
286
|
-
|
|
287
|
-
## Output Format
|
|
288
|
-
|
|
289
|
-
Present like this:
|
|
290
|
-
|
|
291
|
-
### Models Summary
|
|
292
|
-
|
|
293
|
-
| Model | Fields | Has Relations | Suggested Access |
|
|
294
|
-
|-------|--------|---------------|------------------|
|
|
295
|
-
| ... | ... | ... | ... |
|
|
296
|
-
|
|
297
|
-
### Detailed Analysis
|
|
298
|
-
|
|
299
|
-
[For each model, show fields and relationships]
|
|
300
|
-
|
|
301
|
-
### Recommendations
|
|
302
|
-
|
|
303
|
-
[Based on the schema, suggest access control patterns]
|
|
304
|
-
`;
|
|
305
|
-
fs.writeFileSync(path.join(commandsDir, 'analyze-schema.md'), analyzeSchemaTemplate);
|
|
306
|
-
// Create generate-config command
|
|
307
|
-
const generateConfigTemplate = `Generate the opensaas.config.ts file for this project.
|
|
308
|
-
|
|
309
|
-
## Instructions
|
|
310
|
-
|
|
311
|
-
1. If migration wizard hasn't been started, start it:
|
|
312
|
-
\`\`\`
|
|
313
|
-
opensaas_start_migration({ projectType: "{{PROJECT_TYPE_LOWER}}" })
|
|
314
|
-
\`\`\`
|
|
315
|
-
|
|
316
|
-
2. Guide the user through any remaining questions
|
|
317
|
-
|
|
318
|
-
3. When complete, display:
|
|
319
|
-
- The generated config file
|
|
320
|
-
- Dependencies to install
|
|
321
|
-
- Next steps to run
|
|
322
|
-
|
|
323
|
-
4. Offer to explain any part of the generated config
|
|
324
|
-
|
|
325
|
-
## Quick Mode
|
|
326
|
-
|
|
327
|
-
If the user wants defaults, use these answers:
|
|
328
|
-
- preserve_database: true
|
|
329
|
-
- db_provider: {{PROVIDER}}
|
|
330
|
-
- enable_auth: {{HAS_AUTH}}
|
|
331
|
-
- default_access: "public-read-auth-write"
|
|
332
|
-
- admin_base_path: "/admin"
|
|
333
|
-
`;
|
|
334
|
-
fs.writeFileSync(path.join(commandsDir, 'generate-config.md'), generateTemplateContent(generateConfigTemplate, analysis));
|
|
335
|
-
// Create validate-migration command
|
|
336
|
-
const validateMigrationTemplate = `Validate the generated opensaas.config.ts file.
|
|
337
|
-
|
|
338
|
-
## Instructions
|
|
339
|
-
|
|
340
|
-
1. Check if opensaas.config.ts exists in the project root
|
|
341
|
-
|
|
342
|
-
2. If it exists, verify:
|
|
343
|
-
- Syntax is valid TypeScript
|
|
344
|
-
- All imports are correct
|
|
345
|
-
- Database config is complete
|
|
346
|
-
- Lists match original schema
|
|
347
|
-
|
|
348
|
-
3. Try running:
|
|
349
|
-
\`\`\`bash
|
|
350
|
-
npx @opensaas/stack-cli generate
|
|
351
|
-
\`\`\`
|
|
352
|
-
|
|
353
|
-
4. Report any errors and suggest fixes
|
|
180
|
+
## Resources
|
|
354
181
|
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
- \`pnpm dev\`
|
|
182
|
+
- [OpenSaaS Stack Documentation](https://stack.opensaas.au/)
|
|
183
|
+
- [Migration Guide](https://stack.opensaas.au/guides/migration)
|
|
184
|
+
- [GitHub Repository](https://github.com/OpenSaasAU/stack)
|
|
359
185
|
|
|
360
|
-
|
|
186
|
+
---
|
|
361
187
|
|
|
362
|
-
|
|
363
|
-
- Database URL not set → remind about .env file
|
|
364
|
-
- Type errors → suggest specific fixes
|
|
188
|
+
*Generated by \`npx @opensaas/stack-cli migrate --with-ai\`*
|
|
365
189
|
`;
|
|
366
|
-
fs.writeFileSync(path.join(
|
|
190
|
+
fs.writeFileSync(path.join(claudeDir, 'README.md'), readmeContent);
|
|
367
191
|
}
|
|
368
192
|
/**
|
|
369
193
|
* Main migrate command
|
|
@@ -402,7 +226,7 @@ async function migrateCommand(options) {
|
|
|
402
226
|
analysis.models = prismaAnalysis.models;
|
|
403
227
|
analysis.provider = prismaAnalysis.provider;
|
|
404
228
|
}
|
|
405
|
-
catch
|
|
229
|
+
catch {
|
|
406
230
|
// Prisma analysis failed, continue without it
|
|
407
231
|
}
|
|
408
232
|
}
|
|
@@ -425,8 +249,10 @@ async function migrateCommand(options) {
|
|
|
425
249
|
await setupClaudeCode(cwd, analysis);
|
|
426
250
|
claudeSpinner.succeed(chalk.green('Claude Code ready'));
|
|
427
251
|
console.log(chalk.dim(' ├─ Created .claude directory'));
|
|
428
|
-
console.log(chalk.dim(' ├─
|
|
429
|
-
console.log(chalk.dim('
|
|
252
|
+
console.log(chalk.dim(' ├─ Installed opensaas-migration plugin'));
|
|
253
|
+
console.log(chalk.dim(' ├─ Configured .claude/settings.json'));
|
|
254
|
+
console.log(chalk.dim(' ├─ Wrote opensaas-project.json (project metadata)'));
|
|
255
|
+
console.log(chalk.dim(' └─ Created .mcp.json (MCP server config)'));
|
|
430
256
|
}
|
|
431
257
|
catch (error) {
|
|
432
258
|
claudeSpinner.fail(chalk.red('Failed to setup Claude Code'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,KAAK,EAAE,MAAM,IAAI,CAAA;AACxB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,KAAK,MAAM,OAAO,CAAA;AACzB,OAAO,GAAG,MAAM,KAAK,CAAA;AAQrB;;GAEG;AACH,KAAK,UAAU,iBAAiB,CAAC,GAAW;IAC1C,MAAM,KAAK,GAAkB,EAAE,CAAA;IAE/B,mBAAmB;IACnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;IAClE,IAAI,EAAE,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IACtB,CAAC;IAED,uBAAuB;IACvB,MAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IAC/D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;IACrD,IAAI,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACxE,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IACxB,CAAC;IAED,oBAAoB;IACpB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACtD,IAAI,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAA;QACjE,IAAI,GAAG,CAAC,YAAY,EAAE,IAAI,IAAI,GAAG,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC;YACxD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;QACtB,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,KAAK,UAAU,mBAAmB,CAAC,GAAW;IAI5C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,eAAe,CAAC,CAAA;IAC5D,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;IAEnD,iBAAiB;IACjB,MAAM,UAAU,GAAG,8BAA8B,CAAA;IACjD,MAAM,MAAM,GAAgD,EAAE,CAAA;IAC9D,IAAI,KAAK,CAAA;IAET,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACrB,MAAM,UAAU,GAAG,IAAI;aACpB,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CACL,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CACxF,CAAC,MAAM,CAAA;QACV,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,mBAAmB;IACnB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAA;IAC5D,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;IAE7D,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAA;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,SAAS,CAAC,OAAe;IAChC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC5C,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../src/commands/migrate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opensaas/stack-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.0",
|
|
4
4
|
"description": "CLI tools for OpenSaas Stack",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -18,6 +18,11 @@
|
|
|
18
18
|
"bin": {
|
|
19
19
|
"opensaas": "./bin/opensaas.js"
|
|
20
20
|
},
|
|
21
|
+
"files": [
|
|
22
|
+
"dist",
|
|
23
|
+
"bin",
|
|
24
|
+
"plugin"
|
|
25
|
+
],
|
|
21
26
|
"keywords": [
|
|
22
27
|
"opensaas",
|
|
23
28
|
"cli",
|
|
@@ -46,7 +51,7 @@
|
|
|
46
51
|
"ora": "^9.0.0",
|
|
47
52
|
"prompts": "^2.4.2",
|
|
48
53
|
"zod": "^4.1.13",
|
|
49
|
-
"@opensaas/stack-core": "0.
|
|
54
|
+
"@opensaas/stack-core": "0.6.0"
|
|
50
55
|
},
|
|
51
56
|
"devDependencies": {
|
|
52
57
|
"@types/fs-extra": "^11.0.4",
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "opensaas-migration",
|
|
3
|
+
"description": "OpenSaaS Stack migration assistant with AI-guided configuration, schema analysis, and code generation support",
|
|
4
|
+
"version": "1.0.0",
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "OpenSaaS Team",
|
|
7
|
+
"url": "https://github.com/OpenSaasAU/stack"
|
|
8
|
+
},
|
|
9
|
+
"repository": {
|
|
10
|
+
"type": "git",
|
|
11
|
+
"url": "https://github.com/OpenSaasAU/stack",
|
|
12
|
+
"directory": "packages/cli/plugin"
|
|
13
|
+
},
|
|
14
|
+
"keywords": ["migration", "opensaas", "prisma", "keystone", "nextjs", "code-generation"]
|
|
15
|
+
}
|