@mrrlin-dev/mcp 0.3.7 → 0.3.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.
Files changed (2) hide show
  1. package/dist/bin.cjs +50 -10
  2. package/package.json +4 -4
package/dist/bin.cjs CHANGED
@@ -20724,14 +20724,28 @@ async function installBrowser(opts = {}) {
20724
20724
  }
20725
20725
 
20726
20726
  // src/install-codex.ts
20727
+ function deriveServeEnvFromProcessEnv(env) {
20728
+ const out = {};
20729
+ const apiUrl = env.MRRLIN_API_BASE_URL?.trim();
20730
+ if (apiUrl) {
20731
+ out.MRRLIN_API_BASE_URL = apiUrl;
20732
+ if (env.MRRLIN_API_ALLOW_REMOTE === "1") out.MRRLIN_API_ALLOW_REMOTE = "1";
20733
+ } else if (env.MRRLIN_STAGING === "1") {
20734
+ out.MRRLIN_STAGING = "1";
20735
+ }
20736
+ return Object.keys(out).length > 0 ? out : void 0;
20737
+ }
20727
20738
  function resolveCodexHome(options) {
20728
20739
  if (options.codexHome) return options.codexHome;
20729
20740
  if (process.env.CODEX_HOME) return process.env.CODEX_HOME;
20730
20741
  return import_node_path2.default.join(options.homeDir ?? import_node_os2.default.homedir(), ".codex");
20731
20742
  }
