Skip to content

Commit 84d393f

Browse files
committed
create a CLI client
1 parent a851c53 commit 84d393f

File tree

1 file changed

+87
-0
lines changed

1 file changed

+87
-0
lines changed

typescript-sdk/packages/cli/src/index.ts

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,15 @@ async function createProject() {
166166
async function handleCliClient() {
167167
console.log("🔧 Setting up CLI client...\n");
168168

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+
169178
const projectName = await inquirer.prompt([
170179
{
171180
type: "input",
@@ -193,8 +202,14 @@ async function handleCliClient() {
193202
});
194203

195204
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+
196210
console.log(`\n📁 Project created in: ${projectName.name}`);
197211
console.log("\n🚀 Next steps:");
212+
console.log(" export OPENAI_API_KEY='your-openai-api-key'");
198213
console.log(` cd ${projectName.name}`);
199214
console.log(" npm install");
200215
console.log(" npm run dev");
@@ -222,3 +237,75 @@ program.action(async () => {
222237
});
223238

224239
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

Comments
 (0)