Ctrl K
ComunidadGuías…

scripts/control-pane.js

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

Archivo original ↗Preguntar a KiBot
#!/usr/bin/env node
'use strict';

const {
  createControlPaneServer,
  parseArgs,
  usage,
} = require('./lib/control-pane/server');
const { describeMissingDependencyError } = require('./lib/missing-dependency');

// openBrowser is now in scripts/lib/platform-launch.js — keep a thin wrapper
// for backwards compatibility, but surface the structured result.
const { openBrowser: launchOpenBrowser } = require('./lib/platform-launch');
function openBrowser(url) {
  const result = launchOpenBrowser(url);
  if (!result.opened) {
    console.error(`[control-pane] failed to open browser: ${result.reason}`);
  }
}

async function main(argv = process.argv) {
  const args = parseArgs(argv);

  if (args.help) {
    console.log(usage());
    return;
  }

  const app = createControlPaneServer(args);
  await app.listen();

  console.log(`ECC Control Pane: ${app.url}`);
  console.log(`ECC2 database: ${app.config.dbPath}`);
  console.log(`ECC state database: ${app.config.stateDbPath}`);
  console.log(args.allowActions ? 'Actions: enabled for local allowlist' : 'Actions: read-only');

  if (args.openBrowser) {
    openBrowser(app.url);
  }

  const shutdown = async () => {
    try {
      await app.close();
    } finally {
      process.exit(0);
    }
  };

  process.on('SIGINT', shutdown);
  process.on('SIGTERM', shutdown);
}

if (require.main === module) {
  main().catch(error => {
    console.error(`[control-pane] ${describeMissingDependencyError(error) || error.message}`);
    process.exit(1);
  });
}

module.exports = {
  main,
  openBrowser,
};