@@ -166,6 +166,15 @@ async function createProject() {
166
166
async function handleCliClient ( ) {
167
167
console . log ( "🔧 Setting up CLI client...\n" ) ;
168
168
169
+ // Get current package versions from the monorepo
170
+ console . log ( "🔍 Reading current package versions..." ) ;
171
+ const versions = await getCurrentPackageVersions ( ) ;
172
+ console . log ( `📋 Found versions: ${ Object . keys ( versions ) . length } packages` ) ;
173
+ Object . entries ( versions ) . forEach ( ( [ name , version ] ) => {
174
+ console . log ( ` - ${ name } : ${ version } ` ) ;
175
+ } ) ;
176
+ console . log ( "" ) ;
177
+
169
178
const projectName = await inquirer . prompt ( [
170
179
{
171
180
type : "input" ,
@@ -193,8 +202,14 @@ async function handleCliClient() {
193
202
} ) ;
194
203
195
204
console . log ( "✅ CLI client template downloaded successfully!" ) ;
205
+
206
+ // Update workspace dependencies with actual versions
207
+ console . log ( "\n🔄 Updating workspace dependencies..." ) ;
208
+ await updateWorkspaceDependencies ( projectName . name , versions ) ;
209
+
196
210
console . log ( `\n📁 Project created in: ${ projectName . name } ` ) ;
197
211
console . log ( "\n🚀 Next steps:" ) ;
212
+ console . log ( " export OPENAI_API_KEY='your-openai-api-key'" ) ;
198
213
console . log ( ` cd ${ projectName . name } ` ) ;
199
214
console . log ( " npm install" ) ;
200
215
console . log ( " npm run dev" ) ;
@@ -222,3 +237,75 @@ program.action(async () => {
222
237
} ) ;
223
238
224
239
program . parse ( ) ;
240
+
241
+ // Utility functions
242
+
243
+ // Helper function to get package versions from npmjs
244
+ async function getCurrentPackageVersions ( ) : Promise < { [ key : string ] : string } > {
245
+ const packages = [ "@ag-ui/client" , "@ag-ui/core" , "@ag-ui/mastra" ] ;
246
+ const versions : { [ key : string ] : string } = { } ;
247
+
248
+ for ( const packageName of packages ) {
249
+ try {
250
+ // Fetch package info from npm registry
251
+ const response = await fetch ( `https://registry.npmjs.org/${ packageName } ` ) ;
252
+ if ( response . ok ) {
253
+ const packageInfo = await response . json ( ) ;
254
+ versions [ packageName ] = packageInfo [ "dist-tags" ] ?. latest || "latest" ;
255
+ console . log ( ` ✓ ${ packageName } : ${ versions [ packageName ] } ` ) ;
256
+ } else {
257
+ console . log ( ` ⚠️ Could not fetch version for ${ packageName } ` ) ;
258
+ // Fallback to latest
259
+ versions [ packageName ] = "latest" ;
260
+ }
261
+ } catch ( error ) {
262
+ console . log ( ` ⚠️ Error fetching ${ packageName } : ${ error } ` ) ;
263
+ // Fallback to latest
264
+ versions [ packageName ] = "latest" ;
265
+ }
266
+ }
267
+
268
+ return versions ;
269
+ }
270
+
271
+ // Function to update workspace dependencies in downloaded project
272
+ async function updateWorkspaceDependencies (
273
+ projectPath : string ,
274
+ versions : { [ key : string ] : string } ,
275
+ ) {
276
+ const packageJsonPath = path . join ( projectPath , "package.json" ) ;
277
+
278
+ try {
279
+ if ( ! fs . existsSync ( packageJsonPath ) ) {
280
+ console . log ( "⚠️ No package.json found in downloaded project" ) ;
281
+ return ;
282
+ }
283
+
284
+ const packageJson = JSON . parse ( fs . readFileSync ( packageJsonPath , "utf-8" ) ) ;
285
+ let updated = false ;
286
+
287
+ // Update workspace dependencies with actual versions
288
+ if ( packageJson . dependencies ) {
289
+ for ( const [ depName , depVersion ] of Object . entries ( packageJson . dependencies ) ) {
290
+ if (
291
+ typeof depVersion === "string" &&
292
+ depVersion . startsWith ( "workspace:" ) &&
293
+ versions [ depName ]
294
+ ) {
295
+ packageJson . dependencies [ depName ] = `^${ versions [ depName ] } ` ;
296
+ updated = true ;
297
+ console . log ( ` 📦 Updated ${ depName } : workspace:* → ^${ versions [ depName ] } ` ) ;
298
+ }
299
+ }
300
+ }
301
+
302
+ if ( updated ) {
303
+ fs . writeFileSync ( packageJsonPath , JSON . stringify ( packageJson , null , 2 ) + "\n" ) ;
304
+ console . log ( "✅ Package.json updated with actual package versions!" ) ;
305
+ } else {
306
+ console . log ( "📄 No workspace dependencies found to update" ) ;
307
+ }
308
+ } catch ( error ) {
309
+ console . log ( `❌ Error updating package.json: ${ error } ` ) ;
310
+ }
311
+ }
0 commit comments