20732
- function mrrlinTable(binPath, distribution) {
20733
- if (distribution === "npm") return { command: "mrrlin-mcp", args: ["serve"], startup_timeout_sec: 30 };
20734
- return { command: "node", args: [binPath, "serve"], startup_timeout_sec: 30 };
20743
+ function mrrlinTable(binPath, distribution, serveEnv) {
20744
+ const base = distribution === "npm" ? { command: "mrrlin-mcp", args: ["serve"] } : { command: "node", args: [binPath, "serve"] };
20745
+ if (serveEnv && Object.keys(serveEnv).length > 0) {
20746
+ return { ...base, startup_timeout_sec: 30, env: serveEnv };
20747
+ }
20748
+ return { ...base, startup_timeout_sec: 30 };
20735
20749
  }
20736
20750
  function browserTable(binPath, distribution, homeDir) {
20737
20751
  const base = distribution === "npm" ? { command: "mrrlin-mcp", args: ["browser-serve"] } : { command: "node", args: [binPath, "browser-serve"] };
@@ -20744,7 +20758,11 @@ function blockRegex(id) {
20744
20758
  function managedBlocks(options, distribution) {
20745
20759
  const homeDir = options.homeDir ?? import_node_os2.default.homedir();
20746
20760
  return [
20747
- { id: "mrrlin", expected: mrrlinTable(options.binPath, distribution), blockRe: blockRegex("mrrlin") },
20761
+ {
20762
+ id: "mrrlin",
20763
+ expected: mrrlinTable(options.binPath, distribution, options.serveEnv),
20764
+ blockRe: blockRegex("mrrlin")
20765
+ },
20748
20766
  {
20749
20767
  id: "mrrlin-browser",
20750
20768
  expected: browserTable(options.binPath, distribution, homeDir),
@@ -36261,6 +36279,7 @@ var openApiOperationIds = {
36261
36279
  listArtifactFiles: "listArtifactFiles",
36262
36280
  getOperatorSettings: "getOperatorSettings",
36263
36281
  updateOperatorSettings: "updateOperatorSettings",
36282
+ getConsensusConfig: "getConsensusConfig",
36264
36283
  updateWikiPageCas: "updateWikiPageCas",
36265
36284
  promoteSpecReadyCas: "promoteSpecReadyCas",
36266
36285
  recordSpecConsensusReview: "recordSpecConsensusReview",
@@ -36301,6 +36320,8 @@ var mrrlinOperatorSettingsUpdateSchema = external_exports.object({ consensusEnab
36301
36320
  message: "OperatorSettingsUpdate requires at least one field"
36302
36321
  });
36303
36322
  var operatorSettingsResponseSchema = external_exports.object({ data: mrrlinOperatorSettingsSchema });
36323
+ var mrrlinConsensusConfigSchema = external_exports.object({ consensusEnabled: external_exports.boolean() });
36324
+ var consensusConfigResponseSchema = external_exports.object({ data: mrrlinConsensusConfigSchema });
36304
36325
 
36305
36326
  // ../../packages/schemas/dist/specConsensusReview.js
36306
36327
  var mrrlinSpecConsensusReviewSchema = external_exports.object({
@@ -38127,6 +38148,10 @@ function createMrrlinClient(config2) {
38127
38148
  });
38128
38149
  return operatorSettingsResponseSchema.parse(body).data;
38129
38150
  },
38151
+ async getConsensusConfig(projectSlug) {
38152
+ const body = await request(`${projectPath(projectSlug)}/consensus-config`);
38153
+ return consensusConfigResponseSchema.parse(body).data;
38154
+ },
38130
38155
  async recordSpecConsensusReview(projectSlug, pageId, input) {
38131
38156
  const body = await request(`${projectPath(projectSlug)}/wiki/${encodeURIComponent(pageId)}/consensus-review`, {
38132
38157
  body: JSON.stringify(input),
@@ -38489,7 +38514,7 @@ Do NOT derail the current task \u2014 if the operator has an in-flight question,
38489
38514
  }
38490
38515
 
38491
38516
  // src/_generated/version.ts
38492
- var PKG_VERSION = "0.3.7";
38517
+ var PKG_VERSION = "0.3.9";
38493
38518
 
38494
38519
  // src/api-base-url.ts
38495
38520
  var DEFAULT_API_BASE_URL = "http://127.0.0.1:8787";
@@ -50046,8 +50071,8 @@ function buildSpecGateDeps(args) {
50046
50071
  rounds,
50047
50072
  maxHeadCalls,
50048
50073
  async consensusEnabled() {
50049
- const settings = await client.getOperatorSettings();
50050
- return settings.consensusEnabled;
50074
+ const config2 = await client.getConsensusConfig(projectSlug);
50075
+ return config2.consensusEnabled;
50051
50076
  },
50052
50077
  async readSpec() {
50053
50078
  const page = await client.getWikiPage(projectSlug, specPageId);
@@ -50171,7 +50196,7 @@ ${artifact}`,
50171
50196
  };
50172
50197
  }
50173
50198
  function buildCodeGateDeps(args) {
50174
- const { client, baseRef, cwd, codexExecutable, extraHeads } = args;
50199
+ const { client, projectSlug, baseRef, cwd, codexExecutable, extraHeads } = args;
50175
50200
  const rounds = Number(process.env["MRRLIN_CONSENSUS_ROUNDS"] ?? 3);
50176
50201
  const heads = ["code-reviewer", ...extraHeads ?? []];
50177
50202
  const maxHeadCalls = rounds * (heads.length + 1);
@@ -50183,8 +50208,8 @@ function buildCodeGateDeps(args) {
50183
50208
  maxHeadCalls,
50184
50209
  heads,
50185
50210
  async consensusEnabled() {
50186
- const settings = await client.getOperatorSettings();
50187
- return settings.consensusEnabled;
50211
+ const config2 = await client.getConsensusConfig(projectSlug);
50212
+ return config2.consensusEnabled;
50188
50213
  },
50189
50214
  changedFiles() {
50190
50215
  return changedFiles(gitArgs);
@@ -52464,6 +52489,19 @@ Usage:
52464
52489
  checkouts register the local dist/bin.cjs;
52465
52490
  published npm installs register
52466
52491
  \`mrrlin-mcp serve\`.
52492
+ Bakes API-target env vars into the block as an
52493
+ inline env table so \`serve\` boots even when the
52494
+ local 127.0.0.1:8787 is not running. Setup guide:
52495
+ MRRLIN_STAGING=1 mrrlin-mcp install-codex
52496
+ is the canonical path (staging alias + remote-
52497
+ allow gate in one flag). For a non-staging remote,
52498
+ pass BOTH the URL AND the allow gate:
52499
+ MRRLIN_API_BASE_URL=https://... \\
52500
+ MRRLIN_API_ALLOW_REMOTE=1 mrrlin-mcp install-codex
52501
+ Without an allow gate, \`serve\` still refuses any
52502
+ non-loopback URL (see \`mrrlin-mcp serve\` above).
52503
+ URL and MRRLIN_STAGING are mutually exclusive at
52504
+ bake time \u2014 URL wins, mirrors serve's resolver.
52467
52505
  --force replaces an existing conflicting block.
52468
52506
  --force-prompts overwrites prompt files that
52469
52507
  already exist with different content. WITHOUT it,
@@ -52616,10 +52654,12 @@ async function main() {
52616
52654
  );
52617
52655
  process.exit(2);
52618
52656
  }
52657
+ const serveEnv = deriveServeEnvFromProcessEnv(process.env);
52619
52658
  const result = await installCodex({
52620
52659
  binPath,
52621
52660
  force,
52622
52661
  forcePrompts,
52662
+ serveEnv,
52623
52663
  prompts: [{ name: "report-issue", content: readReportIssuePrompt() }]
52624
52664
  });
52625
52665
  process.stderr.write(`[mrrlin-mcp install-codex] ${result.action} ${result.configPath}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrrlin-dev/mcp",
3
- "version": "0.3.7",
3
+ "version": "0.3.9",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mrrlin-mcp": "dist/bin.cjs"
@@ -23,11 +23,11 @@
23
23
  "esbuild": "^0.24.0",
24
24
  "tsx": "^4.22.3",
25
25
  "@mrrlin/client": "0.0.0",
26
- "@mrrlin/wiki": "0.0.0",
26
+ "@mrrlin/codex-client": "0.0.0",
27
+ "@mrrlin/director-e2e": "0.0.0",
27
28
  "@mrrlin/schemas": "0.0.0",
28
29
  "@mrrlin/tsconfig": "0.0.0",
29
- "@mrrlin/director-e2e": "0.0.0",
30
- "@mrrlin/codex-client": "0.0.0"
30
+ "@mrrlin/wiki": "0.0.0"
31
31
  },
32
32
  "dependencies": {
33
33
  "@iarna/toml": "^2.2.5",