@mrrlin-dev/mcp 0.4.142 → 0.4.144

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 +18 -10
  2. package/package.json +1 -1
package/dist/bin.cjs CHANGED
@@ -60671,7 +60671,7 @@ var mcpToolDescriptions = {
60671
60671
  [mcpToolNames.searchWikiPages]: "Search project Wiki pages using ranked full-text search. Returns excerpts suitable for grounding Director decisions.",
60672
60672
  [mcpToolNames.searchKnowledge]: "Search the rendered Mrrlin docs wiki using the lexical RAG index. Returns cited chunks with stable wiki_url fields.",
60673
60673
  [mcpToolNames.updatePlan]: "Update a plan/epic.",
60674
- [mcpToolNames.updateTask]: `Update a task. Honors DB invariants: closed_no_result requires linked Evidence wiki pages. Set directorThreadId here to persist the worker's resumable provider thread handle. specApproved: "approved" requires declaredOutcome (set it in the same call or earlier): an object {sentence, requires, verification} stating what must exist when the task is done. The Director sets it itself when writing the spec. requires holds one kind; verification is "machine" for page, code_change or message, "human_tap" for document, file_set or structured_data.`,
60674
+ [mcpToolNames.updateTask]: `Update a task. Honors DB invariants: closed_no_result requires linked Evidence wiki pages. Set directorThreadId here to persist the worker's resumable provider thread handle. declaredOutcome is an object {sentence, requires, verification} stating what must exist when the task is done; the Director sets it itself when writing the spec. Approving or skipping the spec (specApproved "approved"/"skipped") is the operator's tap on the task page and is refused for the Director: write the spec, set declaredOutcome, mark it ready, then ask the operator to approve. requires holds one kind; verification is "machine" for page, code_change or message, "human_tap" for document, file_set or structured_data.`,
60675
60675
  [mcpToolNames.resetDirectorThread]: "Clear a task's persisted Director execution thread handle so the next execution run starts a fresh provider thread. Records a director_thread_reset task event.",
60676
60676
  [mcpToolNames.archiveTask]: "Archive a task: hides it from default reads, removes it from plan progress and scheduler consideration, cancels its non-terminal execution runs, and closes its open inbox items. Reversible \u2014 the project owner can restore it with unarchive_task. Records an 'archived' task event.",
60677
60677
  [mcpToolNames.unarchiveTask]: "Restore an archived task to its original status and visibility. Owner-only \u2014 refused with NOT_PROJECT_OWNER for any other caller. Does not resurrect the execution runs or inbox items that were cancelled/closed when the task was archived. Records a 'restored' task event.",
@@ -63211,6 +63211,15 @@ function createTurnLock() {
63211
63211
  return { run: run3, activeCount };
63212
63212
  }
63213
63213
 
63214
+ // src/thread-binding.ts
63215
+ function directorThreadEnv(projectSlug) {
63216
+ const slug = projectSlug ?? "";
63217
+ if (!slug || slug.length > 200 || /[\s\p{Cc}]/u.test(slug)) {
63218
+ return { MRRLIN_PROJECT_SLUG: null, MRRLIN_PROJECT_BINDING: "none" };
63219
+ }
63220
+ return { MRRLIN_PROJECT_SLUG: slug, MRRLIN_PROJECT_BINDING: null };
63221
+ }
63222
+
63214
63223
  // src/self-update.ts
63215
63224
  var import_node_child_process21 = require("node:child_process");
63216
63225
  var import_node_crypto16 = require("node:crypto");
@@ -63817,7 +63826,7 @@ Do NOT derail the current task - if the operator has an in-flight question, answ
63817
63826
  }
63818
63827
 
63819
63828
  // src/_generated/version.ts
63820
- var PKG_VERSION = "0.4.142";
63829
+ var PKG_VERSION = "0.4.144";
63821
63830
 
63822
63831
  // src/bridge-allowed-origins.ts
63823
63832
  var DEFAULT_DIRECTOR_BRIDGE_ALLOWED_ORIGINS = [
@@ -68468,7 +68477,13 @@ ${renderTaskStateSection(taskState)}`;
68468
68477
  baseInstructions: useExecutor ? localGitMode ? EXECUTOR_LOCAL_GIT_BASE_INSTRUCTIONS : EXECUTOR_BASE_INSTRUCTIONS : CONSUMER_BASE_INSTRUCTIONS,
68469
68478
  developerInstructions: null,
68470
68479
  ephemeral: null,
68471
- mcpConfig: deps.mcpConfigPath
68480
+ mcpConfig: deps.mcpConfigPath,
68481
+ // Dogfood v2 F-17: the run's Mrrlin MCP server must be bound to its project. Codex does not
68482
+ // pass its process environment to MCP servers, so the binding set on the executor process
68483
+ // (acquireExecutorAgent) never reached them and every project tool refused the run with "no
68484
+ // active workspace bound". The adapter applies this per thread (codexThreadConfig), and a
68485
+ // resumed thread loaded with another binding is refused and restarted fresh.
68486
+ env: directorThreadEnv(projectSlug)
68472
68487
  };
68473
68488
  let resumed = true;
68474
68489
  let acquireResult;
@@ -76920,13 +76935,6 @@ function neutralCheckoutCwd(stateDir) {
76920
76935
  }
76921
76936
  return dir;
76922
76937
  }
76923
- function directorThreadEnv(projectSlug) {
76924
- const slug = projectSlug ?? "";
76925
- if (!slug || slug.length > 200 || /[\s\p{Cc}]/u.test(slug)) {
76926
- return { MRRLIN_PROJECT_SLUG: null, MRRLIN_PROJECT_BINDING: "none" };
76927
- }
76928
- return { MRRLIN_PROJECT_SLUG: slug, MRRLIN_PROJECT_BINDING: null };
76929
- }
76930
76938
  function buildThreadStartParams(msg, config2, desiredModel) {
76931
76939
  const baseInstructions = [
76932
76940
  "You are the Mrrlin Director assistant.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrrlin-dev/mcp",
3
- "version": "0.4.142",
3
+ "version": "0.4.144",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mrrlin-mcp": "dist/bin.cjs"