voyageai-cli 1.20.2 → 1.20.3

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/commands/app.js +51 -12
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "voyageai-cli",
3
- "version": "1.20.2",
3
+ "version": "1.20.3",
4
4
  "description": "CLI for Voyage AI embeddings, reranking, and MongoDB Atlas Vector Search",
5
5
  "bin": {
6
6
  "vai": "./src/cli.js"
@@ -64,17 +64,57 @@ function registerApp(program) {
64
64
 
65
65
  // --download: fetch latest GitHub release and open download URL
66
66
  if (opts.download) {
67
- const releaseUrl = 'https://api.github.com/repos/mrlynn/voyageai-cli/releases/latest';
67
+ // Try /releases/latest first, then scan all releases for app-v* tags
68
+ const latestUrl = 'https://api.github.com/repos/mrlynn/voyageai-cli/releases/latest';
69
+ const allUrl = 'https://api.github.com/repos/mrlynn/voyageai-cli/releases?per_page=10';
68
70
  try {
69
71
  console.log('šŸ” Checking for the latest desktop app release...');
70
- const release = await fetchJSON(releaseUrl);
72
+
73
+ let release;
74
+ try {
75
+ release = await fetchJSON(latestUrl);
76
+ } catch {
77
+ // /releases/latest might 404 — fall back to scanning
78
+ release = null;
79
+ }
80
+
81
+ // If latest release has no assets or isn't an app release, scan all
82
+ if (!release || !release.assets || release.assets.length === 0) {
83
+ const releases = await fetchJSON(allUrl);
84
+ release = releases.find(
85
+ (r) => !r.draft && !r.prerelease && r.assets && r.assets.length > 0
86
+ && r.tag_name && r.tag_name.startsWith('app-v')
87
+ );
88
+ }
89
+
90
+ if (!release || !release.assets) {
91
+ console.log('\nāŒ No desktop app releases found on GitHub.');
92
+ console.log(' Run \'vai playground\' for the web version instead.');
93
+ console.log(' Or visit: https://github.com/mrlynn/voyageai-cli/releases');
94
+ return;
95
+ }
71
96
 
72
97
  const extMap = { darwin: '.dmg', win32: '.exe', linux: '.AppImage' };
73
98
  const ext = extMap[process.platform];
74
99
 
75
- const asset = ext && release.assets
76
- ? release.assets.find((a) => a.name.endsWith(ext))
77
- : null;
100
+ if (!ext) {
101
+ console.log(`\n⚠ No desktop app available for ${process.platform}.`);
102
+ console.log(' Run \'vai playground\' for the web version instead.');
103
+ return;
104
+ }
105
+
106
+ // Find matching asset — prefer arch-specific on macOS (arm64 vs x64)
107
+ const candidates = release.assets.filter((a) => a.name.endsWith(ext));
108
+ let asset = null;
109
+
110
+ if (candidates.length > 1 && process.platform === 'darwin') {
111
+ const arch = process.arch; // 'arm64' or 'x64'
112
+ asset = candidates.find((a) => a.name.includes(arch))
113
+ || candidates.find((a) => a.name.includes('arm64')) // default to arm64
114
+ || candidates[0];
115
+ } else {
116
+ asset = candidates[0] || null;
117
+ }
78
118
 
79
119
  if (asset) {
80
120
  console.log(`\nāœ… Found release: ${release.tag_name || release.name}`);
@@ -83,15 +123,14 @@ function registerApp(program) {
83
123
  console.log('Opening download in your browser...');
84
124
  openInBrowser(asset.browser_download_url);
85
125
  } else {
86
- console.log(
87
- "No desktop app release found for your platform. Run 'vai playground' for the web version."
88
- );
126
+ console.log(`\nāŒ No ${ext} asset found in release ${release.tag_name}.`);
127
+ console.log(' Available assets:');
128
+ release.assets.forEach((a) => console.log(` • ${a.name}`));
129
+ console.log(`\n Visit: https://github.com/mrlynn/voyageai-cli/releases`);
89
130
  }
90
131
  } catch (err) {
91
- console.error(
92
- "No desktop app release found. Run 'vai playground' for the web version."
93
- );
94
- if (process.env.DEBUG) console.error(err);
132
+ console.error('āŒ Failed to check GitHub releases:', err.message);
133
+ console.error(' Visit: https://github.com/mrlynn/voyageai-cli/releases');
95
134
  }
96
135
  return;
97
136
  }