@mrrlin-dev/mcp 0.4.150 → 0.4.152

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 +27 -12
  2. package/package.json +1 -1
package/dist/bin.cjs CHANGED
@@ -48622,14 +48622,16 @@ function renderCriteriaBlock(criteria) {
48622
48622
  return criteria.map((c, i) => `${i + 1}. [ ] ${c}`).join("\n");
48623
48623
  }
48624
48624
  async function buildDeliverableGateDeps(args) {
48625
- const { client, projectSlug, deliverablePageId, attemptOutcome, codexExecutable, runId, seat, stateDir } = args;
48625
+ const { client, projectSlug, deliverablePageId, attemptOutcome, codexExecutable, runId, seat, providerId, stateDir } = args;
48626
48626
  const consensusProvider = process.env.MRRLIN_CONSENSUS_PROVIDER?.trim().toLowerCase() || void 0;
48627
- const execProvider = consensusProvider ?? seat?.id;
48627
+ const execProvider = consensusProvider ?? providerId ?? seat?.id;
48628
+ const compatibleSeat = !consensusProvider && (!providerId || providerId === seat?.id) ? seat : void 0;
48629
+ const arbiterModel = compatibleSeat?.model ?? compatibleSeat?.models?.strong;
48628
48630
  const recordCost = gateCallRecorder({
48629
48631
  stateDir,
48630
48632
  projectSlug,
48631
48633
  gate: "deliverable",
48632
- provider: consensusProvider ?? seat?.id ?? null
48634
+ provider: execProvider ?? null
48633
48635
  });
48634
48636
  const rounds = Number(process.env["MRRLIN_CONSENSUS_ROUNDS"] ?? 5);
48635
48637
  const timeoutMs = Number(process.env["MRRLIN_CONSENSUS_HEAD_TIMEOUT_MS"] ?? 15e4);
@@ -48720,12 +48722,12 @@ ${persona}`,
48720
48722
  codexExecutable,
48721
48723
  // model-tier-planning-and-arbiter task 2.5 (D1): the arbiter is pinned to the seat's
48722
48724
  // default model.
48723
- model: consensusProvider ? void 0 : seat?.model ?? seat?.models?.strong
48725
+ model: arbiterModel
48724
48726
  },
48725
48727
  void 0,
48726
48728
  execProvider
48727
48729
  );
48728
- recordCost("arbiter", "arbiter", seat?.model ?? seat?.models?.strong ?? null, startedAt, result);
48730
+ recordCost("arbiter", "arbiter", arbiterModel ?? null, startedAt, result);
48729
48731
  return result;
48730
48732
  },
48731
48733
  async runReviser(artifact, accepted) {
@@ -63960,7 +63962,7 @@ Do NOT derail the current task - if the operator has an in-flight question, answ
63960
63962
  }
63961
63963
 
63962
63964
  // src/_generated/version.ts
63963
- var PKG_VERSION = "0.4.150";
63965
+ var PKG_VERSION = "0.4.152";
63964
63966
 
63965
63967
  // src/bridge-allowed-origins.ts
63966
63968
  var DEFAULT_DIRECTOR_BRIDGE_ALLOWED_ORIGINS = [
@@ -68420,7 +68422,18 @@ async function driveRun(deps, projectSlug, runId) {
68420
68422
  const isPureCode = runDomains.length === 1 && runDomains[0] === "code";
68421
68423
  if (!isPureCode) {
68422
68424
  const runDomain = runDomains[0] ?? "code";
68423
- await driveNonCodeRun(deps, projectSlug, runId, leaseId, task, runDomain, rawProject);
68425
+ let providerId = claimed.agentSeat;
68426
+ if (providerId == null) {
68427
+ const seat = await mintResolvedSeat(resolveProvider(process.env, getSelectedProvider()));
68428
+ void notifyPinRetirementIfRetired(seat);
68429
+ providerId = seat.id;
68430
+ await deps.client.updateExecutionRun(projectSlug, runId, { agentSeat: providerId }).catch((err) => {
68431
+ console.warn(
68432
+ JSON.stringify({ event: "agent_seat_persist_failed", projectSlug, runId, error: String(err) })
68433
+ );
68434
+ });
68435
+ }
68436
+ await driveNonCodeRun(deps, projectSlug, runId, leaseId, task, runDomain, providerId, rawProject);
68424
68437
  return;
68425
68438
  }
68426
68439
  const compactEnabled = (process.env.MRRLIN_MCP_COMPACT_DISABLE ?? "").trim() !== "1";
@@ -69416,7 +69429,7 @@ async function writeNegativeResultEvidencePage(client, projectSlug, task, input)
69416
69429
  }
69417
69430
  throw new Error(`could not allocate negative-result evidence page for ${task.id} (last conflict: ${lastConflict})`);
69418
69431
  }
69419
- async function driveNonCodeRun(deps, projectSlug, runId, leaseId, task, domain2, project) {
69432
+ async function driveNonCodeRun(deps, projectSlug, runId, leaseId, task, domain2, providerId, project) {
69420
69433
  let rawProject = project;
69421
69434
  if (!rawProject) {
69422
69435
  try {
@@ -69496,7 +69509,7 @@ async function driveNonCodeRun(deps, projectSlug, runId, leaseId, task, domain2,
69496
69509
  );
69497
69510
  return;
69498
69511
  }
69499
- const runExec = deps.runDeliverableExec ?? runAgentExec;
69512
+ const runExec = deps.runDeliverableExec ?? ((input, provider) => runAgentExec(input, void 0, provider));
69500
69513
  const touchTimer = setInterval(() => {
69501
69514
  void deps.client.touchExecutionRun(projectSlug, runId, leaseId).catch(() => {
69502
69515
  });
@@ -69512,7 +69525,7 @@ async function driveNonCodeRun(deps, projectSlug, runId, leaseId, task, domain2,
69512
69525
  sandbox: "read-only",
69513
69526
  codexExecutable: deps.codexExecutable,
69514
69527
  mcpConfig: deps.mcpConfigPath
69515
- });
69528
+ }, providerId);
69516
69529
  if (!exec.ok) {
69517
69530
  await failRun(deps, projectSlug, task, runId, leaseId, `deliverable_authoring_failed: ${exec.error}`);
69518
69531
  return;
@@ -69572,6 +69585,7 @@ async function driveNonCodeRun(deps, projectSlug, runId, leaseId, task, domain2,
69572
69585
  taskId: task.id,
69573
69586
  runId,
69574
69587
  deliverablePageId: pageId,
69588
+ providerId,
69575
69589
  attemptOutcome: parsedResult.outcome
69576
69590
  });
69577
69591
  } catch (error51) {
@@ -79762,12 +79776,13 @@ async function startDirectorBridge() {
79762
79776
  // ADR 0020 Phase 2: run the deliverable-gate over a non-code run's authored Deliverables page.
79763
79777
  // Builds the gate deps (resolving domain/heads/criteria from the page's task + spec) and runs the
79764
79778
  // same convergence loop the spec-gate uses. runId is threaded for verdict provenance (decision 10).
79765
- // Authoring uses the defaults (runAgentExec + loadPersona) — no extra wiring needed for those.
79766
- runDeliverableGate: async ({ projectSlug, runId, deliverablePageId, attemptOutcome }) => {
79779
+ // Authoring uses the consumer’s explicit provider adapter; review inherits the same run pin.
79780
+ runDeliverableGate: async ({ projectSlug, runId, deliverablePageId, attemptOutcome, providerId }) => {
79767
79781
  const gateDeps = await buildDeliverableGateDeps({
79768
79782
  client,
79769
79783
  projectSlug,
79770
79784
  deliverablePageId,
79785
+ providerId,
79771
79786
  attemptOutcome,
79772
79787
  cwd: config2.codexCwd ?? process.cwd(),
79773
79788
  codexExecutable: config2.codexExecutable,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrrlin-dev/mcp",
3
- "version": "0.4.150",
3
+ "version": "0.4.152",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mrrlin-mcp": "dist/bin.cjs"