@codebakers/mcp 5.4.4 → 5.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/dist/tools/start.d.ts.map +1 -1
- package/dist/tools/start.js +77 -109
- package/dist/tools/start.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,wBAAsB,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"start.d.ts","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,wBAAsB,KAAK,CAAC,IAAI,EAAE,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAyNrD"}
|
package/dist/tools/start.js
CHANGED
|
@@ -33,8 +33,28 @@ export async function start(args) {
|
|
|
33
33
|
.catch(() => false);
|
|
34
34
|
// Determine current state and provide interactive guidance
|
|
35
35
|
if (!codebakersExists) {
|
|
36
|
-
// Brand new
|
|
37
|
-
return `🍞 **Welcome to CodeBakers
|
|
36
|
+
// Brand new user, first time
|
|
37
|
+
return `🍞 **Hey! Welcome to CodeBakers, powered by BotMakers.**
|
|
38
|
+
|
|
39
|
+
I'm your professional coding partner, ready to help you build amazing things!
|
|
40
|
+
|
|
41
|
+
Here's what makes this different - **you can talk to me like a regular person.** No commands to memorize, no complex setup, just natural conversation.
|
|
42
|
+
|
|
43
|
+
**I can help you in three ways:**
|
|
44
|
+
|
|
45
|
+
✨ **Build it FOR you** - Describe your idea, and I'll take it from concept to deployed app (usually ~30 minutes)
|
|
46
|
+
|
|
47
|
+
🤝 **Build it WITH you** - We'll work together step-by-step. You make the decisions, I handle the technical heavy lifting.
|
|
48
|
+
|
|
49
|
+
📚 **Teach you while we build** - Want to learn? I'll explain what I'm doing and why, so you understand the whole process.
|
|
50
|
+
|
|
51
|
+
**The best part?** You don't need to know how to code. Just tell me what you want to create, and I'll guide you from there.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
**So... what do you want to build today?**
|
|
56
|
+
|
|
57
|
+
(Just describe it in your own words - like "a recipe app" or "a task manager for my team" - and I'll take care of the rest!)
|
|
38
58
|
|
|
39
59
|
I'm your AI development partner. Together, we'll build your application from idea to deployed product in 30 minutes.
|
|
40
60
|
|
|
@@ -79,107 +99,70 @@ One command and your app is live on Vercel with Supabase backend.
|
|
|
79
99
|
_I'll take it from there and guide you through each step._`;
|
|
80
100
|
}
|
|
81
101
|
else if (!specExists) {
|
|
82
|
-
// .codebakers exists but no spec
|
|
83
|
-
return `🍞 **CodeBakers
|
|
102
|
+
// .codebakers exists but no spec - returning user starting fresh project
|
|
103
|
+
return `🍞 **Welcome back to CodeBakers!**
|
|
84
104
|
|
|
85
|
-
I see you'
|
|
105
|
+
I see you're starting a new project. Exciting!
|
|
86
106
|
|
|
87
|
-
**
|
|
107
|
+
**Quick reminder:** You can talk to me like a regular person. Just describe what you want to build, and I'll handle everything - from planning to deployment.
|
|
88
108
|
|
|
89
|
-
|
|
109
|
+
---
|
|
90
110
|
|
|
91
|
-
|
|
92
|
-
- "Helps freelancers track time and generate invoices"
|
|
93
|
-
- "Lets teams collaborate on documents in real-time"
|
|
94
|
-
- "Manages inventory for small retail stores"
|
|
111
|
+
**What's your idea for this project?**
|
|
95
112
|
|
|
96
|
-
|
|
97
|
-
1. Research the domain
|
|
98
|
-
2. Identify all necessary features
|
|
99
|
-
3. Design the database schema
|
|
100
|
-
4. Create a complete specification
|
|
113
|
+
(Describe it in your own words - like "an expense tracker for freelancers" or "a booking system for salons")
|
|
101
114
|
|
|
102
|
-
|
|
115
|
+
I'll research your idea, plan out all the features, and we'll get building!`;
|
|
103
116
|
}
|
|
104
117
|
else if (specExists && !mockupsExist) {
|
|
105
|
-
// Have spec, need mockups
|
|
118
|
+
// Have spec, need mockups - user paused after planning
|
|
106
119
|
const specContent = await fs.readFile(specPath, 'utf-8');
|
|
107
120
|
const projectName = specContent.match(/# (.+)/)?.[1] || 'Your Project';
|
|
108
|
-
return `🍞 **
|
|
121
|
+
return `🍞 **Welcome back!** You're building: **${projectName}**
|
|
109
122
|
|
|
110
|
-
|
|
123
|
+
Great news - your spec is all done! I've mapped out all the features and know exactly what needs to be built.
|
|
111
124
|
|
|
112
|
-
**Next
|
|
125
|
+
**Next up:** I need to see what you want it to look like. The designs help me figure out the perfect database structure and how everything connects.
|
|
113
126
|
|
|
114
|
-
|
|
115
|
-
- Database schema matches your UI exactly
|
|
116
|
-
- No missing features
|
|
117
|
-
- No unused tables
|
|
118
|
-
- Perfect dependency mapping
|
|
127
|
+
**Three easy options:**
|
|
119
128
|
|
|
120
|
-
**
|
|
129
|
+
🎨 **Upload designs** - Got Figma mockups? Just drag them into the \`refs/design/\` folder
|
|
121
130
|
|
|
122
|
-
**
|
|
123
|
-
- Export from Figma as PNG/SVG
|
|
124
|
-
- Place in \`refs/design/\` folder
|
|
125
|
-
- I'll validate quality automatically
|
|
131
|
+
✨ **Let me generate them** - Tell me what screens you're thinking, and I'll create mockups for you
|
|
126
132
|
|
|
127
|
-
**
|
|
128
|
-
- Tell me: "Generate mockups for [feature]"
|
|
129
|
-
- I'll create professional designs
|
|
130
|
-
- You can refine as needed
|
|
131
|
-
|
|
132
|
-
**Option 3: Hand-drawn sketches**
|
|
133
|
-
- Take photos of sketches
|
|
134
|
-
- Place in \`refs/design/\`
|
|
135
|
-
- I'll analyze and understand them
|
|
133
|
+
📝 **Sketch it out** - Even hand-drawn sketches work! Take a photo and I'll understand it
|
|
136
134
|
|
|
137
135
|
---
|
|
138
136
|
|
|
139
|
-
**
|
|
140
|
-
|
|
141
|
-
_(Or if you already have mockups, let me know and I'll validate them)_`;
|
|
137
|
+
**What works best for you?**`;
|
|
142
138
|
}
|
|
143
139
|
else if (mockupsExist && !buildStateExists) {
|
|
144
|
-
// Have spec + mockups, ready to
|
|
145
|
-
return `🍞 **
|
|
140
|
+
// Have spec + mockups, ready to build - everything is set!
|
|
141
|
+
return `🍞 **Perfect! You're all set to build.**
|
|
146
142
|
|
|
147
|
-
|
|
148
|
-
✅
|
|
143
|
+
I've got:
|
|
144
|
+
✅ Your complete project spec
|
|
145
|
+
✅ Your design mockups
|
|
149
146
|
|
|
150
|
-
**
|
|
147
|
+
**Here's what happens next:**
|
|
151
148
|
|
|
152
|
-
|
|
149
|
+
I'm going to analyze your designs and build your entire app. This usually takes 15-30 minutes depending on complexity.
|
|
153
150
|
|
|
154
|
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
151
|
+
I'll:
|
|
152
|
+
- Extract the database structure from your mockups
|
|
153
|
+
- Build all the features
|
|
154
|
+
- Add authentication & security
|
|
155
|
+
- Create tests
|
|
156
|
+
- Make it mobile-friendly
|
|
158
157
|
|
|
159
|
-
**
|
|
160
|
-
- Extract all components
|
|
161
|
-
- Identify all data fields
|
|
162
|
-
- Map relationships and dependencies
|
|
163
|
-
- Generate database schema
|
|
164
|
-
|
|
165
|
-
**3. Build everything** (15-30 minutes)
|
|
166
|
-
- Complete vertical slices for each feature
|
|
167
|
-
- All tests included
|
|
168
|
-
- Production-ready code
|
|
158
|
+
**And I'll keep you updated the whole time** so you can see the progress!
|
|
169
159
|
|
|
170
160
|
---
|
|
171
161
|
|
|
172
|
-
**Ready to start
|
|
173
|
-
|
|
174
|
-
**Type one of these:**
|
|
175
|
-
1. **"Validate mockups"** - I'll check quality first
|
|
176
|
-
2. **"Start building"** - Skip validation, analyze and build
|
|
177
|
-
3. **"Show me the spec"** - Review PROJECT-SPEC.md first
|
|
178
|
-
|
|
179
|
-
**What would you like to do?**`;
|
|
162
|
+
**Ready to go?** Just say "start building" (or really, anything - I know what to do! 😊)`;
|
|
180
163
|
}
|
|
181
164
|
else {
|
|
182
|
-
// Existing project with build state
|
|
165
|
+
// Existing project with build state - returning user continuing work
|
|
183
166
|
const buildState = await fs.readFile(buildStatePath, 'utf-8');
|
|
184
167
|
// Parse current phase
|
|
185
168
|
const phaseMatch = buildState.match(/Current Phase: (\d+)/);
|
|
@@ -188,54 +171,39 @@ Before I start building, I need to:
|
|
|
188
171
|
const completedMatch = buildState.match(/Features Complete: (\d+)\/(\d+)/);
|
|
189
172
|
const completed = completedMatch ? parseInt(completedMatch[1]) : 0;
|
|
190
173
|
const total = completedMatch ? parseInt(completedMatch[2]) : 0;
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
174
|
+
// Parse project name
|
|
175
|
+
const specContent = specExists ? await fs.readFile(specPath, 'utf-8') : '';
|
|
176
|
+
const projectName = specContent.match(/# (.+)/)?.[1] || 'Your App';
|
|
177
|
+
// Create friendly progress message
|
|
178
|
+
let progressMsg = '';
|
|
179
|
+
if (completed === total && total > 0) {
|
|
180
|
+
progressMsg = `🎉 All ${total} features are complete!`;
|
|
181
|
+
}
|
|
182
|
+
else if (completed > 0) {
|
|
183
|
+
progressMsg = `You've built ${completed} out of ${total} features - great progress!`;
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
progressMsg = `Ready to start building your ${total} features!`;
|
|
187
|
+
}
|
|
188
|
+
return `🍞 **Welcome back!** Let's continue working on **${projectName}**.
|
|
189
|
+
|
|
190
|
+
${progressMsg}
|
|
206
191
|
|
|
207
192
|
---
|
|
208
193
|
|
|
209
194
|
**What would you like to do?**
|
|
210
195
|
|
|
211
|
-
**
|
|
212
|
-
- Resume where we left off
|
|
213
|
-
- Build remaining features
|
|
214
|
-
- Complete current phase
|
|
215
|
-
|
|
216
|
-
**Option 2: Review progress** 📊
|
|
217
|
-
- Show BUILD-STATE.md
|
|
218
|
-
- List completed features
|
|
219
|
-
- Show what's left
|
|
196
|
+
**Keep building?** I'll pick up right where we left off and continue with the next features.
|
|
220
197
|
|
|
221
|
-
**
|
|
222
|
-
- Expand scope (I'll update spec)
|
|
223
|
-
- Generate new mockups
|
|
224
|
-
- Build additional functionality
|
|
198
|
+
**Add something new?** Tell me what you want to add and I'll update the plan and build it.
|
|
225
199
|
|
|
226
|
-
**
|
|
227
|
-
- Run final tests
|
|
228
|
-
- Security audit
|
|
229
|
-
- Deploy to production
|
|
200
|
+
**Ready to deploy?** If everything's done, I can get your app live in a few minutes.
|
|
230
201
|
|
|
231
|
-
**
|
|
232
|
-
- Keep existing code
|
|
233
|
-
- Start new feature branch
|
|
234
|
-
- Clean build state
|
|
202
|
+
**Review what's done?** I can show you what we've built and what's left.
|
|
235
203
|
|
|
236
204
|
---
|
|
237
205
|
|
|
238
|
-
**Just tell me
|
|
206
|
+
**Just tell me - I'm here to help however you need!** 😊`;
|
|
239
207
|
}
|
|
240
208
|
}
|
|
241
209
|
catch (error) {
|
package/dist/tools/start.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,KAAK,UAAU,KAAK,CAAC,IAAQ;IAClC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;IAE1D,IAAI,CAAC;QACH,8BAA8B;QAC9B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACpD,MAAM,gBAAgB,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAE5F,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,CAAC,CAAC;QAC7D,MAAM,UAAU,GAAG,gBAAgB,IAAI,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAErG,2BAA2B;QAC3B,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,gBAAgB,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAAG,gBAAgB,IAAI,MAAM,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAEjH,oBAAoB;QACpB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC;aAC5C,IAAI,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC,CAAC;QAClE,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;QAEtB,2DAA2D;QAC3D,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACtB,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/tools/start.ts"],"names":[],"mappings":"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"}
|