@open-code-review/cli 1.10.1 → 1.10.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/dist/dashboard/server.js +61 -39
- package/dist/index.js +29 -10
- package/package.json +4 -3
package/dist/dashboard/server.js
CHANGED
|
@@ -22752,7 +22752,7 @@ async function defaultBrowserId() {
|
|
|
22752
22752
|
if (process4.platform !== "darwin") {
|
|
22753
22753
|
throw new Error("macOS only");
|
|
22754
22754
|
}
|
|
22755
|
-
const { stdout } = await
|
|
22755
|
+
const { stdout } = await execFileAsync("defaults", ["read", "com.apple.LaunchServices/com.apple.launchservices.secure", "LSHandlers"]);
|
|
22756
22756
|
const match = /LSHandlerRoleAll = "(?!-)(?<id>[^"]+?)";\s+?LSHandlerURLScheme = (?:http|https);/.exec(stdout);
|
|
22757
22757
|
const browserId = match?.groups.id ?? "com.apple.Safari";
|
|
22758
22758
|
if (browserId === "com.apple.safari") {
|
|
@@ -22760,17 +22760,17 @@ async function defaultBrowserId() {
|
|
|
22760
22760
|
}
|
|
22761
22761
|
return browserId;
|
|
22762
22762
|
}
|
|
22763
|
-
var
|
|
22763
|
+
var execFileAsync;
|
|
22764
22764
|
var init_default_browser_id = __esm({
|
|
22765
22765
|
"../../node_modules/.pnpm/default-browser-id@5.0.1/node_modules/default-browser-id/index.js"() {
|
|
22766
|
-
|
|
22766
|
+
execFileAsync = promisify2(execFile2);
|
|
22767
22767
|
}
|
|
22768
22768
|
});
|
|
22769
22769
|
|
|
22770
22770
|
// ../../node_modules/.pnpm/run-applescript@7.1.0/node_modules/run-applescript/index.js
|
|
22771
22771
|
import process5 from "node:process";
|
|
22772
22772
|
import { promisify as promisify3 } from "node:util";
|
|
22773
|
-
import { execFile as execFile3, execFileSync as
|
|
22773
|
+
import { execFile as execFile3, execFileSync as execFileSync2 } from "node:child_process";
|
|
22774
22774
|
async function runAppleScript(script, { humanReadableOutput = true, signal } = {}) {
|
|
22775
22775
|
if (process5.platform !== "darwin") {
|
|
22776
22776
|
throw new Error("macOS only");
|
|
@@ -22780,13 +22780,13 @@ async function runAppleScript(script, { humanReadableOutput = true, signal } = {
|
|
|
22780
22780
|
if (signal) {
|
|
22781
22781
|
execOptions.signal = signal;
|
|
22782
22782
|
}
|
|
22783
|
-
const { stdout } = await
|
|
22783
|
+
const { stdout } = await execFileAsync2("osascript", ["-e", script, outputArguments], execOptions);
|
|
22784
22784
|
return stdout.trim();
|
|
22785
22785
|
}
|
|
22786
|
-
var
|
|
22786
|
+
var execFileAsync2;
|
|
22787
22787
|
var init_run_applescript = __esm({
|
|
22788
22788
|
"../../node_modules/.pnpm/run-applescript@7.1.0/node_modules/run-applescript/index.js"() {
|
|
22789
|
-
|
|
22789
|
+
execFileAsync2 = promisify3(execFile3);
|
|
22790
22790
|
}
|
|
22791
22791
|
});
|
|
22792
22792
|
|
|
@@ -22804,7 +22804,7 @@ var init_bundle_name = __esm({
|
|
|
22804
22804
|
// ../../node_modules/.pnpm/default-browser@5.5.0/node_modules/default-browser/windows.js
|
|
22805
22805
|
import { promisify as promisify4 } from "node:util";
|
|
22806
22806
|
import { execFile as execFile4 } from "node:child_process";
|
|
22807
|
-
async function defaultBrowser(_execFileAsync =
|
|
22807
|
+
async function defaultBrowser(_execFileAsync = execFileAsync3) {
|
|
22808
22808
|
const { stdout } = await _execFileAsync("reg", [
|
|
22809
22809
|
"QUERY",
|
|
22810
22810
|
" HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\Shell\\Associations\\UrlAssociations\\http\\UserChoice",
|
|
@@ -22822,10 +22822,10 @@ async function defaultBrowser(_execFileAsync = execFileAsync4) {
|
|
|
22822
22822
|
const baseIdByHyphen = hyphenIndex === -1 ? void 0 : id.slice(0, hyphenIndex);
|
|
22823
22823
|
return windowsBrowserProgIds[id] ?? windowsBrowserProgIds[baseIdByDot] ?? windowsBrowserProgIds[baseIdByHyphen] ?? { name: id, id };
|
|
22824
22824
|
}
|
|
22825
|
-
var
|
|
22825
|
+
var execFileAsync3, windowsBrowserProgIds, _windowsBrowserProgIdMap, UnknownBrowserError;
|
|
22826
22826
|
var init_windows = __esm({
|
|
22827
22827
|
"../../node_modules/.pnpm/default-browser@5.5.0/node_modules/default-browser/windows.js"() {
|
|
22828
|
-
|
|
22828
|
+
execFileAsync3 = promisify4(execFile4);
|
|
22829
22829
|
windowsBrowserProgIds = {
|
|
22830
22830
|
MSEdgeHTM: { name: "Edge", id: "com.microsoft.edge" },
|
|
22831
22831
|
// The missing `L` is correct.
|
|
@@ -22862,7 +22862,7 @@ async function defaultBrowser2() {
|
|
|
22862
22862
|
return { name, id };
|
|
22863
22863
|
}
|
|
22864
22864
|
if (process6.platform === "linux") {
|
|
22865
|
-
const { stdout } = await
|
|
22865
|
+
const { stdout } = await execFileAsync4("xdg-mime", ["query", "default", "x-scheme-handler/http"]);
|
|
22866
22866
|
const id = stdout.trim();
|
|
22867
22867
|
const name = titleize(id.replace(/.desktop$/, "").replace("-", " "));
|
|
22868
22868
|
return { name, id };
|
|
@@ -22872,13 +22872,13 @@ async function defaultBrowser2() {
|
|
|
22872
22872
|
}
|
|
22873
22873
|
throw new Error("Only macOS, Linux, and Windows are supported");
|
|
22874
22874
|
}
|
|
22875
|
-
var
|
|
22875
|
+
var execFileAsync4, titleize;
|
|
22876
22876
|
var init_default_browser = __esm({
|
|
22877
22877
|
"../../node_modules/.pnpm/default-browser@5.5.0/node_modules/default-browser/index.js"() {
|
|
22878
22878
|
init_default_browser_id();
|
|
22879
22879
|
init_bundle_name();
|
|
22880
22880
|
init_windows();
|
|
22881
|
-
|
|
22881
|
+
execFileAsync4 = promisify5(execFile5);
|
|
22882
22882
|
titleize = (string) => string.toLowerCase().replaceAll(/(?:^|\s|-)\S/g, (x) => x.toUpperCase());
|
|
22883
22883
|
}
|
|
22884
22884
|
});
|
|
@@ -24901,8 +24901,35 @@ function createStatsRouter(db) {
|
|
|
24901
24901
|
// src/server/routes/commands.ts
|
|
24902
24902
|
var import_express8 = __toESM(require_express2(), 1);
|
|
24903
24903
|
|
|
24904
|
+
// ../shared/platform/src/index.ts
|
|
24905
|
+
import {
|
|
24906
|
+
execFile,
|
|
24907
|
+
execFileSync,
|
|
24908
|
+
spawn
|
|
24909
|
+
} from "node:child_process";
|
|
24910
|
+
import { promisify } from "node:util";
|
|
24911
|
+
var execFilePromise = promisify(execFile);
|
|
24912
|
+
var isWindows = process.platform === "win32";
|
|
24913
|
+
function execBinary(binary, args, opts) {
|
|
24914
|
+
return execFileSync(binary, args, {
|
|
24915
|
+
...opts,
|
|
24916
|
+
shell: isWindows
|
|
24917
|
+
});
|
|
24918
|
+
}
|
|
24919
|
+
async function execBinaryAsync(binary, args, opts) {
|
|
24920
|
+
return execFilePromise(binary, args, {
|
|
24921
|
+
...opts,
|
|
24922
|
+
shell: isWindows
|
|
24923
|
+
});
|
|
24924
|
+
}
|
|
24925
|
+
function spawnBinary(binary, args, opts) {
|
|
24926
|
+
return spawn(binary, args, {
|
|
24927
|
+
...opts,
|
|
24928
|
+
...isWindows && { shell: true, windowsHide: true }
|
|
24929
|
+
});
|
|
24930
|
+
}
|
|
24931
|
+
|
|
24904
24932
|
// src/server/socket/command-runner.ts
|
|
24905
|
-
import { spawn as spawn3 } from "node:child_process";
|
|
24906
24933
|
import { readFileSync as readFileSync4 } from "node:fs";
|
|
24907
24934
|
import { dirname as dirname6, join as join8 } from "node:path";
|
|
24908
24935
|
|
|
@@ -24910,10 +24937,6 @@ import { dirname as dirname6, join as join8 } from "node:path";
|
|
|
24910
24937
|
import { readFileSync as readFileSync3 } from "node:fs";
|
|
24911
24938
|
import { join as join6 } from "node:path";
|
|
24912
24939
|
|
|
24913
|
-
// src/server/services/ai-cli/claude-adapter.ts
|
|
24914
|
-
import { execFileSync } from "node:child_process";
|
|
24915
|
-
import { spawn } from "node:child_process";
|
|
24916
|
-
|
|
24917
24940
|
// src/server/services/ai-cli/helpers.ts
|
|
24918
24941
|
import { tmpdir } from "node:os";
|
|
24919
24942
|
import { join as join5 } from "node:path";
|
|
@@ -24992,7 +25015,7 @@ var ClaudeCodeAdapter = class {
|
|
|
24992
25015
|
binary = "claude";
|
|
24993
25016
|
detect() {
|
|
24994
25017
|
try {
|
|
24995
|
-
const output =
|
|
25018
|
+
const output = execBinary("claude", ["--version"], {
|
|
24996
25019
|
encoding: "utf-8",
|
|
24997
25020
|
timeout: 5e3,
|
|
24998
25021
|
stdio: ["ignore", "pipe", "pipe"]
|
|
@@ -25021,7 +25044,7 @@ var ClaudeCodeAdapter = class {
|
|
|
25021
25044
|
if (opts.resumeSessionId) {
|
|
25022
25045
|
flags.push("--resume", opts.resumeSessionId);
|
|
25023
25046
|
}
|
|
25024
|
-
const proc =
|
|
25047
|
+
const proc = spawnBinary("claude", flags, {
|
|
25025
25048
|
cwd: opts.cwd,
|
|
25026
25049
|
env: cleanEnv(),
|
|
25027
25050
|
detached: isWorkflow,
|
|
@@ -25091,7 +25114,6 @@ var ClaudeCodeAdapter = class {
|
|
|
25091
25114
|
};
|
|
25092
25115
|
|
|
25093
25116
|
// src/server/services/ai-cli/opencode-adapter.ts
|
|
25094
|
-
import { execFileSync as execFileSync2, spawn as spawn2 } from "node:child_process";
|
|
25095
25117
|
function capitalize(s) {
|
|
25096
25118
|
return s.charAt(0).toUpperCase() + s.slice(1);
|
|
25097
25119
|
}
|
|
@@ -25100,7 +25122,7 @@ var OpenCodeAdapter = class {
|
|
|
25100
25122
|
binary = "opencode";
|
|
25101
25123
|
detect() {
|
|
25102
25124
|
try {
|
|
25103
|
-
const output =
|
|
25125
|
+
const output = execBinary("opencode", ["--version"], {
|
|
25104
25126
|
encoding: "utf-8",
|
|
25105
25127
|
timeout: 5e3,
|
|
25106
25128
|
stdio: ["ignore", "pipe", "pipe"]
|
|
@@ -25126,7 +25148,7 @@ var OpenCodeAdapter = class {
|
|
|
25126
25148
|
if (opts.resumeSessionId) {
|
|
25127
25149
|
args.push("--session", opts.resumeSessionId, "--continue");
|
|
25128
25150
|
}
|
|
25129
|
-
const proc =
|
|
25151
|
+
const proc = spawnBinary("opencode", args, {
|
|
25130
25152
|
cwd: opts.cwd,
|
|
25131
25153
|
env: cleanEnv(),
|
|
25132
25154
|
detached: isWorkflow,
|
|
@@ -25467,10 +25489,10 @@ function registerCommandHandlers(io2, socket, db, ocrDir, aiCliService) {
|
|
|
25467
25489
|
function spawnCliCommand(io2, db, ocrDir, executionId, baseCommand, subArgs, entry) {
|
|
25468
25490
|
const localCli = resolveLocalCli();
|
|
25469
25491
|
const repoRoot = dirname6(ocrDir);
|
|
25470
|
-
const proc = localCli ?
|
|
25492
|
+
const proc = localCli ? spawnBinary("node", [localCli, baseCommand, ...subArgs], {
|
|
25471
25493
|
cwd: repoRoot,
|
|
25472
25494
|
env: cleanEnv()
|
|
25473
|
-
}) :
|
|
25495
|
+
}) : spawnBinary("ocr", [baseCommand, ...subArgs], {
|
|
25474
25496
|
cwd: repoRoot,
|
|
25475
25497
|
env: cleanEnv()
|
|
25476
25498
|
});
|
|
@@ -25811,7 +25833,6 @@ function createCommandsRouter(db) {
|
|
|
25811
25833
|
// src/server/routes/config.ts
|
|
25812
25834
|
var import_express9 = __toESM(require_express2(), 1);
|
|
25813
25835
|
import { readFileSync as readFileSync5, writeFileSync as writeFileSync3 } from "node:fs";
|
|
25814
|
-
import { execFileSync as execFileSync3 } from "node:child_process";
|
|
25815
25836
|
import { join as join9, dirname as dirname7, basename } from "node:path";
|
|
25816
25837
|
var VALID_IDES = ["vscode", "cursor", "windsurf", "jetbrains", "sublime"];
|
|
25817
25838
|
function detectIde() {
|
|
@@ -25846,7 +25867,7 @@ function resolveIde(ocrDir) {
|
|
|
25846
25867
|
}
|
|
25847
25868
|
function detectGitBranch(cwd) {
|
|
25848
25869
|
try {
|
|
25849
|
-
return
|
|
25870
|
+
return execBinary("git", ["rev-parse", "--abbrev-ref", "HEAD"], {
|
|
25850
25871
|
cwd,
|
|
25851
25872
|
timeout: 3e3,
|
|
25852
25873
|
encoding: "utf-8"
|
|
@@ -27891,13 +27912,10 @@ function cleanupAllChats() {
|
|
|
27891
27912
|
}
|
|
27892
27913
|
|
|
27893
27914
|
// src/server/socket/post-handler.ts
|
|
27894
|
-
import { execFile } from "node:child_process";
|
|
27895
27915
|
import { existsSync as existsSync9, mkdirSync as mkdirSync3, readFileSync as readFileSync10, unlinkSync, writeFileSync as writeFileSync4 } from "node:fs";
|
|
27896
27916
|
import { tmpdir as tmpdir2 } from "node:os";
|
|
27897
27917
|
import { join as join13, dirname as dirname10, isAbsolute } from "node:path";
|
|
27898
27918
|
import { randomUUID as randomUUID2 } from "node:crypto";
|
|
27899
|
-
import { promisify } from "node:util";
|
|
27900
|
-
var execFileAsync = promisify(execFile);
|
|
27901
27919
|
function resolveSessionDir(sessionDir, ocrDir) {
|
|
27902
27920
|
if (isAbsolute(sessionDir)) return sessionDir;
|
|
27903
27921
|
return join13(dirname10(ocrDir), sessionDir);
|
|
@@ -27928,10 +27946,10 @@ async function findPrForBranch(branch, env, cwd) {
|
|
|
27928
27946
|
}
|
|
27929
27947
|
for (const candidate of candidates) {
|
|
27930
27948
|
try {
|
|
27931
|
-
const { stdout } = await
|
|
27949
|
+
const { stdout } = await execBinaryAsync(
|
|
27932
27950
|
"gh",
|
|
27933
27951
|
["pr", "list", "--head", candidate, "--json", "number,url", "--limit", "1"],
|
|
27934
|
-
{ env, cwd }
|
|
27952
|
+
{ env, cwd, encoding: "utf-8" }
|
|
27935
27953
|
);
|
|
27936
27954
|
const prs = JSON.parse(stdout);
|
|
27937
27955
|
if (prs.length > 0 && prs[0]) {
|
|
@@ -27971,7 +27989,7 @@ function registerPostHandlers(io2, socket, db, ocrDir, aiCliService) {
|
|
|
27971
27989
|
const branch = session.branch;
|
|
27972
27990
|
const repoRoot = dirname10(ocrDir);
|
|
27973
27991
|
try {
|
|
27974
|
-
await
|
|
27992
|
+
await execBinaryAsync("gh", ["auth", "status"], { env: cleanEnv(), cwd: repoRoot, encoding: "utf-8" });
|
|
27975
27993
|
} catch {
|
|
27976
27994
|
socket.emit("post:gh-result", {
|
|
27977
27995
|
authenticated: false,
|
|
@@ -28275,10 +28293,10 @@ function registerPostHandlers(io2, socket, db, ocrDir, aiCliService) {
|
|
|
28275
28293
|
writeFileSync4(tmpFile, content, { mode: 384 });
|
|
28276
28294
|
const repoRoot = dirname10(ocrDir);
|
|
28277
28295
|
try {
|
|
28278
|
-
const { stdout } = await
|
|
28296
|
+
const { stdout } = await execBinaryAsync(
|
|
28279
28297
|
"gh",
|
|
28280
28298
|
["pr", "comment", String(prNumber), "--body-file", tmpFile],
|
|
28281
|
-
{ env: cleanEnv(), cwd: repoRoot }
|
|
28299
|
+
{ env: cleanEnv(), cwd: repoRoot, encoding: "utf-8" }
|
|
28282
28300
|
);
|
|
28283
28301
|
const urlMatch = stdout.match(/(https:\/\/github\.com\S+)/)?.[0] ?? null;
|
|
28284
28302
|
tracker.appendOutput(`\u2713 Posted to PR #${prNumber}${urlMatch ? ` \u2014 ${urlMatch}` : ""}
|
|
@@ -28353,6 +28371,9 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
28353
28371
|
next();
|
|
28354
28372
|
});
|
|
28355
28373
|
}
|
|
28374
|
+
app.get("/api/health", (_req, res) => {
|
|
28375
|
+
res.json({ status: "ok" });
|
|
28376
|
+
});
|
|
28356
28377
|
app.use("/api", (req, res, next) => {
|
|
28357
28378
|
const authHeader = req.headers.authorization;
|
|
28358
28379
|
if (!authHeader || !authHeader.startsWith("Bearer ") || authHeader.slice(7) !== AUTH_TOKEN) {
|
|
@@ -28379,9 +28400,6 @@ if (process.env.NODE_ENV !== "production") {
|
|
|
28379
28400
|
res.json({ token: AUTH_TOKEN });
|
|
28380
28401
|
});
|
|
28381
28402
|
}
|
|
28382
|
-
app.get("/api/health", (_req, res) => {
|
|
28383
|
-
res.json({ status: "ok" });
|
|
28384
|
-
});
|
|
28385
28403
|
async function startServer(options = {}) {
|
|
28386
28404
|
const port = options.port ?? parseInt(process.env.PORT ?? "4173", 10);
|
|
28387
28405
|
const ocrDir = resolveOcrDir();
|
|
@@ -28389,7 +28407,12 @@ async function startServer(options = {}) {
|
|
|
28389
28407
|
const db = await openDb(ocrDir);
|
|
28390
28408
|
const dataDir = join14(ocrDir, "data");
|
|
28391
28409
|
const pidFilePath = join14(dataDir, "dashboard.pid");
|
|
28410
|
+
const portFilePath = join14(dataDir, "server-port");
|
|
28392
28411
|
mkdirSync4(dataDir, { recursive: true });
|
|
28412
|
+
try {
|
|
28413
|
+
unlinkSync2(portFilePath);
|
|
28414
|
+
} catch {
|
|
28415
|
+
}
|
|
28393
28416
|
if (existsSync10(pidFilePath)) {
|
|
28394
28417
|
try {
|
|
28395
28418
|
const oldPid = parseInt(readFileSync11(pidFilePath, "utf-8").trim(), 10);
|
|
@@ -28575,7 +28598,6 @@ async function startServer(options = {}) {
|
|
|
28575
28598
|
if (actualPort !== port) {
|
|
28576
28599
|
console.log(` Note: using port ${actualPort} (${port} was in use)`);
|
|
28577
28600
|
}
|
|
28578
|
-
const portFilePath = join14(dataDir, "server-port");
|
|
28579
28601
|
writeFileSync5(portFilePath, String(actualPort), { mode: 384 });
|
|
28580
28602
|
console.log(` Server: http://localhost:${actualPort}`);
|
|
28581
28603
|
console.log(` OCR directory: ${shortenPath(ocrDir)}`);
|
package/dist/index.js
CHANGED
|
@@ -20894,10 +20894,29 @@ ${hint}
|
|
|
20894
20894
|
}
|
|
20895
20895
|
|
|
20896
20896
|
// src/lib/version.ts
|
|
20897
|
-
var CLI_VERSION = true ? "1.10.
|
|
20897
|
+
var CLI_VERSION = true ? "1.10.3" : createRequire(import.meta.url)("../../package.json").version;
|
|
20898
|
+
|
|
20899
|
+
// ../shared/platform/src/index.ts
|
|
20900
|
+
import { pathToFileURL } from "node:url";
|
|
20901
|
+
import {
|
|
20902
|
+
execFile,
|
|
20903
|
+
execFileSync,
|
|
20904
|
+
spawn as spawn2
|
|
20905
|
+
} from "node:child_process";
|
|
20906
|
+
import { promisify } from "node:util";
|
|
20907
|
+
var execFilePromise = promisify(execFile);
|
|
20908
|
+
var isWindows = process.platform === "win32";
|
|
20909
|
+
async function importModule(absolutePath) {
|
|
20910
|
+
return import(pathToFileURL(absolutePath).href);
|
|
20911
|
+
}
|
|
20912
|
+
function execBinary(binary, args, opts) {
|
|
20913
|
+
return execFileSync(binary, args, {
|
|
20914
|
+
...opts,
|
|
20915
|
+
shell: isWindows
|
|
20916
|
+
});
|
|
20917
|
+
}
|
|
20898
20918
|
|
|
20899
20919
|
// src/lib/deps.ts
|
|
20900
|
-
import { execFileSync } from "node:child_process";
|
|
20901
20920
|
var CATEGORY_ORDER = ["core", "ai-cli", "github"];
|
|
20902
20921
|
var CATEGORY_INFO = {
|
|
20903
20922
|
core: { label: "Core", hint: "" },
|
|
@@ -20946,7 +20965,7 @@ function parseVersion(output) {
|
|
|
20946
20965
|
}
|
|
20947
20966
|
function checkBinary(spec) {
|
|
20948
20967
|
try {
|
|
20949
|
-
const output =
|
|
20968
|
+
const output = execBinary(spec.binary, ["--version"], {
|
|
20950
20969
|
encoding: "utf-8",
|
|
20951
20970
|
timeout: 5e3,
|
|
20952
20971
|
stdio: ["ignore", "pipe", "pipe"]
|
|
@@ -21441,7 +21460,7 @@ var STR_CLOSE = "close";
|
|
|
21441
21460
|
var EMPTY_FN = () => {
|
|
21442
21461
|
};
|
|
21443
21462
|
var pl = process.platform;
|
|
21444
|
-
var
|
|
21463
|
+
var isWindows2 = pl === "win32";
|
|
21445
21464
|
var isMacos = pl === "darwin";
|
|
21446
21465
|
var isLinux = pl === "linux";
|
|
21447
21466
|
var isFreeBSD = pl === "freebsd";
|
|
@@ -21814,7 +21833,7 @@ var setFsWatchListener = (path2, fullPath, options, handlers) => {
|
|
|
21814
21833
|
const broadcastErr = fsWatchBroadcast.bind(null, fullPath, KEY_ERR);
|
|
21815
21834
|
if (cont)
|
|
21816
21835
|
cont.watcherUnusable = true;
|
|
21817
|
-
if (
|
|
21836
|
+
if (isWindows2 && error.code === "EPERM") {
|
|
21818
21837
|
try {
|
|
21819
21838
|
const fd = await open(path2, "r");
|
|
21820
21839
|
await fd.close();
|
|
@@ -22587,7 +22606,7 @@ var FSWatcher = class extends EventEmitter {
|
|
|
22587
22606
|
if (this.closed)
|
|
22588
22607
|
return;
|
|
22589
22608
|
const opts = this.options;
|
|
22590
|
-
if (
|
|
22609
|
+
if (isWindows2)
|
|
22591
22610
|
path2 = sysPath2.normalize(path2);
|
|
22592
22611
|
if (opts.cwd)
|
|
22593
22612
|
path2 = sysPath2.relative(opts.cwd, path2);
|
|
@@ -22956,7 +22975,7 @@ var isSharedWorker = typeof SharedWorkerGlobalScope !== "undefined" && globalThi
|
|
|
22956
22975
|
var isServiceWorker = typeof ServiceWorkerGlobalScope !== "undefined" && globalThis instanceof ServiceWorkerGlobalScope;
|
|
22957
22976
|
var platform = globalThis.navigator?.userAgentData?.platform;
|
|
22958
22977
|
var isMacOs = platform === "macOS" || globalThis.navigator?.platform === "MacIntel" || globalThis.navigator?.userAgent?.includes(" Mac ") === true || globalThis.process?.platform === "darwin";
|
|
22959
|
-
var
|
|
22978
|
+
var isWindows3 = platform === "Windows" || globalThis.navigator?.platform === "Win32" || globalThis.process?.platform === "win32";
|
|
22960
22979
|
var isLinux2 = platform === "Linux" || globalThis.navigator?.platform?.startsWith("Linux") === true || globalThis.navigator?.userAgent?.includes(" Linux ") === true || globalThis.process?.platform === "linux";
|
|
22961
22980
|
var isIos = platform === "iOS" || globalThis.navigator?.platform === "MacIntel" && globalThis.navigator?.maxTouchPoints > 1 || /iPad|iPhone|iPod/.test(globalThis.navigator?.platform);
|
|
22962
22981
|
var isAndroid = platform === "Android" || globalThis.navigator?.platform === "Android" || globalThis.navigator?.userAgent?.includes(" Android ") === true || globalThis.process?.platform === "android";
|
|
@@ -22967,7 +22986,7 @@ var OSC = "\x1B]";
|
|
|
22967
22986
|
var BEL = "\x07";
|
|
22968
22987
|
var SEP = ";";
|
|
22969
22988
|
var isTerminalApp = !isBrowser && process11.env.TERM_PROGRAM === "Apple_Terminal";
|
|
22970
|
-
var
|
|
22989
|
+
var isWindows4 = !isBrowser && process11.platform === "win32";
|
|
22971
22990
|
var isTmux = !isBrowser && (process11.env.TERM?.startsWith("screen") || process11.env.TERM?.startsWith("tmux") || process11.env.TMUX !== void 0);
|
|
22972
22991
|
var cwdFunction = isBrowser ? () => {
|
|
22973
22992
|
throw new Error("`process.cwd()` only works in Node.js, not the browser.");
|
|
@@ -23037,7 +23056,7 @@ var scrollDown = ESC2 + "T";
|
|
|
23037
23056
|
var clearScreen = "\x1Bc";
|
|
23038
23057
|
var clearViewport = `${eraseScreen}${ESC2}H`;
|
|
23039
23058
|
var isOldWindows = () => {
|
|
23040
|
-
if (isBrowser || !
|
|
23059
|
+
if (isBrowser || !isWindows4) {
|
|
23041
23060
|
return false;
|
|
23042
23061
|
}
|
|
23043
23062
|
const parts = os3.release().split(".");
|
|
@@ -25869,7 +25888,7 @@ var dashboardCommand = new Command("dashboard").description("Start the OCR dashb
|
|
|
25869
25888
|
console.log(source_default.bold(" OCR Dashboard"));
|
|
25870
25889
|
console.log();
|
|
25871
25890
|
try {
|
|
25872
|
-
const { startServer } = await
|
|
25891
|
+
const { startServer } = await importModule(serverPath);
|
|
25873
25892
|
await startServer({ port, open: options.open });
|
|
25874
25893
|
} catch (err) {
|
|
25875
25894
|
console.error(source_default.red("Error: Failed to start dashboard server."));
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@open-code-review/cli",
|
|
3
|
-
"version": "1.10.
|
|
3
|
+
"version": "1.10.3",
|
|
4
4
|
"description": "CLI for Open Code Review - Multi-environment setup and progress tracking",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -50,12 +50,13 @@
|
|
|
50
50
|
"ora": "^8.1.1",
|
|
51
51
|
"socket.io": "^4.8",
|
|
52
52
|
"sql.js": "^1.14.1",
|
|
53
|
-
"@open-code-review/agents": "1.10.
|
|
53
|
+
"@open-code-review/agents": "1.10.3"
|
|
54
54
|
},
|
|
55
55
|
"publishConfig": {
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
58
|
"devDependencies": {
|
|
59
|
-
"@types/sql.js": "^1.4.9"
|
|
59
|
+
"@types/sql.js": "^1.4.9",
|
|
60
|
+
"@open-code-review/platform": "0.0.0"
|
|
60
61
|
}
|
|
61
62
|
}
|