vibora 0.1.13 → 0.1.14
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/bin/vibora.js +22 -3
- package/package.json +1 -1
package/bin/vibora.js
CHANGED
|
@@ -441,7 +441,8 @@ async function handleTasksCommand(action, positional, flags) {
|
|
|
441
441
|
}
|
|
442
442
|
|
|
443
443
|
// cli/src/commands/up.ts
|
|
444
|
-
import { spawn } from "child_process";
|
|
444
|
+
import { spawn, execSync } from "child_process";
|
|
445
|
+
import { existsSync as existsSync3 } from "fs";
|
|
445
446
|
import { dirname as dirname2, join as join3 } from "path";
|
|
446
447
|
import { fileURLToPath } from "url";
|
|
447
448
|
|
|
@@ -501,11 +502,29 @@ function getPort(portOverride) {
|
|
|
501
502
|
}
|
|
502
503
|
|
|
503
504
|
// cli/src/commands/up.ts
|
|
505
|
+
function isDtachInstalled() {
|
|
506
|
+
try {
|
|
507
|
+
execSync("which dtach", { stdio: "ignore" });
|
|
508
|
+
return true;
|
|
509
|
+
} catch {
|
|
510
|
+
return false;
|
|
511
|
+
}
|
|
512
|
+
}
|
|
504
513
|
function getPackageRoot() {
|
|
505
514
|
const currentFile = fileURLToPath(import.meta.url);
|
|
515
|
+
let dir = dirname2(currentFile);
|
|
516
|
+
for (let i = 0;i < 5; i++) {
|
|
517
|
+
if (existsSync3(join3(dir, "server", "index.js"))) {
|
|
518
|
+
return dir;
|
|
519
|
+
}
|
|
520
|
+
dir = dirname2(dir);
|
|
521
|
+
}
|
|
506
522
|
return dirname2(dirname2(dirname2(currentFile)));
|
|
507
523
|
}
|
|
508
524
|
async function handleUpCommand(flags) {
|
|
525
|
+
if (!isDtachInstalled()) {
|
|
526
|
+
throw new CliError("MISSING_DEPENDENCY", "dtach is required but not installed. Install it with: brew install dtach (macOS) or apt install dtach (Linux)", ExitCodes.ERROR);
|
|
527
|
+
}
|
|
509
528
|
const existingPid = readPid();
|
|
510
529
|
if (existingPid && isProcessRunning(existingPid)) {
|
|
511
530
|
throw new CliError("ALREADY_RUNNING", `Vibora server is already running (PID: ${existingPid})`, ExitCodes.ERROR);
|
|
@@ -703,7 +722,7 @@ async function handleHealthCommand(flags) {
|
|
|
703
722
|
import * as fs from "fs";
|
|
704
723
|
import * as path from "path";
|
|
705
724
|
import * as os from "os";
|
|
706
|
-
import { execSync } from "child_process";
|
|
725
|
+
import { execSync as execSync2 } from "child_process";
|
|
707
726
|
import { fileURLToPath as fileURLToPath2 } from "url";
|
|
708
727
|
function getClaudeSettingsPath(global) {
|
|
709
728
|
if (global) {
|
|
@@ -740,7 +759,7 @@ function getViboraHookPath() {
|
|
|
740
759
|
for (const p of possiblePaths) {
|
|
741
760
|
if (p === "vibora-plan-complete-hook") {
|
|
742
761
|
try {
|
|
743
|
-
|
|
762
|
+
execSync2("which vibora-plan-complete-hook", { stdio: "pipe" });
|
|
744
763
|
return "vibora-plan-complete-hook";
|
|
745
764
|
} catch {
|
|
746
765
|
continue;
|