Ctrl K
ComunidadGuías…

scripts/fix-node-pty-permissions.js

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
// ========= Copyright 2025-2026 @ Eigent.ai All Rights Reserved. =========
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
// ========= Copyright 2025-2026 @ Eigent.ai All Rights Reserved. =========

/* global console, process */

// npm strips the execute bit from node-pty's prebuilt `spawn-helper` on
// macOS, which makes every pty.spawn() fail with "posix_spawnp failed".
// Restore it after install. No-op on other platforms / missing files.
import { chmodSync, existsSync, readdirSync } from 'node:fs';
import { dirname, join } from 'node:path';
import { fileURLToPath } from 'node:url';

if (process.platform !== 'win32') {
  const root = dirname(dirname(fileURLToPath(import.meta.url)));
  const prebuilds = join(root, 'node_modules', 'node-pty', 'prebuilds');
  if (existsSync(prebuilds)) {
    for (const target of readdirSync(prebuilds)) {
      const helper = join(prebuilds, target, 'spawn-helper');
      if (existsSync(helper)) {
        try {
          chmodSync(helper, 0o755);
          console.log(`[fix-node-pty] chmod +x ${helper}`);
        } catch (error) {
          console.warn(`[fix-node-pty] failed for ${helper}:`, error.message);
        }
      }
    }
  }
}