crosscheck-cli 0.0.69 → 0.0.71
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/brand-cli.d.ts +39 -0
- package/dist/brand-cli.js +384 -0
- package/dist/brand-cli.js.map +1 -0
- package/dist/cli.js +19 -0
- package/dist/cli.js.map +1 -1
- package/dist/mcp.js +8 -0
- package/dist/mcp.js.map +1 -1
- package/dist/moderator-cli.d.ts +27 -0
- package/dist/moderator-cli.js +126 -0
- package/dist/moderator-cli.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `crosscheck brand` — brand packs from the terminal: see which applies,
|
|
3
|
+
* set the project or personal default, draft a pack from a project's own
|
|
4
|
+
* styles, validate one.
|
|
5
|
+
*
|
|
6
|
+
* Switching for the current Claude Code session is `xc brand use <id>`
|
|
7
|
+
* (the engine's `brand` tool) — a CLI process can't reach into a running
|
|
8
|
+
* MCP server. Everything here writes files, and says which.
|
|
9
|
+
*
|
|
10
|
+
* The packs, their validation and precedence live in the engine
|
|
11
|
+
* (crosscheck-mcp/brand), so the CLI, Claude Code and the desktop app agree.
|
|
12
|
+
*/
|
|
13
|
+
/** The project: the git repo around cwd, else cwd. */
|
|
14
|
+
export declare function projectRootFrom(start: string): string;
|
|
15
|
+
/** Set (or with null, remove) one key in a JSON file, keeping the rest. */
|
|
16
|
+
export declare function setJsonKey(file: string, key: string, value: string | null): void;
|
|
17
|
+
interface Draft {
|
|
18
|
+
colors: Partial<Record<"primary" | "accent" | "text" | "muted" | "background" | "border", string>>;
|
|
19
|
+
typography: {
|
|
20
|
+
heading?: string;
|
|
21
|
+
body?: string;
|
|
22
|
+
mono?: string;
|
|
23
|
+
};
|
|
24
|
+
sources: string[];
|
|
25
|
+
}
|
|
26
|
+
/** Projects often name colors by hue ("ink", "cyan", "paper"), not role.
|
|
27
|
+
* Fill the roles no variable claimed from the colors themselves: accent =
|
|
28
|
+
* most saturated, primary = darkest strong color, muted = a mid tone,
|
|
29
|
+
* border = a light tint. Status colors never count. */
|
|
30
|
+
export declare function inferRoles(colors: Draft["colors"], leftovers: ReadonlyArray<[string, string]>): void;
|
|
31
|
+
export declare function scanStyles(root: string): Draft;
|
|
32
|
+
export declare function initPack(root: string, idArg?: string): {
|
|
33
|
+
dir: string;
|
|
34
|
+
draft: Draft;
|
|
35
|
+
logo: string | null;
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
export declare function runBrandCommand(sub: string | undefined, args: readonly string[]): Promise<void>;
|
|
39
|
+
export {};
|
|
@@ -0,0 +1,384 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `crosscheck brand` — brand packs from the terminal: see which applies,
|
|
3
|
+
* set the project or personal default, draft a pack from a project's own
|
|
4
|
+
* styles, validate one.
|
|
5
|
+
*
|
|
6
|
+
* Switching for the current Claude Code session is `xc brand use <id>`
|
|
7
|
+
* (the engine's `brand` tool) — a CLI process can't reach into a running
|
|
8
|
+
* MCP server. Everything here writes files, and says which.
|
|
9
|
+
*
|
|
10
|
+
* The packs, their validation and precedence live in the engine
|
|
11
|
+
* (crosscheck-mcp/brand), so the CLI, Claude Code and the desktop app agree.
|
|
12
|
+
*/
|
|
13
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import { findBrand, isSafeSvg, listBrands, loadBrandDir, projectBrandDir, resolveBrand, userBrandDir, } from "crosscheck-mcp/brand";
|
|
16
|
+
const USAGE = "usage: crosscheck brand [status]\n" +
|
|
17
|
+
" crosscheck brand list\n" +
|
|
18
|
+
" crosscheck brand use <id|none> [--project | --user] (default: --user)\n" +
|
|
19
|
+
" crosscheck brand clear [--project | --user]\n" +
|
|
20
|
+
" crosscheck brand init [id] draft a pack from this project's styles\n" +
|
|
21
|
+
" crosscheck brand validate <id|folder>\n" +
|
|
22
|
+
"\n" +
|
|
23
|
+
" Packs: <project>/.crosscheck/brands/<id>/ and ~/.crosscheck/brands/<id>/\n" +
|
|
24
|
+
" (brand.json + optional logo.svg/png). For this Claude Code session only:\n" +
|
|
25
|
+
" `xc brand use <id>`.";
|
|
26
|
+
/** The project: the git repo around cwd, else cwd. */
|
|
27
|
+
export function projectRootFrom(start) {
|
|
28
|
+
let dir = path.resolve(start);
|
|
29
|
+
for (let i = 0; i < 12; i++) {
|
|
30
|
+
if (existsSync(path.join(dir, ".git")))
|
|
31
|
+
return dir;
|
|
32
|
+
const parent = path.dirname(dir);
|
|
33
|
+
if (parent === dir)
|
|
34
|
+
break;
|
|
35
|
+
dir = parent;
|
|
36
|
+
}
|
|
37
|
+
return path.resolve(start);
|
|
38
|
+
}
|
|
39
|
+
const prefsFile = () => path.join(path.dirname(userBrandDir()), "brand-prefs.json");
|
|
40
|
+
function readJson(file) {
|
|
41
|
+
try {
|
|
42
|
+
const v = JSON.parse(readFileSync(file, "utf8"));
|
|
43
|
+
return v && typeof v === "object" && !Array.isArray(v) ? v : {};
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return {};
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
/** Set (or with null, remove) one key in a JSON file, keeping the rest. */
|
|
50
|
+
export function setJsonKey(file, key, value) {
|
|
51
|
+
const obj = readJson(file);
|
|
52
|
+
if (value === null)
|
|
53
|
+
delete obj[key];
|
|
54
|
+
else
|
|
55
|
+
obj[key] = value;
|
|
56
|
+
mkdirSync(path.dirname(file), { recursive: true });
|
|
57
|
+
writeFileSync(file, `${JSON.stringify(obj, null, 2)}\n`);
|
|
58
|
+
}
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
// init: draft a pack from the project's own styles
|
|
61
|
+
const SKIP = new Set(["node_modules", ".git", "dist", "build", "out", ".next", "coverage", "vendor", ".crosscheck"]);
|
|
62
|
+
const STYLE_EXT = /\.(css|scss|sass|less)$/i;
|
|
63
|
+
const TAILWIND = /^tailwind\.config\.(js|cjs|mjs|ts)$/i;
|
|
64
|
+
const LOGO_CANDIDATES = ["logo.svg", "public/logo.svg", "public/logo.png", "assets/logo.svg", "src/assets/logo.svg", "public/images/logo.svg", "static/logo.svg", "logo.png", "assets/logo.png"];
|
|
65
|
+
function walk(root, max = 600) {
|
|
66
|
+
const out = [];
|
|
67
|
+
const stack = [[root, 0]];
|
|
68
|
+
while (stack.length && out.length < max) {
|
|
69
|
+
const [dir, depth] = stack.pop();
|
|
70
|
+
let entries = [];
|
|
71
|
+
try {
|
|
72
|
+
entries = readdirSync(dir, { withFileTypes: true });
|
|
73
|
+
}
|
|
74
|
+
catch {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
for (const e of entries) {
|
|
78
|
+
if (e.name.startsWith(".") && e.name !== ".storybook")
|
|
79
|
+
continue;
|
|
80
|
+
const p = path.join(dir, e.name);
|
|
81
|
+
if (e.isDirectory()) {
|
|
82
|
+
if (!SKIP.has(e.name) && depth < 5)
|
|
83
|
+
stack.push([p, depth + 1]);
|
|
84
|
+
}
|
|
85
|
+
else if (STYLE_EXT.test(e.name) || TAILWIND.test(e.name))
|
|
86
|
+
out.push(p);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return out;
|
|
90
|
+
}
|
|
91
|
+
const hex6 = (h) => {
|
|
92
|
+
const s = h.toLowerCase();
|
|
93
|
+
return s.length === 4 ? `#${s[1]}${s[1]}${s[2]}${s[2]}${s[3]}${s[3]}` : s;
|
|
94
|
+
};
|
|
95
|
+
const ROLES = [
|
|
96
|
+
["primary", /^(?:color-)?(?:primary|brand)(?:-500|-600|-default)?$/],
|
|
97
|
+
["accent", /^(?:color-)?(?:accent|secondary|highlight)(?:-500|-default)?$/],
|
|
98
|
+
["text", /^(?:color-)?(?:text|foreground|fg|ink)(?:-primary|-default)?$/],
|
|
99
|
+
["muted", /^(?:color-)?(?:muted|text-muted|muted-foreground|subtle|ink-muted)$/],
|
|
100
|
+
["background", /^(?:color-)?(?:background|bg|surface|paper)(?:-default)?$/],
|
|
101
|
+
["border", /^(?:color-)?(?:border|line|divider)(?:-default)?$/],
|
|
102
|
+
];
|
|
103
|
+
/** Read colors and fonts a project already declares: CSS custom properties
|
|
104
|
+
* and Tailwind config. Deterministic — no model, nothing invented. */
|
|
105
|
+
function hsl(hex) {
|
|
106
|
+
const n = parseInt(hex.slice(1), 16);
|
|
107
|
+
const r = ((n >> 16) & 255) / 255, g = ((n >> 8) & 255) / 255, b = (n & 255) / 255;
|
|
108
|
+
const max = Math.max(r, g, b), min = Math.min(r, g, b), l = (max + min) / 2;
|
|
109
|
+
const s = max === min ? 0 : (max - min) / (l > 0.5 ? 2 - max - min : max + min);
|
|
110
|
+
return { s, l };
|
|
111
|
+
}
|
|
112
|
+
const STATUS = /success|warn|danger|error|info|positive|negative|caution/;
|
|
113
|
+
/** Projects often name colors by hue ("ink", "cyan", "paper"), not role.
|
|
114
|
+
* Fill the roles no variable claimed from the colors themselves: accent =
|
|
115
|
+
* most saturated, primary = darkest strong color, muted = a mid tone,
|
|
116
|
+
* border = a light tint. Status colors never count. */
|
|
117
|
+
export function inferRoles(colors, leftovers) {
|
|
118
|
+
const used = new Set(Object.values(colors));
|
|
119
|
+
const pool = leftovers.filter(([name, hex]) => !STATUS.test(name) && !used.has(hex)).map(([name, hex]) => ({ name, hex, ...hsl(hex) }));
|
|
120
|
+
const take = (pick) => {
|
|
121
|
+
if (!pick)
|
|
122
|
+
return undefined;
|
|
123
|
+
used.add(pick.hex);
|
|
124
|
+
pool.splice(pool.indexOf(pick), 1);
|
|
125
|
+
return pick.hex;
|
|
126
|
+
};
|
|
127
|
+
const by = (xs, f) => xs.slice().sort((a, b) => f(b) - f(a))[0];
|
|
128
|
+
if (!colors.accent)
|
|
129
|
+
colors.accent = take(by(pool.filter((c) => c.s > 0.45 && c.l > 0.25 && c.l < 0.75), (c) => c.s));
|
|
130
|
+
if (!colors.primary)
|
|
131
|
+
colors.primary = take(by(pool.filter((c) => c.l < 0.4), (c) => c.s - c.l)) ?? colors.text;
|
|
132
|
+
if (!colors.muted)
|
|
133
|
+
colors.muted = take(by(pool.filter((c) => c.l >= 0.3 && c.l <= 0.6), (c) => -c.s));
|
|
134
|
+
if (!colors.border)
|
|
135
|
+
colors.border = take(by(pool.filter((c) => c.l > 0.85 && c.l < 0.99), (c) => -c.l));
|
|
136
|
+
for (const k of Object.keys(colors))
|
|
137
|
+
if (!colors[k])
|
|
138
|
+
delete colors[k];
|
|
139
|
+
}
|
|
140
|
+
export function scanStyles(root) {
|
|
141
|
+
const draft = { colors: {}, typography: {}, sources: [] };
|
|
142
|
+
const leftovers = [];
|
|
143
|
+
for (const file of walk(root)) {
|
|
144
|
+
let text = "";
|
|
145
|
+
try {
|
|
146
|
+
if (statSync(file).size > 512 * 1024)
|
|
147
|
+
continue;
|
|
148
|
+
text = readFileSync(file, "utf8");
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
continue;
|
|
152
|
+
}
|
|
153
|
+
const rel = path.relative(root, file);
|
|
154
|
+
let used = false;
|
|
155
|
+
for (const m of text.matchAll(/--([\w-]+)\s*:\s*(#[0-9a-fA-F]{6}\b|#[0-9a-fA-F]{3}\b)/g)) {
|
|
156
|
+
const name = m[1].toLowerCase();
|
|
157
|
+
let claimed = false;
|
|
158
|
+
for (const [role, re] of ROLES) {
|
|
159
|
+
if (!draft.colors[role] && re.test(name)) {
|
|
160
|
+
draft.colors[role] = hex6(m[2]);
|
|
161
|
+
used = true;
|
|
162
|
+
claimed = true;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (!claimed && /^(?:color-)?[a-z]+(?:-\d{1,3})?$/.test(name)) {
|
|
166
|
+
leftovers.push([name, hex6(m[2])]);
|
|
167
|
+
used = true;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
for (const m of text.matchAll(/\b(primary|accent|secondary|brand)\s*:\s*['"](#[0-9a-fA-F]{6}|#[0-9a-fA-F]{3})['"]/g)) {
|
|
171
|
+
const role = m[1] === "secondary" ? "accent" : m[1] === "brand" ? "primary" : m[1];
|
|
172
|
+
if (!draft.colors[role]) {
|
|
173
|
+
draft.colors[role] = hex6(m[2]);
|
|
174
|
+
used = true;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
const fontVar = /--font-(sans|body|heading|display|mono)\s*:\s*['"]?([A-Za-z0-9 _-]{2,40})/g;
|
|
178
|
+
for (const m of text.matchAll(fontVar)) {
|
|
179
|
+
const slot = m[1] === "mono" ? "mono" : m[1] === "heading" || m[1] === "display" ? "heading" : "body";
|
|
180
|
+
if (!draft.typography[slot]) {
|
|
181
|
+
draft.typography[slot] = m[2].trim();
|
|
182
|
+
used = true;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
for (const m of text.matchAll(/\b(sans|mono|heading|display)\s*:\s*\[\s*['"]([A-Za-z0-9 _-]{2,40})['"]/g)) {
|
|
186
|
+
const slot = m[1] === "mono" ? "mono" : m[1] === "sans" ? "body" : "heading";
|
|
187
|
+
if (!draft.typography[slot]) {
|
|
188
|
+
draft.typography[slot] = m[2].trim();
|
|
189
|
+
used = true;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (used)
|
|
193
|
+
draft.sources.push(rel);
|
|
194
|
+
}
|
|
195
|
+
inferRoles(draft.colors, leftovers);
|
|
196
|
+
return draft;
|
|
197
|
+
}
|
|
198
|
+
/** Logo files in a project's brand folder (brand/, assets/brand/, …):
|
|
199
|
+
* a wordmark first, then a logo, then a mark; SVG before PNG. */
|
|
200
|
+
function brandFolderLogos(root) {
|
|
201
|
+
const found = [];
|
|
202
|
+
for (const base of ["brand", "assets/brand", "public/brand", "branding", "design/brand"]) {
|
|
203
|
+
for (const sub of ["", "svg", "logo", "logos"]) {
|
|
204
|
+
const dir = path.join(root, base, sub);
|
|
205
|
+
let names = [];
|
|
206
|
+
try {
|
|
207
|
+
names = readdirSync(dir);
|
|
208
|
+
}
|
|
209
|
+
catch {
|
|
210
|
+
continue;
|
|
211
|
+
}
|
|
212
|
+
for (const n of names)
|
|
213
|
+
if (/^(wordmark|logo|mark)[\w-]*\.(svg|png)$/i.test(n))
|
|
214
|
+
found.push(path.join(base, sub, n));
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
const rank = (f) => {
|
|
218
|
+
const n = path.basename(f).toLowerCase();
|
|
219
|
+
return (n.startsWith("wordmark") ? 0 : n.startsWith("logo") ? 10 : 20) + (n.endsWith(".svg") ? 0 : 5);
|
|
220
|
+
};
|
|
221
|
+
return found.sort((a, b) => rank(a) - rank(b));
|
|
222
|
+
}
|
|
223
|
+
function findLogo(root) {
|
|
224
|
+
for (const rel of [...LOGO_CANDIDATES, ...brandFolderLogos(root)]) {
|
|
225
|
+
const p = path.join(root, rel);
|
|
226
|
+
try {
|
|
227
|
+
if (!existsSync(p) || statSync(p).size > 256 * 1024)
|
|
228
|
+
continue;
|
|
229
|
+
const body = readFileSync(p);
|
|
230
|
+
if (p.endsWith(".svg") ? isSafeSvg(body.toString("utf8")) : body.subarray(0, 8).toString("hex") === "89504e470d0a1a0a") {
|
|
231
|
+
return { file: rel, body };
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
catch { /* next */ }
|
|
235
|
+
}
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
const toId = (s) => s.toLowerCase().replace(/^@[^/]+\//, "").replace(/[^a-z0-9_-]+/g, "-").replace(/^-+|-+$/g, "").slice(0, 48) || "project";
|
|
239
|
+
export function initPack(root, idArg) {
|
|
240
|
+
const pkgName = typeof readJson(path.join(root, "package.json"))["name"] === "string" ? String(readJson(path.join(root, "package.json"))["name"]) : "";
|
|
241
|
+
const id = toId(idArg || pkgName || path.basename(root));
|
|
242
|
+
const dir = path.join(projectBrandDir(root), id);
|
|
243
|
+
if (existsSync(path.join(dir, "brand.json")))
|
|
244
|
+
throw new Error(`${path.relative(root, dir)}/brand.json already exists — edit it, or pick another id.`);
|
|
245
|
+
const draft = scanStyles(root);
|
|
246
|
+
const logo = findLogo(root);
|
|
247
|
+
mkdirSync(dir, { recursive: true });
|
|
248
|
+
const json = {
|
|
249
|
+
id,
|
|
250
|
+
name: idArg || pkgName.replace(/^@[^/]+\//, "") || path.basename(root),
|
|
251
|
+
description: "",
|
|
252
|
+
generated: true,
|
|
253
|
+
_sources: draft.sources.slice(0, 10),
|
|
254
|
+
colors: draft.colors,
|
|
255
|
+
typography: draft.typography,
|
|
256
|
+
voice: { tone: "", uiNotes: "", docNotes: "", dos: [], donts: [] },
|
|
257
|
+
document: { footer: "", showLogo: true },
|
|
258
|
+
};
|
|
259
|
+
writeFileSync(path.join(dir, "brand.json"), `${JSON.stringify(json, null, 2)}\n`);
|
|
260
|
+
if (logo)
|
|
261
|
+
writeFileSync(path.join(dir, logo.file.endsWith(".png") ? "logo.png" : "logo.svg"), logo.body);
|
|
262
|
+
return { dir, draft, logo: logo?.file ?? null, id };
|
|
263
|
+
}
|
|
264
|
+
// ---------------------------------------------------------------------------
|
|
265
|
+
/* eslint-disable no-console */
|
|
266
|
+
function describe(root) {
|
|
267
|
+
const r = resolveBrand({ session: process.env["CROSSCHECK_BRAND"] ?? null, projectRoot: root });
|
|
268
|
+
const where = {
|
|
269
|
+
call: "this call", session: "CROSSCHECK_BRAND in your shell", project: "crosscheck.config.json",
|
|
270
|
+
"project-inferred": "the project's only pack", user: "your default (~/.crosscheck/brand-prefs.json)", none: "",
|
|
271
|
+
};
|
|
272
|
+
console.log(r.pack
|
|
273
|
+
? `Brand: ${r.pack.name} (${r.pack.scope}:${r.pack.id}) — from ${where[r.source]}${r.pack.generated ? " · draft, not yet reviewed" : ""}`
|
|
274
|
+
: r.source === "none" && r.ref === "none" ? "Brand: none (branding off)" : "Brand: none set");
|
|
275
|
+
for (const d of r.diagnostics)
|
|
276
|
+
console.log(` ! ${d}`);
|
|
277
|
+
}
|
|
278
|
+
export async function runBrandCommand(sub, args) {
|
|
279
|
+
const root = projectRootFrom(process.cwd());
|
|
280
|
+
const flag = (f) => args.includes(f);
|
|
281
|
+
const positional = args.filter((a) => !a.startsWith("--"));
|
|
282
|
+
switch (sub) {
|
|
283
|
+
case undefined:
|
|
284
|
+
case "status": {
|
|
285
|
+
describe(root);
|
|
286
|
+
console.log(`Project: ${root}`);
|
|
287
|
+
console.log("Switch for this Claude Code session: `xc brand use <id>`. Defaults: `crosscheck brand use <id> --project|--user`.");
|
|
288
|
+
return;
|
|
289
|
+
}
|
|
290
|
+
case "list": {
|
|
291
|
+
const packs = listBrands({ projectRoot: root });
|
|
292
|
+
if (!packs.length) {
|
|
293
|
+
console.log("No brand packs yet. Draft one from this project: `crosscheck brand init`, or add a folder under ~/.crosscheck/brands/<id>/.");
|
|
294
|
+
return;
|
|
295
|
+
}
|
|
296
|
+
for (const p of packs)
|
|
297
|
+
console.log(`${p.scope.padEnd(8)}${p.id.padEnd(20)}${p.error ? `✗ ${p.error}` : `${p.name}${p.generated ? " (draft)" : ""}`}`);
|
|
298
|
+
describe(root);
|
|
299
|
+
return;
|
|
300
|
+
}
|
|
301
|
+
case "use": {
|
|
302
|
+
const ref = positional[0];
|
|
303
|
+
if (!ref) {
|
|
304
|
+
console.error(USAGE);
|
|
305
|
+
process.exitCode = 1;
|
|
306
|
+
return;
|
|
307
|
+
}
|
|
308
|
+
if (ref.toLowerCase() !== "none") {
|
|
309
|
+
const found = findBrand(ref, { projectRoot: root });
|
|
310
|
+
if (!found.pack) {
|
|
311
|
+
console.error(found.error ?? `no brand pack "${ref}"`);
|
|
312
|
+
process.exitCode = 1;
|
|
313
|
+
return;
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
if (flag("--project")) {
|
|
317
|
+
const file = path.join(root, "crosscheck.config.json");
|
|
318
|
+
setJsonKey(file, "brand", ref);
|
|
319
|
+
console.log(`Project brand set to ${ref} in ${file}. Commit it to share it.`);
|
|
320
|
+
}
|
|
321
|
+
else {
|
|
322
|
+
setJsonKey(prefsFile(), "default", ref);
|
|
323
|
+
console.log(`Your default brand is now ${ref} (${prefsFile()}). A project's own brand still wins.`);
|
|
324
|
+
}
|
|
325
|
+
console.log("Restart Claude Code (or the MCP server) to pick it up.");
|
|
326
|
+
return;
|
|
327
|
+
}
|
|
328
|
+
case "clear": {
|
|
329
|
+
if (flag("--project")) {
|
|
330
|
+
setJsonKey(path.join(root, "crosscheck.config.json"), "brand", null);
|
|
331
|
+
console.log("Removed the project's brand pointer.");
|
|
332
|
+
}
|
|
333
|
+
else {
|
|
334
|
+
setJsonKey(prefsFile(), "default", null);
|
|
335
|
+
if (Object.keys(readJson(prefsFile())).length === 0) {
|
|
336
|
+
try {
|
|
337
|
+
unlinkSync(prefsFile());
|
|
338
|
+
}
|
|
339
|
+
catch { /* fine */ }
|
|
340
|
+
}
|
|
341
|
+
console.log("Cleared your default brand.");
|
|
342
|
+
}
|
|
343
|
+
return;
|
|
344
|
+
}
|
|
345
|
+
case "init": {
|
|
346
|
+
try {
|
|
347
|
+
const r = initPack(root, positional[0]);
|
|
348
|
+
const found = Object.keys(r.draft.colors).length + Object.keys(r.draft.typography).length;
|
|
349
|
+
console.log(`Drafted ${path.relative(root, r.dir)}/brand.json — ${found} token${found === 1 ? "" : "s"} from ${r.draft.sources.length} file${r.draft.sources.length === 1 ? "" : "s"}${r.logo ? `, logo from ${r.logo}` : ", no logo found"}.`);
|
|
350
|
+
console.log("It's marked \"generated\": review the colors, fill in voice (tone, dos, don'ts), then remove that flag.");
|
|
351
|
+
console.log(`Use it: \`crosscheck brand use ${r.id} --project\`.`);
|
|
352
|
+
}
|
|
353
|
+
catch (err) {
|
|
354
|
+
console.error(err instanceof Error ? err.message : String(err));
|
|
355
|
+
process.exitCode = 1;
|
|
356
|
+
}
|
|
357
|
+
return;
|
|
358
|
+
}
|
|
359
|
+
case "validate": {
|
|
360
|
+
const target = positional[0];
|
|
361
|
+
if (!target) {
|
|
362
|
+
console.error(USAGE);
|
|
363
|
+
process.exitCode = 1;
|
|
364
|
+
return;
|
|
365
|
+
}
|
|
366
|
+
const dir = existsSync(path.join(target, "brand.json")) ? path.resolve(target) : null;
|
|
367
|
+
const r = dir ? loadBrandDir(dir, "user") : findBrand(target, { projectRoot: root });
|
|
368
|
+
if (!r.pack) {
|
|
369
|
+
console.error(`✗ ${r.error}`);
|
|
370
|
+
process.exitCode = 1;
|
|
371
|
+
return;
|
|
372
|
+
}
|
|
373
|
+
console.log(`✓ ${r.pack.name} (${r.pack.id}) — ${r.pack.logo ? "logo ok" : "no logo"}${r.pack.generated ? ", draft" : ""}`);
|
|
374
|
+
for (const d of r.diagnostics)
|
|
375
|
+
console.log(` ! ${d}`);
|
|
376
|
+
return;
|
|
377
|
+
}
|
|
378
|
+
default:
|
|
379
|
+
console.error(USAGE);
|
|
380
|
+
process.exitCode = 1;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
/* eslint-enable no-console */
|
|
384
|
+
//# sourceMappingURL=brand-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"brand-cli.js","sourceRoot":"","sources":["../src/brand-cli.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -17,6 +17,8 @@ import { runOnePasswordKeysSetup } from "./onepassword/setup.js";
|
|
|
17
17
|
import { runInstall } from "./install.js";
|
|
18
18
|
import { startMcpServer } from "./mcp.js";
|
|
19
19
|
import { runModelsCommand } from "./models-cli.js";
|
|
20
|
+
import { runModeratorCommand } from "./moderator-cli.js";
|
|
21
|
+
import { runBrandCommand } from "./brand-cli.js";
|
|
20
22
|
const HELP = `crosscheck — multi-LLM orchestration MCP for the terminal
|
|
21
23
|
|
|
22
24
|
Usage:
|
|
@@ -67,6 +69,15 @@ Usage:
|
|
|
67
69
|
lineup). Pick, press Save, then run \`crosscheck models sync\` here — or just
|
|
68
70
|
restart the MCP server. The terminal commands above only edit the \`confer\`
|
|
69
71
|
set; per-panel selection is browser-only for now.
|
|
72
|
+
crosscheck moderator Show who moderates (runs the synthesis in debate,
|
|
73
|
+
plan, coordinate, create). Any provider can.
|
|
74
|
+
crosscheck moderator set <provider>[:model] Choose it — e.g. \`crosscheck moderator set openai\`
|
|
75
|
+
or pin a model: \`... set gemini:gemini-3.8-flash\`.
|
|
76
|
+
crosscheck moderator clear Back to the default (config file, else Anthropic).
|
|
77
|
+
crosscheck brand Which brand pack styles UI guidance and documents here.
|
|
78
|
+
crosscheck brand use <id> [--project] Set your default brand (or this project's).
|
|
79
|
+
crosscheck brand init [id] Draft a pack from this project's CSS/Tailwind + logo.
|
|
80
|
+
crosscheck brand list | clear | validate (in Claude Code: \`xc brand use <id>\` for the session)
|
|
70
81
|
crosscheck doctor Diagnose a broken install (Node, secret store,
|
|
71
82
|
engine, activation, keys).
|
|
72
83
|
|
|
@@ -326,6 +337,14 @@ async function main() {
|
|
|
326
337
|
await runModelsCommand(rest[0], rest.slice(1));
|
|
327
338
|
return;
|
|
328
339
|
}
|
|
340
|
+
case "moderator": {
|
|
341
|
+
await runModeratorCommand(rest[0], rest.slice(1));
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
344
|
+
case "brand": {
|
|
345
|
+
await runBrandCommand(rest[0], rest.slice(1));
|
|
346
|
+
return;
|
|
347
|
+
}
|
|
329
348
|
default:
|
|
330
349
|
// eslint-disable-next-line no-console
|
|
331
350
|
console.error(`Unknown command: ${cmd}\n`);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EACL,YAAY,EACZ,aAAa,EACb,SAAS,EACT,WAAW,EACX,4BAA4B,EAC5B,aAAa,EACb,SAAS,EACT,gBAAgB,GACjB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AACnG,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.js
CHANGED
|
@@ -33,6 +33,7 @@ import { fetchProviderPolicy } from "./enterprise/policy.js";
|
|
|
33
33
|
import { readLocalModelPrefs, readLocalModelModes, effectiveForMode } from "./model-prefs.js";
|
|
34
34
|
import { reconcileSeat, reportReconcile } from "./reconcile.js";
|
|
35
35
|
import { resolveAllModels, MODEL_ENV_VARS } from "./model-resolve.js";
|
|
36
|
+
import { MODERATOR_ENV, moderatorEnvFor } from "./moderator-cli.js";
|
|
36
37
|
const require = createRequire(import.meta.url);
|
|
37
38
|
/** Keychain key name -> engine env var name. Mirrors crosscheck-mcp's providers. */
|
|
38
39
|
const KEY_BINDINGS = [
|
|
@@ -306,6 +307,13 @@ export async function startMcpServer(opts) {
|
|
|
306
307
|
delete env[superFallbacksVar];
|
|
307
308
|
}
|
|
308
309
|
}
|
|
310
|
+
// Who moderates: a shell CROSSCHECK_MODERATOR, else `crosscheck moderator
|
|
311
|
+
// set`, else left to the engine (config file `moderator`, then Anthropic).
|
|
312
|
+
const moderator = moderatorEnvFor(process.env);
|
|
313
|
+
if (moderator)
|
|
314
|
+
env[MODERATOR_ENV] = moderator;
|
|
315
|
+
else
|
|
316
|
+
delete env[MODERATOR_ENV];
|
|
309
317
|
const child = spawn(command, args, { env, stdio: "inherit" });
|
|
310
318
|
// Keep the activation alive for the life of this serve process: fire a
|
|
311
319
|
// heartbeat now and every 24h. This refreshes the JWT well before its 7-day
|
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,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAAE,WAAW,EAAE,uBAAuB,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC/F,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAuB,MAAM,wBAAwB,CAAC;AAClF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `crosscheck moderator` — choose who moderates for Claude Code and the
|
|
3
|
+
* command line. Any provider can: the moderator runs every synthesis seat
|
|
4
|
+
* (debate, plan, coordinate, orchestrate, create) and is the judges'
|
|
5
|
+
* fallback. A spec is `provider` (follow its current model) or
|
|
6
|
+
* `provider:model` (pin an exact one).
|
|
7
|
+
*
|
|
8
|
+
* Saved on this machine and handed to the engine as CROSSCHECK_MODERATOR by
|
|
9
|
+
* `serve` (mcp.ts). A CROSSCHECK_MODERATOR already in the shell wins; the
|
|
10
|
+
* engine falls back to crosscheck.config.json's `moderator`, then Anthropic.
|
|
11
|
+
* The desktop app keeps its own choice (Settings → Moderator).
|
|
12
|
+
*/
|
|
13
|
+
export declare const MODERATOR_ENV = "CROSSCHECK_MODERATOR";
|
|
14
|
+
export interface ModeratorChoice {
|
|
15
|
+
provider: string;
|
|
16
|
+
model: string | null;
|
|
17
|
+
}
|
|
18
|
+
/** Parse `provider`, `provider:model`, or `provider model`. Provider names
|
|
19
|
+
* go through the same aliases as `crosscheck keys` ("xai" → "grok"). */
|
|
20
|
+
export declare function parseModeratorArgs(args: readonly string[]): ModeratorChoice | null;
|
|
21
|
+
export declare function formatModerator(c: ModeratorChoice): string;
|
|
22
|
+
export declare function readLocalModerator(): ModeratorChoice | null;
|
|
23
|
+
export declare function writeLocalModerator(c: ModeratorChoice | null): void;
|
|
24
|
+
/** The value `serve` should hand the engine, or undefined to leave it to
|
|
25
|
+
* the engine's own config. A shell CROSSCHECK_MODERATOR always wins. */
|
|
26
|
+
export declare function moderatorEnvFor(env: NodeJS.ProcessEnv): string | undefined;
|
|
27
|
+
export declare function runModeratorCommand(sub: string | undefined, args: readonly string[]): Promise<void>;
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `crosscheck moderator` — choose who moderates for Claude Code and the
|
|
3
|
+
* command line. Any provider can: the moderator runs every synthesis seat
|
|
4
|
+
* (debate, plan, coordinate, orchestrate, create) and is the judges'
|
|
5
|
+
* fallback. A spec is `provider` (follow its current model) or
|
|
6
|
+
* `provider:model` (pin an exact one).
|
|
7
|
+
*
|
|
8
|
+
* Saved on this machine and handed to the engine as CROSSCHECK_MODERATOR by
|
|
9
|
+
* `serve` (mcp.ts). A CROSSCHECK_MODERATOR already in the shell wins; the
|
|
10
|
+
* engine falls back to crosscheck.config.json's `moderator`, then Anthropic.
|
|
11
|
+
* The desktop app keeps its own choice (Settings → Moderator).
|
|
12
|
+
*/
|
|
13
|
+
import { readFileSync, unlinkSync, writeFileSync } from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
import { dataDir, getSecret } from "./keychain.js";
|
|
16
|
+
import { CANONICAL_PROVIDERS, resolveProvider } from "./key-format.js";
|
|
17
|
+
export const MODERATOR_ENV = "CROSSCHECK_MODERATOR";
|
|
18
|
+
const USAGE = "usage: crosscheck moderator [show]\n" +
|
|
19
|
+
" crosscheck moderator set <provider>[:<model>] (or: set <provider> <model>)\n" +
|
|
20
|
+
" crosscheck moderator clear\n" +
|
|
21
|
+
` providers: ${CANONICAL_PROVIDERS.join(", ")}\n` +
|
|
22
|
+
" e.g. crosscheck moderator set openai\n" +
|
|
23
|
+
" crosscheck moderator set gemini:gemini-3.8-flash";
|
|
24
|
+
function filePath() {
|
|
25
|
+
return path.join(dataDir(), "moderator.json");
|
|
26
|
+
}
|
|
27
|
+
/** Parse `provider`, `provider:model`, or `provider model`. Provider names
|
|
28
|
+
* go through the same aliases as `crosscheck keys` ("xai" → "grok"). */
|
|
29
|
+
export function parseModeratorArgs(args) {
|
|
30
|
+
const [first, second] = args;
|
|
31
|
+
if (!first)
|
|
32
|
+
return null;
|
|
33
|
+
const i = first.indexOf(":");
|
|
34
|
+
const providerRaw = i < 0 ? first : first.slice(0, i);
|
|
35
|
+
const modelRaw = i < 0 ? (second ?? "") : first.slice(i + 1);
|
|
36
|
+
const provider = resolveProvider(providerRaw);
|
|
37
|
+
if (!provider)
|
|
38
|
+
return null;
|
|
39
|
+
const model = modelRaw.trim();
|
|
40
|
+
return { provider, model: model || null };
|
|
41
|
+
}
|
|
42
|
+
export function formatModerator(c) {
|
|
43
|
+
return c.model ? `${c.provider}:${c.model}` : c.provider;
|
|
44
|
+
}
|
|
45
|
+
export function readLocalModerator() {
|
|
46
|
+
try {
|
|
47
|
+
const v = JSON.parse(readFileSync(filePath(), "utf8"));
|
|
48
|
+
if (typeof v.provider !== "string" || !resolveProvider(v.provider))
|
|
49
|
+
return null;
|
|
50
|
+
return { provider: resolveProvider(v.provider), model: typeof v.model === "string" && v.model ? v.model : null };
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function writeLocalModerator(c) {
|
|
57
|
+
if (c === null) {
|
|
58
|
+
try {
|
|
59
|
+
unlinkSync(filePath());
|
|
60
|
+
}
|
|
61
|
+
catch { /* already clear */ }
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
writeFileSync(filePath(), JSON.stringify(c, null, 2), { mode: 0o600 });
|
|
65
|
+
}
|
|
66
|
+
/** The value `serve` should hand the engine, or undefined to leave it to
|
|
67
|
+
* the engine's own config. A shell CROSSCHECK_MODERATOR always wins. */
|
|
68
|
+
export function moderatorEnvFor(env) {
|
|
69
|
+
const shell = env[MODERATOR_ENV]?.trim();
|
|
70
|
+
if (shell)
|
|
71
|
+
return shell;
|
|
72
|
+
const saved = readLocalModerator();
|
|
73
|
+
return saved ? formatModerator(saved) : undefined;
|
|
74
|
+
}
|
|
75
|
+
function describeModerator() {
|
|
76
|
+
const shell = process.env[MODERATOR_ENV]?.trim();
|
|
77
|
+
const saved = readLocalModerator();
|
|
78
|
+
if (shell) {
|
|
79
|
+
return `Moderator: ${shell} (from ${MODERATOR_ENV} in your shell${saved ? `; your saved choice, ${formatModerator(saved)}, is overridden` : ""})`;
|
|
80
|
+
}
|
|
81
|
+
if (saved)
|
|
82
|
+
return `Moderator: ${formatModerator(saved)} (your choice)`;
|
|
83
|
+
return "Moderator: engine default — crosscheck.config.json's `moderator` if set, else anthropic.";
|
|
84
|
+
}
|
|
85
|
+
/* eslint-disable no-console */
|
|
86
|
+
export async function runModeratorCommand(sub, args) {
|
|
87
|
+
switch (sub) {
|
|
88
|
+
case undefined:
|
|
89
|
+
case "show":
|
|
90
|
+
case "get": {
|
|
91
|
+
console.log(describeModerator());
|
|
92
|
+
console.log("Any provider can moderate. Per call: pass `moderator` (e.g. moderator: \"openai:gpt-6-sol\").");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
case "set": {
|
|
96
|
+
const choice = parseModeratorArgs(args);
|
|
97
|
+
if (!choice) {
|
|
98
|
+
console.error(args[0] ? `Unknown provider: ${args[0]}\n` : "");
|
|
99
|
+
console.error(USAGE);
|
|
100
|
+
process.exitCode = 1;
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
writeLocalModerator(choice);
|
|
104
|
+
console.log(`Moderator set to ${formatModerator(choice)}.`);
|
|
105
|
+
if (!(await getSecret(`key:${choice.provider}`).catch(() => null))) {
|
|
106
|
+
console.log(`Note: there's no ${choice.provider} key on this machine yet — until there is, the first available provider stands in. Add one with \`crosscheck keys add ${choice.provider}\`.`);
|
|
107
|
+
}
|
|
108
|
+
if (process.env[MODERATOR_ENV]?.trim()) {
|
|
109
|
+
console.log(`Note: ${MODERATOR_ENV} is set in this shell and takes precedence.`);
|
|
110
|
+
}
|
|
111
|
+
console.log("Restart Claude Code (or the MCP server) to apply.");
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
case "clear":
|
|
115
|
+
case "unset": {
|
|
116
|
+
writeLocalModerator(null);
|
|
117
|
+
console.log("Moderator choice cleared — back to the engine default.");
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
default:
|
|
121
|
+
console.error(USAGE);
|
|
122
|
+
process.exitCode = 1;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/* eslint-enable no-console */
|
|
126
|
+
//# sourceMappingURL=moderator-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"moderator-cli.js","sourceRoot":"","sources":["../src/moderator-cli.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.71",
|
|
4
4
|
"description": "Crosscheck \u2014 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",
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
"prepublishOnly": "npm run build"
|
|
28
28
|
},
|
|
29
29
|
"dependencies": {
|
|
30
|
-
"crosscheck-mcp": "0.2.
|
|
30
|
+
"crosscheck-mcp": "0.2.32"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
33
|
"@types/node": "^22.10.0",
|