harness-evolver 4.2.7 → 4.2.9
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/.claude-plugin/plugin.json +1 -1
- package/bin/install.js +32 -14
- package/package.json +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "harness-evolver",
|
|
3
3
|
"description": "LangSmith-native autonomous agent optimization — evolves LLM agent code using multi-agent proposers, LangSmith experiments, and git worktrees",
|
|
4
|
-
"version": "4.2.
|
|
4
|
+
"version": "4.2.9",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Raphael Valdetaro"
|
|
7
7
|
},
|
package/bin/install.js
CHANGED
|
@@ -481,17 +481,40 @@ async function configureOptionalIntegrations(rl, nonInteractive) {
|
|
|
481
481
|
step(c.bold("Optional Integrations"));
|
|
482
482
|
barEmpty();
|
|
483
483
|
|
|
484
|
-
//
|
|
485
|
-
|
|
484
|
+
// Helper: check if an MCP server is configured anywhere
|
|
485
|
+
function hasMcpServer(...names) {
|
|
486
486
|
try {
|
|
487
487
|
for (const p of [path.join(HOME, ".claude", "settings.json"), path.join(HOME, ".claude.json")]) {
|
|
488
|
-
if (fs.existsSync(p))
|
|
489
|
-
|
|
490
|
-
|
|
488
|
+
if (!fs.existsSync(p)) continue;
|
|
489
|
+
const s = JSON.parse(fs.readFileSync(p, "utf8"));
|
|
490
|
+
// Check top-level mcpServers
|
|
491
|
+
if (s.mcpServers) {
|
|
492
|
+
for (const name of names) {
|
|
493
|
+
if (s.mcpServers[name]) return true;
|
|
494
|
+
}
|
|
495
|
+
}
|
|
496
|
+
// Check per-project mcpServers (claude mcp add saves here)
|
|
497
|
+
if (s.projects) {
|
|
498
|
+
for (const proj of Object.values(s.projects)) {
|
|
499
|
+
if (proj && proj.mcpServers) {
|
|
500
|
+
for (const name of names) {
|
|
501
|
+
if (proj.mcpServers[name]) return true;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
}
|
|
491
505
|
}
|
|
492
506
|
}
|
|
493
507
|
} catch {}
|
|
494
508
|
return false;
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
// Context7 MCP — check settings, per-project, AND plugin marketplace
|
|
512
|
+
const hasContext7 = (() => {
|
|
513
|
+
if (hasMcpServer("context7", "Context7")) return true;
|
|
514
|
+
// Check plugin marketplace install
|
|
515
|
+
const pluginMcp = path.join(HOME, ".claude", "plugins", "marketplaces", "claude-plugins-official", "external_plugins", "context7", ".mcp.json");
|
|
516
|
+
if (fs.existsSync(pluginMcp)) return true;
|
|
517
|
+
return false;
|
|
495
518
|
})();
|
|
496
519
|
|
|
497
520
|
if (hasContext7) {
|
|
@@ -513,16 +536,11 @@ async function configureOptionalIntegrations(rl, nonInteractive) {
|
|
|
513
536
|
|
|
514
537
|
barEmpty();
|
|
515
538
|
|
|
516
|
-
// LangChain Docs MCP
|
|
539
|
+
// LangChain Docs MCP — check settings, per-project, AND plugin marketplace
|
|
517
540
|
const hasLcDocs = (() => {
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
const s = JSON.parse(fs.readFileSync(p, "utf8"));
|
|
522
|
-
if (s.mcpServers && (s.mcpServers["docs-langchain"] || s.mcpServers["LangChain Docs"])) return true;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
} catch {}
|
|
541
|
+
if (hasMcpServer("docs-langchain", "LangChain Docs")) return true;
|
|
542
|
+
const pluginMcp = path.join(HOME, ".claude", "plugins", "marketplaces", "claude-plugins-official", "external_plugins", "docs-langchain", ".mcp.json");
|
|
543
|
+
if (fs.existsSync(pluginMcp)) return true;
|
|
526
544
|
return false;
|
|
527
545
|
})();
|
|
528
546
|
|