nexus-agents 2.77.3 → 2.77.4
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/{chunk-KGB67HII.js → chunk-AFGRQB4H.js} +5 -3
- package/dist/{chunk-KGB67HII.js.map → chunk-AFGRQB4H.js.map} +1 -1
- package/dist/{chunk-CPPZCNAS.js → chunk-EEW7VFFF.js} +3 -3
- package/dist/{chunk-X3BU5MIG.js → chunk-FYAQBYHM.js} +2 -2
- package/dist/{chunk-LTUUW3FN.js → chunk-LIY6WZNR.js} +24 -212
- package/dist/chunk-LIY6WZNR.js.map +1 -0
- package/dist/{chunk-VEF6DCQU.js → chunk-MV4R2ZIJ.js} +204 -4
- package/dist/chunk-MV4R2ZIJ.js.map +1 -0
- package/dist/{chunk-K446R3BC.js → chunk-S6MEYRYZ.js} +7 -7
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +26 -13
- package/dist/cli.js.map +1 -1
- package/dist/{consensus-vote-UR3JU7RI.js → consensus-vote-AWBFYF5S.js} +3 -3
- package/dist/{expert-bridge-DWBO2HXZ.js → expert-bridge-NX2MGOBQ.js} +2 -2
- package/dist/{factory-LXOVC44K.js → factory-JI6PSWGR.js} +2 -2
- package/dist/index.js +6 -6
- package/dist/{setup-command-XG7R4PR4.js → setup-command-DB3DOE6K.js} +4 -4
- package/package.json +1 -1
- package/dist/chunk-LTUUW3FN.js.map +0 -1
- package/dist/chunk-VEF6DCQU.js.map +0 -1
- /package/dist/{chunk-CPPZCNAS.js.map → chunk-EEW7VFFF.js.map} +0 -0
- /package/dist/{chunk-X3BU5MIG.js.map → chunk-FYAQBYHM.js.map} +0 -0
- /package/dist/{chunk-K446R3BC.js.map → chunk-S6MEYRYZ.js.map} +0 -0
- /package/dist/{consensus-vote-UR3JU7RI.js.map → consensus-vote-AWBFYF5S.js.map} +0 -0
- /package/dist/{expert-bridge-DWBO2HXZ.js.map → expert-bridge-NX2MGOBQ.js.map} +0 -0
- /package/dist/{factory-LXOVC44K.js.map → factory-JI6PSWGR.js.map} +0 -0
- /package/dist/{setup-command-XG7R4PR4.js.map → setup-command-DB3DOE6K.js.map} +0 -0
|
@@ -23,7 +23,7 @@ import {
|
|
|
23
23
|
getAvailableClis,
|
|
24
24
|
isCliAvailable,
|
|
25
25
|
withTimeout
|
|
26
|
-
} from "./chunk-
|
|
26
|
+
} from "./chunk-MV4R2ZIJ.js";
|
|
27
27
|
import {
|
|
28
28
|
SessionMemory
|
|
29
29
|
} from "./chunk-3VWMM6UF.js";
|
|
@@ -12993,7 +12993,7 @@ async function processVotesWithCascade(engineVotes, opts) {
|
|
|
12993
12993
|
var CONTRARIAN_ESCALATION_THRESHOLD = 0.8;
|
|
12994
12994
|
async function runContrarianCheck(proposal, log) {
|
|
12995
12995
|
try {
|
|
12996
|
-
const { executeExpert } = await import("./expert-bridge-
|
|
12996
|
+
const { executeExpert } = await import("./expert-bridge-NX2MGOBQ.js");
|
|
12997
12997
|
const prompt = [
|
|
12998
12998
|
"You are a contrarian analyst. Your job is to find reasons this proposal should be REJECTED.",
|
|
12999
12999
|
"Look for: YAGNI (not needed), MISALIGNED (wrong tech/architecture), SECURITY_RISK, SCOPE_CREEP.",
|
|
@@ -13415,4 +13415,4 @@ export {
|
|
|
13415
13415
|
CONSENSUS_VOTE_OUTPUT_SCHEMA,
|
|
13416
13416
|
registerConsensusVoteTool
|
|
13417
13417
|
};
|
|
13418
|
-
//# sourceMappingURL=chunk-
|
|
13418
|
+
//# sourceMappingURL=chunk-EEW7VFFF.js.map
|
|
@@ -38,7 +38,7 @@ function adaptCompositeRouter(compositeRouter) {
|
|
|
38
38
|
}
|
|
39
39
|
async function getRouter() {
|
|
40
40
|
if (cachedRouter !== null) return cachedRouter;
|
|
41
|
-
const { createAllAdapters } = await import("./factory-
|
|
41
|
+
const { createAllAdapters } = await import("./factory-JI6PSWGR.js");
|
|
42
42
|
const { createCompositeRouter } = await import("./composite-router-S6E26BCI.js");
|
|
43
43
|
const adapters = createAllAdapters();
|
|
44
44
|
if (adapters.size === 0) return null;
|
|
@@ -136,4 +136,4 @@ ${prompt}`;
|
|
|
136
136
|
export {
|
|
137
137
|
executeExpert
|
|
138
138
|
};
|
|
139
|
-
//# sourceMappingURL=chunk-
|
|
139
|
+
//# sourceMappingURL=chunk-FYAQBYHM.js.map
|
|
@@ -5,13 +5,13 @@ import {
|
|
|
5
5
|
resolveInsideRoot
|
|
6
6
|
} from "./chunk-NUBSJGQZ.js";
|
|
7
7
|
import {
|
|
8
|
-
createAllAdapters
|
|
9
|
-
|
|
8
|
+
createAllAdapters,
|
|
9
|
+
probeCli
|
|
10
|
+
} from "./chunk-MV4R2ZIJ.js";
|
|
10
11
|
import {
|
|
11
12
|
capitalize
|
|
12
13
|
} from "./chunk-633WH2ML.js";
|
|
13
14
|
import {
|
|
14
|
-
CLI_SUBPROCESS_TIMEOUTS,
|
|
15
15
|
CliNameSchema,
|
|
16
16
|
DEFAULT_CAPABILITIES,
|
|
17
17
|
DEFAULT_COMPOSITE_CONFIG,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
} from "./chunk-GOT7OAL5.js";
|
|
41
41
|
|
|
42
42
|
// src/version.ts
|
|
43
|
-
var VERSION = true ? "2.77.
|
|
43
|
+
var VERSION = true ? "2.77.4" : "dev";
|
|
44
44
|
|
|
45
45
|
// src/config/schemas-core.ts
|
|
46
46
|
import { z } from "zod";
|
|
@@ -1297,18 +1297,18 @@ function getConfig(options) {
|
|
|
1297
1297
|
}
|
|
1298
1298
|
|
|
1299
1299
|
// src/cli/setup-data-dir.ts
|
|
1300
|
-
import { mkdirSync, existsSync as
|
|
1301
|
-
import { join as
|
|
1300
|
+
import { mkdirSync, existsSync as existsSync3 } from "fs";
|
|
1301
|
+
import { join as join3 } from "path";
|
|
1302
1302
|
|
|
1303
1303
|
// src/cli/doctor.ts
|
|
1304
1304
|
import {
|
|
1305
|
-
existsSync as
|
|
1306
|
-
readFileSync as
|
|
1305
|
+
existsSync as existsSync2,
|
|
1306
|
+
readFileSync as readFileSync2,
|
|
1307
1307
|
readdirSync,
|
|
1308
1308
|
accessSync,
|
|
1309
1309
|
constants as fsConstants
|
|
1310
1310
|
} from "fs";
|
|
1311
|
-
import { join as
|
|
1311
|
+
import { join as join2 } from "path";
|
|
1312
1312
|
|
|
1313
1313
|
// src/mcp/server.ts
|
|
1314
1314
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -1773,193 +1773,6 @@ function printDoctorResults(result) {
|
|
|
1773
1773
|
printDoctorSummary(result);
|
|
1774
1774
|
}
|
|
1775
1775
|
|
|
1776
|
-
// src/cli/cli-auth-probe.ts
|
|
1777
|
-
import { execFile } from "child_process";
|
|
1778
|
-
import { promisify } from "util";
|
|
1779
|
-
import { existsSync as existsSync2, readFileSync as readFileSync2 } from "fs";
|
|
1780
|
-
import { homedir } from "os";
|
|
1781
|
-
import { join as join2 } from "path";
|
|
1782
|
-
var execFileAsync = promisify(execFile);
|
|
1783
|
-
var HOME = homedir();
|
|
1784
|
-
function claudeNeedsLogin(reason) {
|
|
1785
|
-
return {
|
|
1786
|
-
cli: "claude",
|
|
1787
|
-
state: "needs-login",
|
|
1788
|
-
reason,
|
|
1789
|
-
fixCommand: "claude /login",
|
|
1790
|
-
envFallback: "ANTHROPIC_API_KEY",
|
|
1791
|
-
fixUrl: "https://console.anthropic.com/account/keys"
|
|
1792
|
-
};
|
|
1793
|
-
}
|
|
1794
|
-
function probeClaude() {
|
|
1795
|
-
if (process.env["ANTHROPIC_API_KEY"] !== void 0 && process.env["ANTHROPIC_API_KEY"] !== "") {
|
|
1796
|
-
return { cli: "claude", state: "authenticated", via: "env-var" };
|
|
1797
|
-
}
|
|
1798
|
-
const credPath = join2(HOME, ".claude", ".credentials.json");
|
|
1799
|
-
if (!existsSync2(credPath)) {
|
|
1800
|
-
return claudeNeedsLogin(
|
|
1801
|
-
"No credentials at ~/.claude/.credentials.json and ANTHROPIC_API_KEY is not set"
|
|
1802
|
-
);
|
|
1803
|
-
}
|
|
1804
|
-
try {
|
|
1805
|
-
const parsed = JSON.parse(readFileSync2(credPath, "utf-8"));
|
|
1806
|
-
if (!isClaudeCredsShape(parsed)) {
|
|
1807
|
-
return claudeNeedsLogin(
|
|
1808
|
-
"Credentials file present but not in expected shape (missing claudeAiOauth.accessToken)"
|
|
1809
|
-
);
|
|
1810
|
-
}
|
|
1811
|
-
const expiresAt = parsed.claudeAiOauth.expiresAt;
|
|
1812
|
-
if (typeof expiresAt === "number" && expiresAt < Date.now()) {
|
|
1813
|
-
return claudeNeedsLogin(`OAuth token expired ${new Date(expiresAt).toISOString()}`);
|
|
1814
|
-
}
|
|
1815
|
-
return {
|
|
1816
|
-
cli: "claude",
|
|
1817
|
-
state: "authenticated",
|
|
1818
|
-
via: "cli-credentials",
|
|
1819
|
-
...typeof expiresAt === "number" ? { meta: { expiresAt } } : {}
|
|
1820
|
-
};
|
|
1821
|
-
} catch (e) {
|
|
1822
|
-
return {
|
|
1823
|
-
cli: "claude",
|
|
1824
|
-
state: "error",
|
|
1825
|
-
reason: `Failed to read claude credentials: ${e instanceof Error ? e.message : String(e)}`
|
|
1826
|
-
};
|
|
1827
|
-
}
|
|
1828
|
-
}
|
|
1829
|
-
function codexNeedsLogin(reason) {
|
|
1830
|
-
return {
|
|
1831
|
-
cli: "codex",
|
|
1832
|
-
state: "needs-login",
|
|
1833
|
-
reason,
|
|
1834
|
-
fixCommand: "codex login",
|
|
1835
|
-
envFallback: "OPENAI_API_KEY",
|
|
1836
|
-
fixUrl: "https://platform.openai.com/api-keys"
|
|
1837
|
-
};
|
|
1838
|
-
}
|
|
1839
|
-
function classifyCodexStdout(stdout) {
|
|
1840
|
-
if (/not logged/i.test(stdout) || /no.*token/i.test(stdout)) {
|
|
1841
|
-
return codexNeedsLogin(stdout.trim().split("\n")[0] ?? "Not logged in");
|
|
1842
|
-
}
|
|
1843
|
-
return { cli: "codex", state: "authenticated", via: "cli-credentials" };
|
|
1844
|
-
}
|
|
1845
|
-
async function probeCodex() {
|
|
1846
|
-
if (process.env["OPENAI_API_KEY"] !== void 0 && process.env["OPENAI_API_KEY"] !== "") {
|
|
1847
|
-
return { cli: "codex", state: "authenticated", via: "env-var" };
|
|
1848
|
-
}
|
|
1849
|
-
try {
|
|
1850
|
-
const { stdout } = await execFileAsync("codex", ["login", "status"], {
|
|
1851
|
-
timeout: CLI_SUBPROCESS_TIMEOUTS.spawnMs
|
|
1852
|
-
});
|
|
1853
|
-
return classifyCodexStdout(stdout);
|
|
1854
|
-
} catch (e) {
|
|
1855
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
1856
|
-
if (/ENOENT|not found/i.test(msg)) {
|
|
1857
|
-
return { cli: "codex", state: "not-installed", reason: "codex binary not on PATH" };
|
|
1858
|
-
}
|
|
1859
|
-
return codexNeedsLogin("Not logged in (codex login status returned non-zero)");
|
|
1860
|
-
}
|
|
1861
|
-
}
|
|
1862
|
-
function geminiNeedsLogin(reason) {
|
|
1863
|
-
return {
|
|
1864
|
-
cli: "gemini",
|
|
1865
|
-
state: "needs-login",
|
|
1866
|
-
reason,
|
|
1867
|
-
fixCommand: "gemini",
|
|
1868
|
-
envFallback: "GOOGLE_AI_API_KEY",
|
|
1869
|
-
fixUrl: "https://aistudio.google.com/apikey"
|
|
1870
|
-
};
|
|
1871
|
-
}
|
|
1872
|
-
function classifyGeminiCreds(parsed) {
|
|
1873
|
-
if (!isGeminiCredsShape(parsed)) {
|
|
1874
|
-
return geminiNeedsLogin("OAuth credentials file present but not in expected shape");
|
|
1875
|
-
}
|
|
1876
|
-
if (typeof parsed.expiry_date === "number" && parsed.expiry_date < Date.now()) {
|
|
1877
|
-
return geminiNeedsLogin(
|
|
1878
|
-
`OAuth access token expired ${new Date(parsed.expiry_date).toISOString()} (refresh may still work)`
|
|
1879
|
-
);
|
|
1880
|
-
}
|
|
1881
|
-
return {
|
|
1882
|
-
cli: "gemini",
|
|
1883
|
-
state: "authenticated",
|
|
1884
|
-
via: "cli-credentials",
|
|
1885
|
-
...typeof parsed.expiry_date === "number" ? { meta: { expiresAt: parsed.expiry_date } } : {}
|
|
1886
|
-
};
|
|
1887
|
-
}
|
|
1888
|
-
function probeGemini() {
|
|
1889
|
-
const env = process.env["GOOGLE_AI_API_KEY"] ?? process.env["GEMINI_API_KEY"];
|
|
1890
|
-
if (env !== void 0 && env !== "") {
|
|
1891
|
-
return { cli: "gemini", state: "authenticated", via: "env-var" };
|
|
1892
|
-
}
|
|
1893
|
-
const credPath = join2(HOME, ".gemini", "oauth_creds.json");
|
|
1894
|
-
if (!existsSync2(credPath)) {
|
|
1895
|
-
return geminiNeedsLogin(
|
|
1896
|
-
"No OAuth credentials at ~/.gemini/oauth_creds.json and GOOGLE_AI_API_KEY/GEMINI_API_KEY are not set"
|
|
1897
|
-
);
|
|
1898
|
-
}
|
|
1899
|
-
try {
|
|
1900
|
-
return classifyGeminiCreds(JSON.parse(readFileSync2(credPath, "utf-8")));
|
|
1901
|
-
} catch (e) {
|
|
1902
|
-
return {
|
|
1903
|
-
cli: "gemini",
|
|
1904
|
-
state: "error",
|
|
1905
|
-
reason: `Failed to read gemini credentials: ${e instanceof Error ? e.message : String(e)}`
|
|
1906
|
-
};
|
|
1907
|
-
}
|
|
1908
|
-
}
|
|
1909
|
-
async function probeOpencode() {
|
|
1910
|
-
try {
|
|
1911
|
-
const { stdout } = await execFileAsync("opencode", ["auth", "list"], {
|
|
1912
|
-
timeout: CLI_SUBPROCESS_TIMEOUTS.spawnMs
|
|
1913
|
-
});
|
|
1914
|
-
if (/0 credentials/i.test(stdout)) {
|
|
1915
|
-
return {
|
|
1916
|
-
cli: "opencode",
|
|
1917
|
-
state: "needs-login",
|
|
1918
|
-
reason: "No providers configured in opencode",
|
|
1919
|
-
fixCommand: "opencode auth login",
|
|
1920
|
-
fixUrl: "https://opencode.ai/docs/config"
|
|
1921
|
-
};
|
|
1922
|
-
}
|
|
1923
|
-
return { cli: "opencode", state: "authenticated", via: "cli-credentials" };
|
|
1924
|
-
} catch (e) {
|
|
1925
|
-
const msg = e instanceof Error ? e.message : String(e);
|
|
1926
|
-
if (/ENOENT|not found/i.test(msg)) {
|
|
1927
|
-
return { cli: "opencode", state: "not-installed", reason: "opencode binary not on PATH" };
|
|
1928
|
-
}
|
|
1929
|
-
return {
|
|
1930
|
-
cli: "opencode",
|
|
1931
|
-
state: "error",
|
|
1932
|
-
reason: msg.split("\n")[0] ?? "opencode auth list failed"
|
|
1933
|
-
};
|
|
1934
|
-
}
|
|
1935
|
-
}
|
|
1936
|
-
function isClaudeCredsShape(v) {
|
|
1937
|
-
if (typeof v !== "object" || v === null) return false;
|
|
1938
|
-
const oauth = v.claudeAiOauth;
|
|
1939
|
-
if (typeof oauth !== "object" || oauth === null) return false;
|
|
1940
|
-
return typeof oauth.accessToken === "string";
|
|
1941
|
-
}
|
|
1942
|
-
function isGeminiCredsShape(v) {
|
|
1943
|
-
if (typeof v !== "object" || v === null) return false;
|
|
1944
|
-
return typeof v.access_token === "string";
|
|
1945
|
-
}
|
|
1946
|
-
async function probeCli(cli) {
|
|
1947
|
-
switch (cli) {
|
|
1948
|
-
case "claude":
|
|
1949
|
-
return Promise.resolve(probeClaude());
|
|
1950
|
-
case "codex":
|
|
1951
|
-
return probeCodex();
|
|
1952
|
-
case "gemini":
|
|
1953
|
-
return Promise.resolve(probeGemini());
|
|
1954
|
-
case "opencode":
|
|
1955
|
-
return probeOpencode();
|
|
1956
|
-
}
|
|
1957
|
-
}
|
|
1958
|
-
async function probeAllClis() {
|
|
1959
|
-
const clis = ["claude", "gemini", "codex", "opencode"];
|
|
1960
|
-
return Promise.all(clis.map((c) => probeCli(c)));
|
|
1961
|
-
}
|
|
1962
|
-
|
|
1963
1776
|
// src/cli/doctor.ts
|
|
1964
1777
|
var REQUIRED_NODE_MAJOR2 = 22;
|
|
1965
1778
|
var API_KEY_VARS = ["ANTHROPIC_API_KEY", "OPENAI_API_KEY", "GOOGLE_AI_API_KEY"];
|
|
@@ -2088,7 +1901,7 @@ function checkApiKeys() {
|
|
|
2088
1901
|
}
|
|
2089
1902
|
function checkConfigFile() {
|
|
2090
1903
|
for (const configPath of CONFIG_FILE_PATHS) {
|
|
2091
|
-
if (
|
|
1904
|
+
if (existsSync2(configPath)) {
|
|
2092
1905
|
return { found: true, path: configPath };
|
|
2093
1906
|
}
|
|
2094
1907
|
}
|
|
@@ -2129,11 +1942,11 @@ function buildRegistryAdvisory(cliResults) {
|
|
|
2129
1942
|
function hasPriorUsage() {
|
|
2130
1943
|
try {
|
|
2131
1944
|
const root = getNexusDataDir();
|
|
2132
|
-
if (!
|
|
1945
|
+
if (!existsSync2(root)) return false;
|
|
2133
1946
|
for (const sub of ["audit", "learning", "sessions", "voting"]) {
|
|
2134
1947
|
const p = `${root}/${sub}`;
|
|
2135
1948
|
try {
|
|
2136
|
-
if (
|
|
1949
|
+
if (existsSync2(p) && readdirSync(p).length > 0) return true;
|
|
2137
1950
|
} catch {
|
|
2138
1951
|
}
|
|
2139
1952
|
}
|
|
@@ -2143,13 +1956,13 @@ function hasPriorUsage() {
|
|
|
2143
1956
|
}
|
|
2144
1957
|
}
|
|
2145
1958
|
function countJsonlLines(filePath) {
|
|
2146
|
-
if (!
|
|
2147
|
-
return
|
|
1959
|
+
if (!existsSync2(filePath)) return 0;
|
|
1960
|
+
return readFileSync2(filePath, "utf-8").split("\n").filter((l) => l.trim().length > 0).length;
|
|
2148
1961
|
}
|
|
2149
1962
|
function readRulesMetadata(filePath) {
|
|
2150
|
-
if (!
|
|
1963
|
+
if (!existsSync2(filePath)) return { count: 0, savedAt: null };
|
|
2151
1964
|
try {
|
|
2152
|
-
const raw = JSON.parse(
|
|
1965
|
+
const raw = JSON.parse(readFileSync2(filePath, "utf-8"));
|
|
2153
1966
|
const rules = raw["rules"];
|
|
2154
1967
|
const saved = raw["savedAt"];
|
|
2155
1968
|
return {
|
|
@@ -2161,7 +1974,7 @@ function readRulesMetadata(filePath) {
|
|
|
2161
1974
|
}
|
|
2162
1975
|
}
|
|
2163
1976
|
function checkDirAccess(dir) {
|
|
2164
|
-
const exists =
|
|
1977
|
+
const exists = existsSync2(dir);
|
|
2165
1978
|
if (!exists) return { exists: false, writable: false };
|
|
2166
1979
|
try {
|
|
2167
1980
|
accessSync(dir, fsConstants.W_OK);
|
|
@@ -2221,10 +2034,10 @@ async function checkSqlite() {
|
|
|
2221
2034
|
}
|
|
2222
2035
|
function checkDataDirectory() {
|
|
2223
2036
|
const rootPath = getNexusDataDir();
|
|
2224
|
-
const rootExists =
|
|
2037
|
+
const rootExists = existsSync2(rootPath);
|
|
2225
2038
|
const subdirectories = DATA_SUBDIRECTORIES.map((name) => {
|
|
2226
|
-
const fullPath =
|
|
2227
|
-
const exists =
|
|
2039
|
+
const fullPath = join2(rootPath, name);
|
|
2040
|
+
const exists = existsSync2(fullPath);
|
|
2228
2041
|
return { name, path: fullPath, exists, writable: exists && isWritable(fullPath) };
|
|
2229
2042
|
});
|
|
2230
2043
|
return { rootExists, rootPath, subdirectories };
|
|
@@ -2308,7 +2121,7 @@ async function runDoctorFix(result) {
|
|
|
2308
2121
|
writeLine2("\u2500".repeat(40));
|
|
2309
2122
|
let fixCount = 0;
|
|
2310
2123
|
if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
|
|
2311
|
-
const { runSetup } = await import("./setup-command-
|
|
2124
|
+
const { runSetup } = await import("./setup-command-DB3DOE6K.js");
|
|
2312
2125
|
const setupResult = runSetup({
|
|
2313
2126
|
skipMcp: true,
|
|
2314
2127
|
skipRules: true,
|
|
@@ -2355,7 +2168,7 @@ function initDataDirectories(dryRun = false) {
|
|
|
2355
2168
|
ensureDir(NEXUS_DATA_DIR, dryRun, created, alreadyExisted);
|
|
2356
2169
|
for (const subdir of DATA_SUBDIRECTORIES) {
|
|
2357
2170
|
const mode = RESTRICTED_DIRS.has(subdir) ? 448 : void 0;
|
|
2358
|
-
ensureDir(
|
|
2171
|
+
ensureDir(join3(NEXUS_DATA_DIR, subdir), dryRun, created, alreadyExisted, mode);
|
|
2359
2172
|
}
|
|
2360
2173
|
return { success: true, rootPath: NEXUS_DATA_DIR, created, alreadyExisted, error: null };
|
|
2361
2174
|
} catch (error) {
|
|
@@ -2364,7 +2177,7 @@ function initDataDirectories(dryRun = false) {
|
|
|
2364
2177
|
}
|
|
2365
2178
|
}
|
|
2366
2179
|
function ensureDir(dirPath, dryRun, created, alreadyExisted, mode) {
|
|
2367
|
-
if (
|
|
2180
|
+
if (existsSync3(dirPath)) {
|
|
2368
2181
|
alreadyExisted.push(dirPath);
|
|
2369
2182
|
return;
|
|
2370
2183
|
}
|
|
@@ -2406,7 +2219,6 @@ export {
|
|
|
2406
2219
|
filterAvailableModels,
|
|
2407
2220
|
DEFAULT_TASK_TTL_MS,
|
|
2408
2221
|
clampTaskTtl,
|
|
2409
|
-
probeAllClis,
|
|
2410
2222
|
DATA_SUBDIRECTORIES,
|
|
2411
2223
|
checkApiKeys,
|
|
2412
2224
|
checkSqlite,
|
|
@@ -2419,4 +2231,4 @@ export {
|
|
|
2419
2231
|
startStdioServer,
|
|
2420
2232
|
closeServer
|
|
2421
2233
|
};
|
|
2422
|
-
//# sourceMappingURL=chunk-
|
|
2234
|
+
//# sourceMappingURL=chunk-LIY6WZNR.js.map
|