@brainbase-labs/cli 0.8.0 → 0.8.1

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.
Files changed (2) hide show
  1. package/dist/index.js +71 -8
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -29449,7 +29449,7 @@ function padStart(s, n) {
29449
29449
  // package.json
29450
29450
  var package_default = {
29451
29451
  name: "@brainbase-labs/cli",
29452
- version: "0.8.0",
29452
+ version: "0.8.1",
29453
29453
  description: "Pack, share, and install agent templates across harnesses (Claude Code, Codex, ...).",
29454
29454
  type: "module",
29455
29455
  bin: {
@@ -34555,6 +34555,69 @@ ${block}
34555
34555
  fs8.writeFileSync(instructionsFile, next);
34556
34556
  }
34557
34557
 
34558
+ // src/core/mcp-proxy.ts
34559
+ var DEFAULT_MCP_PROXY_BASE = "https://brainbase-mcp-proxy.onrender.com";
34560
+ var THREAD_ID_TEMPLATE = "${BRAINBASE_THREAD_ID}";
34561
+ var PROXY_AUTH_HEADER = "Bearer ${BRAINBASE_TOKEN}";
34562
+ function mcpProxyBaseUrl() {
34563
+ const envOverride = process.env.BRAINBASE_MCP_PROXY_URL;
34564
+ if (envOverride) {
34565
+ const stripped = envOverride.replace(/\/+$/, "");
34566
+ if (stripped)
34567
+ return stripped;
34568
+ }
34569
+ return DEFAULT_MCP_PROXY_BASE;
34570
+ }
34571
+ function proxifyMcpPayload(payload) {
34572
+ if (!payload)
34573
+ return payload;
34574
+ if (!shouldProxy(payload))
34575
+ return payload;
34576
+ const base = mcpProxyBaseUrl();
34577
+ const upstreamUrl = payload.url;
34578
+ const existingHeaders = payload.headers ?? {};
34579
+ return {
34580
+ ...payload,
34581
+ url: `${base}/t/${THREAD_ID_TEMPLATE}/${upstreamUrl}`,
34582
+ headers: { ...existingHeaders, Authorization: PROXY_AUTH_HEADER }
34583
+ };
34584
+ }
34585
+ function shouldProxy(payload) {
34586
+ const url = payload.url;
34587
+ if (typeof url !== "string" || url.length === 0)
34588
+ return false;
34589
+ if (typeof payload.command === "string" && payload.command.length > 0)
34590
+ return false;
34591
+ const headers = payload.headers;
34592
+ if (headers && typeof headers === "object" && Object.keys(headers).length > 0) {
34593
+ return false;
34594
+ }
34595
+ if (url.startsWith(mcpProxyBaseUrl()))
34596
+ return false;
34597
+ if (url.includes(`/t/${THREAD_ID_TEMPLATE}/`))
34598
+ return false;
34599
+ return true;
34600
+ }
34601
+ function resolveMcpEnvTemplates(payload, env = process.env) {
34602
+ if (!payload)
34603
+ return payload;
34604
+ const sub = (s) => s.replace(/\$\{([A-Z0-9_]+)\}/g, (literal, name) => {
34605
+ const value = env[name];
34606
+ return value === undefined || value === "" ? literal : value;
34607
+ });
34608
+ const out = { ...payload };
34609
+ if (typeof out.url === "string")
34610
+ out.url = sub(out.url);
34611
+ if (out.headers && typeof out.headers === "object") {
34612
+ const resolved = {};
34613
+ for (const [k2, v2] of Object.entries(out.headers)) {
34614
+ resolved[k2] = typeof v2 === "string" ? sub(v2) : v2;
34615
+ }
34616
+ out.headers = resolved;
34617
+ }
34618
+ return out;
34619
+ }
34620
+
34558
34621
  // src/harnesses/claude-code/install.ts
34559
34622
  var MARK_START = (name) => `<!-- brainbase:start name=${name} -->`;
34560
34623
  var MARK_END = (name) => `<!-- brainbase:end name=${name} -->`;
@@ -34687,7 +34750,7 @@ async function installMcp(comp, opts, ctx) {
34687
34750
  }
34688
34751
  }
34689
34752
  }
