gnosys 5.8.4 → 5.8.6
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/cli.js +60 -13
- package/dist/cli.js.map +1 -1
- package/dist/lib/setup/summary.d.ts.map +1 -1
- package/dist/lib/setup/summary.js +76 -1
- package/dist/lib/setup/summary.js.map +1 -1
- package/dist/lib/setup.d.ts +5 -0
- package/dist/lib/setup.d.ts.map +1 -1
- package/dist/lib/setup.js +77 -27
- package/dist/lib/setup.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAmB,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,
|
|
1
|
+
{"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../../src/lib/setup/summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAmB,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEpF,OAAO,EAIL,KAAK,YAAY,EAElB,MAAM,cAAc,CAAC;AAgFtB,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAC;IACZ,mDAAmD;IACnD,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,QAAQ,EAAE,CAAC,GAAG,EAAE,YAAY,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,6EAA6E;IAC7E,IAAI,EAAE,CAAC,EAAE,EAAE,iBAAiB,EAAE,GAAG,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1F;AAED;;;GAGG;AACH,wBAAgB,aAAa,IAAI,cAAc,EAAE,CAqGhD;AAqBD,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,EAAE,CAAC,EAAE,iBAAiB,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAuElF"}
|
|
@@ -12,14 +12,79 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import { createInterface } from "readline/promises";
|
|
14
14
|
import { stdin, stdout } from "process";
|
|
15
|
-
import { loadConfig, resolveTaskModel, } from "../config.js";
|
|
15
|
+
import { loadConfig, resolveTaskModel, updateConfig, } from "../config.js";
|
|
16
16
|
import { GnosysDB } from "../db.js";
|
|
17
17
|
// ─── ANSI ───────────────────────────────────────────────────────────────────
|
|
18
18
|
const BOLD = "\x1b[1m";
|
|
19
19
|
const DIM = "\x1b[2m";
|
|
20
20
|
const GREEN = "\x1b[32m";
|
|
21
|
+
const YELLOW = "\x1b[33m";
|
|
21
22
|
const RESET = "\x1b[0m";
|
|
22
23
|
const CHECK = `${GREEN}✓${RESET}`;
|
|
24
|
+
// ─── Provider-revert repair (v5.8.5) ────────────────────────────────────────
|
|
25
|
+
//
|
|
26
|
+
// Detect the "gnosys.json says anthropic but no Anthropic key exists AND
|
|
27
|
+
// another provider has a key" pattern. This is the fingerprint of the
|
|
28
|
+
// pre-v5.8.4 updateConfig bug that silently seeded `defaultProvider:
|
|
29
|
+
// anthropic` into ~/.gnosys/gnosys.json whenever any setup section was
|
|
30
|
+
// written to a fresh store. Offer one-keystroke repair.
|
|
31
|
+
const PROVIDERS_WITH_KEYS = ["anthropic", "openai", "xai", "groq", "mistral"];
|
|
32
|
+
async function maybeOfferProviderRepair(cfg, projectDir, rl) {
|
|
33
|
+
if (cfg.llm.defaultProvider !== "anthropic")
|
|
34
|
+
return;
|
|
35
|
+
const { getApiKeyForProvider } = await import("../setup.js");
|
|
36
|
+
const anthropicKey = await getApiKeyForProvider("anthropic");
|
|
37
|
+
if (anthropicKey)
|
|
38
|
+
return; // user might really want Anthropic and just hasn't fully set up yet
|
|
39
|
+
const candidates = [];
|
|
40
|
+
for (const p of PROVIDERS_WITH_KEYS) {
|
|
41
|
+
if (p === "anthropic")
|
|
42
|
+
continue;
|
|
43
|
+
const key = await getApiKeyForProvider(p);
|
|
44
|
+
if (key)
|
|
45
|
+
candidates.push(p);
|
|
46
|
+
}
|
|
47
|
+
if (candidates.length === 0)
|
|
48
|
+
return; // no other provider has a key either
|
|
49
|
+
// Pick the strongest candidate. Order in PROVIDERS_WITH_KEYS is the priority.
|
|
50
|
+
const suggestion = candidates[0];
|
|
51
|
+
console.log("");
|
|
52
|
+
console.log(`${YELLOW}⚠${RESET} Your gnosys.json says ${BOLD}defaultProvider: anthropic${RESET},`);
|
|
53
|
+
console.log(` but no Anthropic API key is configured (env or keychain).`);
|
|
54
|
+
console.log(` Found a key for ${BOLD}${suggestion}${RESET}${candidates.length > 1 ? ` (also: ${candidates.slice(1).join(", ")})` : ""}.`);
|
|
55
|
+
console.log("");
|
|
56
|
+
console.log(` This usually means a pre-v5.8.4 setup wizard seeded anthropic by mistake.`);
|
|
57
|
+
console.log("");
|
|
58
|
+
const answer = (await rl.question(`Switch the default to ${BOLD}${suggestion}${RESET}? [Y/n] `)).trim().toLowerCase();
|
|
59
|
+
if (answer === "n" || answer === "no") {
|
|
60
|
+
console.log(`${DIM}Left as anthropic. Run option 1 below to change explicitly.${RESET}`);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
try {
|
|
64
|
+
// Write to the store that actually holds the current config so the
|
|
65
|
+
// override lands at the right scope.
|
|
66
|
+
const { getGnosysHome } = await import("../paths.js");
|
|
67
|
+
const fs = await import("fs/promises");
|
|
68
|
+
const path = await import("path");
|
|
69
|
+
// Prefer project-level if it has a gnosys.json, else global.
|
|
70
|
+
const projectStore = path.join(projectDir, ".gnosys");
|
|
71
|
+
let storePath = getGnosysHome();
|
|
72
|
+
try {
|
|
73
|
+
const stat = await fs.stat(path.join(projectStore, "gnosys.json"));
|
|
74
|
+
if (stat.isFile())
|
|
75
|
+
storePath = projectStore;
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
// fall back to global
|
|
79
|
+
}
|
|
80
|
+
await updateConfig(storePath, { llm: { defaultProvider: suggestion } });
|
|
81
|
+
console.log(`${CHECK} Switched default to ${BOLD}${suggestion}${RESET}.`);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
console.log(`${YELLOW}⚠${RESET} Failed to repair: ${err instanceof Error ? err.message : String(err)}`);
|
|
85
|
+
console.log(`${DIM}Run 'gnosys setup models' to change manually.${RESET}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
23
88
|
/**
|
|
24
89
|
* Build the section list. Each `edit` calls into existing wizards via
|
|
25
90
|
* dynamic import — keeps this file decoupled from the legacy setup.ts.
|
|
@@ -154,11 +219,21 @@ export async function runSummaryWizard(opts = {}) {
|
|
|
154
219
|
const sections = buildSections();
|
|
155
220
|
const updated = new Set();
|
|
156
221
|
let anyChange = false;
|
|
222
|
+
let revertCheckDone = false;
|
|
157
223
|
try {
|
|
158
224
|
while (true) {
|
|
159
225
|
// Reload config each iteration so the displayed values reflect any
|
|
160
226
|
// section edit that just happened.
|
|
161
227
|
const cfg = await loadConfig(projectDir);
|
|
228
|
+
// v5.8.5: detect the "config says anthropic but no Anthropic key is
|
|
229
|
+
// configured anywhere AND another provider has a key" pattern. This
|
|
230
|
+
// is the fingerprint of the pre-v5.8.4 updateConfig bug that silently
|
|
231
|
+
// seeded `defaultProvider: anthropic` into ~/.gnosys/gnosys.json when
|
|
232
|
+
// any section was written to a fresh store. Offer one-keystroke repair.
|
|
233
|
+
if (!revertCheckDone) {
|
|
234
|
+
revertCheckDone = true;
|
|
235
|
+
await maybeOfferProviderRepair(cfg, projectDir, rl);
|
|
236
|
+
}
|
|
162
237
|
console.log("");
|
|
163
238
|
console.log(`${BOLD}┌─────────────────────────────────────────────┐${RESET}`);
|
|
164
239
|
console.log(`${BOLD}│ Gnosys Settings │${RESET}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/lib/setup/summary.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,eAAe,EAAkC,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACxC,OAAO,EACL,UAAU,EACV,gBAAgB,
|
|
1
|
+
{"version":3,"file":"summary.js","sourceRoot":"","sources":["../../../src/lib/setup/summary.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/setup.d.ts
CHANGED
|
@@ -135,5 +135,10 @@ interface ChatSetupOpts {
|
|
|
135
135
|
rl?: ReadlineInterface;
|
|
136
136
|
}
|
|
137
137
|
export declare function runChatSetup(opts?: ChatSetupOpts): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Best-effort lookup of the API key for a provider. Used by the dream setup
|
|
140
|
+
* wizard to power the validation step. Mirrors the resolveApiKey precedence.
|
|
141
|
+
*/
|
|
142
|
+
export declare function getApiKeyForProvider(provider: string): Promise<string>;
|
|
138
143
|
export {};
|
|
139
144
|
//# sourceMappingURL=setup.d.ts.map
|
package/dist/lib/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAmB,SAAS,IAAI,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAiDpF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,qDAAqD;AACrD,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,OAAO,CAAC;IACvB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,8EAA8E;IAC9E,aAAa,CAAC,EAAE;QACd,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,SAAS,CAAC,EAAE,WAAW,CAAC;QACxB,MAAM,CAAC,EAAE,WAAW,CAAC;QACrB,aAAa,CAAC,EAAE,WAAW,CAAC;QAC5B,KAAK,CAAC,EAAE,WAAW,CAAC;KACrB,CAAC;IACF,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAID,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAkCtD,CAAC;AA0BF;;;GAGG;AACH,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC,CA8J/E;AAED;;GAEG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAM1E;AA+CD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAUjF;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAoC9E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAY1E;AAuED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CA0FtE;AAoBD;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/lib/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/setup.js
CHANGED
|
@@ -592,40 +592,90 @@ export async function setupIDE(ide, projectDir) {
|
|
|
592
592
|
return { success: true, message: "Cursor MCP config updated (.cursor/mcp.json)" };
|
|
593
593
|
}
|
|
594
594
|
case "codex": {
|
|
595
|
-
// v5.8.
|
|
596
|
-
//
|
|
597
|
-
//
|
|
598
|
-
//
|
|
595
|
+
// v5.8.5: register via `codex mcp add` (the real Codex CLI registration
|
|
596
|
+
// path), the same pattern Claude Code uses. Two earlier attempts at a
|
|
597
|
+
// hand-written TOML block — `[gnosys] command/args` (pre-v5.8.4) and
|
|
598
|
+
// `[mcp.gnosys] type/command` (v5.8.4) — both turned out not to be
|
|
599
|
+
// recognized by current Codex CLI: `codex mcp list` wouldn't show
|
|
600
|
+
// gnosys, so agents couldn't call the tools.
|
|
599
601
|
//
|
|
600
|
-
//
|
|
601
|
-
//
|
|
602
|
-
|
|
603
|
-
//
|
|
604
|
-
|
|
605
|
-
const codexDir = path.join(projectDir, ".codex");
|
|
606
|
-
const configPath = path.join(codexDir, "config.toml");
|
|
607
|
-
await fs.mkdir(codexDir, { recursive: true });
|
|
608
|
-
let content = "";
|
|
602
|
+
// We also migrate away from those legacy blocks in
|
|
603
|
+
// `~/.codex/config.toml` so users on stale configs get cleaned up.
|
|
604
|
+
const os = await import("os");
|
|
605
|
+
// 1. Migrate (strip) legacy hand-written blocks in ~/.codex/config.toml.
|
|
606
|
+
const userCodexConfig = path.join(os.homedir(), ".codex", "config.toml");
|
|
609
607
|
try {
|
|
610
|
-
|
|
608
|
+
let existing = await fs.readFile(userCodexConfig, "utf-8");
|
|
609
|
+
const before = existing;
|
|
610
|
+
// Old shape (pre-v5.8.4): [gnosys] command/args
|
|
611
|
+
existing = existing.replace(/\n?\[gnosys\][^\[]*?command\s*=\s*"gnosys"[^\[]*?args\s*=\s*\[[^\]]*\]\s*\n?/, "\n");
|
|
612
|
+
// v5.8.4 shape: [mcp.gnosys] type/command
|
|
613
|
+
existing = existing.replace(/\n?\[mcp\.gnosys\][^\[]*?type\s*=\s*"local"[^\[]*?command\s*=\s*\[[^\]]*\]\s*\n?/, "\n");
|
|
614
|
+
if (existing !== before) {
|
|
615
|
+
existing = existing.replace(/\n{3,}/g, "\n\n");
|
|
616
|
+
await fs.writeFile(userCodexConfig, existing, "utf-8");
|
|
617
|
+
}
|
|
611
618
|
}
|
|
612
619
|
catch {
|
|
613
|
-
//
|
|
620
|
+
// No user-level config.toml to clean — fine.
|
|
621
|
+
}
|
|
622
|
+
// 2. Find the absolute path to `gnosys` so Codex can launch it even
|
|
623
|
+
// if shell PATH differs from what it has at run time.
|
|
624
|
+
let gnosysCmd = "gnosys";
|
|
625
|
+
try {
|
|
626
|
+
gnosysCmd = execSync("command -v gnosys", { encoding: "utf-8" }).trim() || "gnosys";
|
|
614
627
|
}
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
if (legacyBlock.test(content)) {
|
|
618
|
-
content = content.replace(legacyBlock, "\n").replace(/\n{3,}/g, "\n\n");
|
|
628
|
+
catch {
|
|
629
|
+
// Fall back to `gnosys` on PATH if `command -v` fails.
|
|
619
630
|
}
|
|
620
|
-
//
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
631
|
+
// 3. Check whether gnosys is already registered. If yes and the
|
|
632
|
+
// command matches, leave it alone (idempotent). If it differs,
|
|
633
|
+
// remove and re-add.
|
|
634
|
+
let alreadyCorrect = false;
|
|
635
|
+
try {
|
|
636
|
+
const existing = execSync("codex mcp get gnosys 2>/dev/null", {
|
|
637
|
+
encoding: "utf-8",
|
|
638
|
+
});
|
|
639
|
+
if (existing && existing.includes(gnosysCmd) && existing.includes("serve")) {
|
|
640
|
+
alreadyCorrect = true;
|
|
624
641
|
}
|
|
625
|
-
|
|
642
|
+
else if (existing) {
|
|
643
|
+
// Different command — remove so we can re-add with the right one.
|
|
644
|
+
try {
|
|
645
|
+
execSync("codex mcp remove gnosys", { stdio: "pipe" });
|
|
646
|
+
}
|
|
647
|
+
catch {
|
|
648
|
+
// Non-fatal — `mcp add` below will overwrite or fail loudly.
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
catch {
|
|
653
|
+
// `codex mcp get` returns non-zero when the server isn't registered —
|
|
654
|
+
// that's the common case on first install; proceed to add.
|
|
655
|
+
}
|
|
656
|
+
if (alreadyCorrect) {
|
|
657
|
+
return {
|
|
658
|
+
success: true,
|
|
659
|
+
message: "Codex MCP server already registered. Start a new Codex session for tool changes to take effect.",
|
|
660
|
+
};
|
|
661
|
+
}
|
|
662
|
+
// 4. Register via the canonical Codex CLI command.
|
|
663
|
+
try {
|
|
664
|
+
execSync(`codex mcp add gnosys -- ${gnosysCmd} serve`, { stdio: "pipe" });
|
|
665
|
+
}
|
|
666
|
+
catch (err) {
|
|
667
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
668
|
+
// Common failure: codex CLI not installed. Don't fail the whole
|
|
669
|
+
// setup flow; just report so the user can install codex first.
|
|
670
|
+
return {
|
|
671
|
+
success: false,
|
|
672
|
+
message: `Could not run \`codex mcp add\` — is the Codex CLI installed and on PATH? ${msg}`,
|
|
673
|
+
};
|
|
626
674
|
}
|
|
627
|
-
|
|
628
|
-
|
|
675
|
+
return {
|
|
676
|
+
success: true,
|
|
677
|
+
message: "Codex MCP server registered. Start a new Codex session for the Gnosys tools to appear.",
|
|
678
|
+
};
|
|
629
679
|
}
|
|
630
680
|
case "gemini-cli": {
|
|
631
681
|
// Gemini CLI reads MCP servers from ~/.gemini/settings.json (user-level)
|
|
@@ -2276,7 +2326,7 @@ function pickStorePath(projectDir) {
|
|
|
2276
2326
|
* Best-effort lookup of the API key for a provider. Used by the dream setup
|
|
2277
2327
|
* wizard to power the validation step. Mirrors the resolveApiKey precedence.
|
|
2278
2328
|
*/
|
|
2279
|
-
async function getApiKeyForProvider(provider) {
|
|
2329
|
+
export async function getApiKeyForProvider(provider) {
|
|
2280
2330
|
if (provider === "ollama" || provider === "lmstudio" || provider === "skip")
|
|
2281
2331
|
return "";
|
|
2282
2332
|
const envVarName = provider === "custom" ? "GNOSYS_CUSTOM_KEY" : `GNOSYS_${provider.toUpperCase()}_KEY`;
|