@marionette-app/cli 1.3.2 → 1.3.4

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marionette-app/cli",
3
- "version": "1.3.2",
3
+ "version": "1.3.4",
4
4
  "description": "Real-time monitoring for Claude Code sessions",
5
5
  "bin": {
6
6
  "marionette": "./bin/marionette.js"
@@ -53,12 +53,11 @@ module.exports = function bootstrap() {
53
53
  };
54
54
 
55
55
  function download(url, dest, callback) {
56
- const file = fs.createWriteStream(dest);
57
-
58
56
  function get(urlStr) {
59
57
  https.get(urlStr, (res) => {
60
- if (res.statusCode === 301 || res.statusCode === 302) {
61
- file.destroy();
58
+ // Follow redirects (GitHub releases redirect to CDN)
59
+ if (res.statusCode === 301 || res.statusCode === 302 || res.statusCode === 307 || res.statusCode === 308) {
60
+ res.resume(); // drain so connection is released
62
61
  get(res.headers.location);
63
62
  return;
64
63
  }
@@ -67,6 +66,7 @@ function download(url, dest, callback) {
67
66
  process.exit(1);
68
67
  }
69
68
 
69
+ const file = fs.createWriteStream(dest);
70
70
  const total = parseInt(res.headers['content-length'] || '0', 10);
71
71
  let received = 0;
72
72
 
@@ -85,6 +85,11 @@ function download(url, dest, callback) {
85
85
  callback();
86
86
  });
87
87
  });
88
+ file.on('error', (err) => {
89
+ fs.unlink(dest, () => {});
90
+ console.error(`Write error: ${err.message}`);
91
+ process.exit(1);
92
+ });
88
93
  }).on('error', (err) => {
89
94
  fs.unlink(dest, () => {});
90
95
  console.error(`Download error: ${err.message}`);