crosscheck-cli 0.0.10 → 0.0.11
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/config.js +8 -0
- package/dist/config.js.map +1 -1
- package/dist/mcp.js +24 -15
- package/dist/mcp.js.map +1 -1
- package/package.json +2 -2
package/dist/config.js
CHANGED
|
@@ -13,6 +13,14 @@ export const CLI_PACKAGE = "crosscheck-cli";
|
|
|
13
13
|
* Python server — now pure TypeScript, shipped as a normal npm dependency).
|
|
14
14
|
*/
|
|
15
15
|
export const ENGINE_PACKAGE = "crosscheck-mcp";
|
|
16
|
+
/**
|
|
17
|
+
* Engine version the npx fallback pins to. We never float the fallback to
|
|
18
|
+
* `@latest`: that drifts past the version this CLI was built/tested against
|
|
19
|
+
* and triggers a fresh native rebuild in a throwaway npx cache (the failure
|
|
20
|
+
* mode behind "MCP error -32000: Connection closed" on some machines). Keep
|
|
21
|
+
* this in lockstep with the `crosscheck-mcp` dependency in package.json.
|
|
22
|
+
*/
|
|
23
|
+
export const ENGINE_FALLBACK_VERSION = "0.1.3";
|
|
16
24
|
/**
|
|
17
25
|
* Ed25519 public key (PEM, SPKI) used to verify activation JWTs. This is
|
|
18
26
|
* replaced at build time by the publish pipeline with the public half of
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,UAAU,GACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,iCAAiC,CAAC;AAErE,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,UAAU,GACrB,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,iCAAiC,CAAC;AAErE,gFAAgF;AAChF,MAAM,CAAC,MAAM,WAAW,GAAG,gBAAgB,CAAC;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,gBAAgB,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,EAAE,CAAC;AAEnF;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE7C;;;GAGG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AACzD,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAE1D;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC"}
|
package/dist/mcp.js
CHANGED
|
@@ -20,10 +20,9 @@
|
|
|
20
20
|
* license/onboarding wrapper; crosscheck-mcp is the engine.
|
|
21
21
|
*/
|
|
22
22
|
import { spawn } from "node:child_process";
|
|
23
|
-
import { readFileSync } from "node:fs";
|
|
24
23
|
import path from "node:path";
|
|
25
24
|
import { createRequire } from "node:module";
|
|
26
|
-
import { ENGINE_PACKAGE, SERVER_URL } from "./config.js";
|
|
25
|
+
import { ENGINE_FALLBACK_VERSION, ENGINE_PACKAGE, SERVER_URL } from "./config.js";
|
|
27
26
|
import { getSecret } from "./keychain.js";
|
|
28
27
|
import { verifyJwt } from "./jwt.js";
|
|
29
28
|
const require = createRequire(import.meta.url);
|
|
@@ -50,25 +49,26 @@ async function loadUpstreamKeys() {
|
|
|
50
49
|
* How to launch the engine. Prefer a locally-installed crosscheck-mcp (fast,
|
|
51
50
|
* offline, version-pinned via our dependency). Fall back to `npx -y` so the
|
|
52
51
|
* CLI still works if the dependency tree was flattened oddly.
|
|
52
|
+
*
|
|
53
|
+
* We resolve the engine's MAIN ENTRY (`require.resolve(ENGINE_PACKAGE)` →
|
|
54
|
+
* dist/node-stdio.cjs), NOT `${ENGINE_PACKAGE}/package.json`. The engine's
|
|
55
|
+
* "exports" map only exposes ".", so the package.json subpath throws on
|
|
56
|
+
* Node ≥18 and would force the npx fallback on EVERY launch. Resolving the
|
|
57
|
+
* bare package name uses the "." export and works for any engine version.
|
|
53
58
|
*/
|
|
54
59
|
function resolveEngineLauncher() {
|
|
55
60
|
try {
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
? pkg.bin
|
|
60
|
-
: (pkg.bin?.[ENGINE_PACKAGE] ?? Object.values(pkg.bin ?? {})[0]);
|
|
61
|
-
if (binRel) {
|
|
62
|
-
const entry = path.join(path.dirname(pkgJsonPath), binRel);
|
|
63
|
-
// Spawn with the same Node that's running us — robust across installs.
|
|
64
|
-
return { command: process.execPath, args: [entry] };
|
|
65
|
-
}
|
|
61
|
+
const entry = require.resolve(ENGINE_PACKAGE);
|
|
62
|
+
// Spawn with the same Node that's running us — robust across installs.
|
|
63
|
+
return { command: process.execPath, args: [entry] };
|
|
66
64
|
}
|
|
67
65
|
catch {
|
|
68
|
-
// Not
|
|
66
|
+
// Not installed alongside us — fall through to npx, pinned to the engine
|
|
67
|
+
// version this CLI was built against (never @latest, which would drift and
|
|
68
|
+
// trigger a fresh native rebuild in a throwaway cache).
|
|
69
|
+
const npx = process.platform === "win32" ? "npx.cmd" : "npx";
|
|
70
|
+
return { command: npx, args: ["-y", `${ENGINE_PACKAGE}@${ENGINE_FALLBACK_VERSION}`] };
|
|
69
71
|
}
|
|
70
|
-
const npx = process.platform === "win32" ? "npx.cmd" : "npx";
|
|
71
|
-
return { command: npx, args: ["-y", ENGINE_PACKAGE] };
|
|
72
72
|
}
|
|
73
73
|
export async function startMcpServer() {
|
|
74
74
|
// 1. License gate.
|
|
@@ -107,6 +107,15 @@ export async function startMcpServer() {
|
|
|
107
107
|
process.stderr.write(`crosscheck-mcp exited on ${signal}\n`);
|
|
108
108
|
process.exit(1);
|
|
109
109
|
}
|
|
110
|
+
if (code && code !== 0) {
|
|
111
|
+
// A non-zero exit before the MCP handshake is what hosts surface as
|
|
112
|
+
// "MCP error -32000: Connection closed" — usually a native dependency
|
|
113
|
+
// that failed to build/load. Make the cause visible instead of opaque.
|
|
114
|
+
process.stderr.write(`\ncrosscheck engine (${ENGINE_PACKAGE}) exited with code ${code} before it could serve.\n` +
|
|
115
|
+
`This usually means a native dependency failed to build or load on this machine.\n` +
|
|
116
|
+
`Try a clean reinstall: npx -y crosscheck-cli@latest install\n` +
|
|
117
|
+
`If it persists, report it at https://github.com/fxspeiser/crosscheck-agent/issues\n\n`);
|
|
118
|
+
}
|
|
110
119
|
process.exit(code ?? 0);
|
|
111
120
|
});
|
|
112
121
|
child.on("error", (err) => {
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "crosscheck-cli",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.11",
|
|
4
4
|
"description": "Crosscheck — multi-LLM orchestration MCP for the terminal. Single-machine activation, BYO upstream LLM keys, content-free telemetry. Installs into Claude Code in one command.",
|
|
5
5
|
"license": "SEE LICENSE.md",
|
|
6
6
|
"type": "module",
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
"dependencies": {
|
|
30
30
|
"@modelcontextprotocol/sdk": "^1.0.0",
|
|
31
31
|
"@napi-rs/keyring": "^1.3.0",
|
|
32
|
-
"crosscheck-mcp": "^0.1.
|
|
32
|
+
"crosscheck-mcp": "^0.1.3"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@types/node": "^22.10.0",
|