panopticon-cli 0.6.1 → 0.6.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.
package/README.md CHANGED
@@ -26,7 +26,7 @@ Panopticon is an open-source control plane for multi-agent software development.
26
26
  ## Quick Start
27
27
 
28
28
  ```bash
29
- npm install -g panopticon-cli && pan install && pan sync && pan up
29
+ npx panopticon-cli@latest install && pan sync && pan up
30
30
  ```
31
31
 
32
32
  Dashboard runs at https://pan.localhost (or http://localhost:3011 if you skip HTTPS setup).
package/dist/cli/index.js CHANGED
@@ -16860,28 +16860,37 @@ program.addCommand(createCostCommand());
16860
16860
  program.command("sync-costs").description("Import cost events from per-project WAL files (alias for: pan cost sync)").action(async () => {
16861
16861
  await program.parseAsync(["cost", "sync"], { from: "user" });
16862
16862
  });
16863
- program.command("serve").description("Start the dashboard server and open it in the default browser (npx launcher)").option("--port <port>", "Port to listen on", "7825").action(async (options) => {
16864
- const { spawn } = await import("child_process");
16863
+ program.command("serve").description("Start the dashboard server and open it in the default browser (npx launcher)").option("--port <port>", "Port to listen on", "3011").action(async (options) => {
16864
+ const { spawn, execSync } = await import("child_process");
16865
16865
  const { join, dirname } = await import("path");
16866
16866
  const { fileURLToPath } = await import("url");
16867
16867
  const { existsSync } = await import("fs");
16868
+ const nodeVersion = process.versions.node;
16869
+ if (parseInt(nodeVersion.split(".")[0], 10) < 22) {
16870
+ console.error(chalk.red(`Error: Panopticon dashboard requires Node.js 22 or later.`));
16871
+ console.error(chalk.dim(`You are running Node.js ${nodeVersion}.`));
16872
+ console.error("");
16873
+ console.error("Install Node 22:");
16874
+ console.error(chalk.dim(" nvm install 22 && nvm use 22"));
16875
+ console.error(chalk.dim(" # or: brew install node@22"));
16876
+ console.error(chalk.dim(" # or: https://nodejs.org/en/download"));
16877
+ process.exit(1);
16878
+ }
16868
16879
  const bundledServer = join(dirname(fileURLToPath(import.meta.url)), "..", "dashboard", "server.js");
16869
- const port = parseInt(options.port, 10) || 7825;
16880
+ const port = parseInt(options.port, 10) || 3011;
16870
16881
  const url = `http://localhost:${port}`;
16871
16882
  if (!existsSync(bundledServer)) {
16872
16883
  console.error(chalk.red("Error: Dashboard server not found."));
16873
16884
  console.error(chalk.dim("This package may not be fully built. Try: npm run build"));
16874
16885
  process.exit(1);
16875
16886
  }
16876
- const nvmNode = "/home/eltmon/.config/nvm/versions/node/v22.22.0/bin/node";
16877
- const node22 = existsSync(nvmNode) ? nvmNode : "node";
16878
16887
  console.log(chalk.bold("Panopticon Dashboard"));
16879
- console.log(chalk.dim(`Starting server on port ${port}...`));
16880
- spawn(node22, [bundledServer], {
16888
+ console.log(chalk.dim(`Starting server on port ${port} (Node ${nodeVersion})...`));
16889
+ spawn(process.execPath, [bundledServer], {
16881
16890
  stdio: "inherit",
16882
16891
  env: {
16883
16892
  ...process.env,
16884
- PANOPTICON_PORT: String(port)
16893
+ PORT: String(port)
16885
16894
  }
16886
16895
  }).on("error", (err) => {
16887
16896
  console.error(chalk.red("Failed to start dashboard:"), err.message);