34690
- setMcpServer(mcpStore, comp.slug, normalizeMcpPayload(payload));
34753
+ setMcpServer(mcpStore, comp.slug, normalizeMcpPayload(resolveMcpEnvTemplates(payload)));
34691
34754
  return {
34692
34755
  type: "mcp",
34693
34756
  slug: comp.slug,
@@ -36531,7 +36594,7 @@ async function installMcp2(comp, opts, ctx) {
36531
36594
  }
36532
36595
  }
36533
36596
  }
36534
- setMcpServer2(config, comp.slug, payload);
36597
+ setMcpServer2(config, comp.slug, resolveMcpEnvTemplates(payload));
36535
36598
  return {
36536
36599
  type: "mcp",
36537
36600
  slug: comp.slug,
@@ -37290,7 +37353,7 @@ async function installMcp3(comp, opts, ctx) {
37290
37353
  }
37291
37354
  }
37292
37355
  }
37293
- setMcpServer3(mcpStore, comp.slug, normalizeMcpPayload2(payload));
37356
+ setMcpServer3(mcpStore, comp.slug, normalizeMcpPayload2(resolveMcpEnvTemplates(payload)));
37294
37357
  return {
37295
37358
  type: "mcp",
37296
37359
  slug: comp.slug,
@@ -48057,7 +48120,7 @@ function buildTemplateComponents(manifest, rootDir) {
48057
48120
  rootDir: path31.join(rootDir, c2.path),
48058
48121
  description: c2.description,
48059
48122
  target: c2.target,
48060
- payload: c2.meta?.mcp,
48123
+ payload: proxifyMcpPayload(c2.meta?.mcp),
48061
48124
  meta: c2.meta,
48062
48125
  checksum: c2.checksum,
48063
48126
  source: c2.source
@@ -52001,7 +52064,7 @@ async function runSync(cwd2, args) {
52001
52064
  rootDir: path45.join(stageRoot, c2.type, c2.slug),
52002
52065
  description: c2.description,
52003
52066
  meta: c2.meta,
52004
- payload: c2.meta?.mcp,
52067
+ payload: proxifyMcpPayload(c2.meta?.mcp),
52005
52068
  checksum: c2.hash
52006
52069
  }));
52007
52070
  const hasUserOrchestrationMcp = toInstall.some((c2) => c2.type === "mcp" && c2.slug === ORCHESTRATION_MCP_SLUG);
@@ -52688,7 +52751,7 @@ async function runAgentPull(cwd2, args) {
52688
52751
  rootDir: path48.join(stageRoot, c2.type, c2.slug),
52689
52752
  description: c2.description,
52690
52753
  meta: c2.meta,
52691
- payload: c2.meta?.mcp,
52754
+ payload: proxifyMcpPayload(c2.meta?.mcp),
52692
52755
  checksum: c2.hash,
52693
52756
  source: skillSourceFromMeta(c2)
52694
52757
  }));
@@ -54722,7 +54785,7 @@ async function installAgentFresh(input) {
54722
54785
  rootDir: path53.join(stageRoot, c2.type, c2.slug),
54723
54786
  description: c2.description,
54724
54787
  meta: c2.meta,
54725
- payload: c2.meta?.mcp,
54788
+ payload: proxifyMcpPayload(c2.meta?.mcp),
54726
54789
  checksum: c2.hash
54727
54790
  }));
54728
54791
  if (needOrchestrationMcpInstall) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainbase-labs/cli",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Pack, share, and install agent templates across harnesses (Claude Code, Codex, ...).",
5
5
  "type": "module",
6
6
  "bin": {