@mrrlin-dev/mcp 0.3.34 → 0.3.36

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 -7
  2. package/package.json +5 -5
package/dist/bin.cjs CHANGED
@@ -20810,10 +20810,11 @@ function renderBlock(block) {
20810
20810
  var KNOWN_MRRLIN_ENV_KEYS = /* @__PURE__ */ new Set(["MRRLIN_STAGING", "MRRLIN_API_BASE_URL", "MRRLIN_API_ALLOW_REMOTE"]);
20811
20811
  function commandArgsTimeoutEqual(candidate, expected) {
20812
20812
  if (candidate.command !== expected.command) return false;
20813
- if (!Array.isArray(candidate.args)) return false;
20814
- if (candidate.args.length !== expected.args.length) return false;
20813
+ const actualArgs = candidate.args === void 0 && expected.args.length === 0 ? [] : Array.isArray(candidate.args) ? candidate.args : null;
20814
+ if (actualArgs === null) return false;
20815
+ if (actualArgs.length !== expected.args.length) return false;
20815
20816
  for (let index = 0; index < expected.args.length; index += 1) {
20816
- if (candidate.args[index] !== expected.args[index]) return false;
20817
+ if (actualArgs[index] !== expected.args[index]) return false;
20817
20818
  }
20818
20819
  if (candidate.startup_timeout_sec !== void 0 && candidate.startup_timeout_sec !== expected.startup_timeout_sec) {
20819
20820
  return false;
@@ -36885,6 +36886,7 @@ var mrrlinTaskCreateSchema = external_exports.object({
36885
36886
  impact: mrrlinTaskImpactSchema.default("medium"),
36886
36887
  notes: external_exports.string().nullable().optional(),
36887
36888
  operatorSeedRequest: external_exports.string().max(8e3).nullable().optional(),
36889
+ parentTaskId: external_exports.string().nullable().optional(),
36888
36890
  planId: mrrlinPlanIdSchema.nullable().optional(),
36889
36891
  specWikiPageId: mrrlinWikiPageIdSchema.nullable().optional(),
36890
36892
  tags: mrrlinTaskTagsSchema.optional(),
@@ -38918,7 +38920,7 @@ function startCodexProbe(deps = {}) {
38918
38920
  }
38919
38921
 
38920
38922
  // src/_generated/version.ts
38921
- var PKG_VERSION = "0.3.34";
38923
+ var PKG_VERSION = "0.3.36";
38922
38924
 
38923
38925
  // src/api-base-url.ts
38924
38926
  var DEFAULT_API_BASE_URL = "http://127.0.0.1:8787";
@@ -39785,13 +39787,22 @@ function buildSpecGateDeps(args) {
39785
39787
  const taskId = await resolveGatedTaskId(client, projectSlug, { id: page.id, taskId: page.taskId ?? null });
39786
39788
  if (taskId === null) {
39787
39789
  const project = await client.getProject(projectSlug);
39788
- return { taskId: null, seed: null, title: null, domain: project.defaultDomain };
39790
+ return { taskId: null, seed: null, title: null, domain: project.defaultDomain, notes: null };
39789
39791
  }
39790
39792
  const task = await client.getTask(projectSlug, taskId);
39791
39793
  if (!task) {
39792
39794
  throw new Error(`gated task ${projectSlug}/${taskId} not found for spec ${specPageId} \u2014 cannot gate`);
39793
39795
  }
39794
- return { taskId, seed: task.operatorSeedRequest ?? null, title: task.title ?? "", domain: task.domain };
39796
+ const notes = task.notes ?? null;
39797
+ const rawSeed = task.operatorSeedRequest ?? null;
39798
+ let resolvedSeed = rawSeed;
39799
+ if (rawSeed === null || rawSeed.trim() === "") {
39800
+ const parsed = notes ? parseAcceptanceCriteria(notes) : null;
39801
+ if (parsed !== null && parsed.items.length > 0) {
39802
+ resolvedSeed = "(No operator statement on record for this task. Derived from the task's own notes \u2014 the following acceptance criteria were extracted verbatim:)\n\n" + parsed.items.map((c) => `- ${c}`).join("\n");
39803
+ }
39804
+ }
39805
+ return { taskId, seed: resolvedSeed, title: task.title ?? "", domain: task.domain, notes };
39795
39806
  })();
39796
39807
  }
39797
39808
  return intentPromise;
@@ -54473,7 +54484,7 @@ var mcpToolDescriptions = {
54473
54484
  [mcpToolNames.appendTaskEvent]: "Append an operator note to a task's activity timeline.",
54474
54485
  [mcpToolNames.createWikiPage]: "Create a markdown Wiki page.",
54475
54486
  [mcpToolNames.deleteTaskDependency]: "Delete a blocked-by relationship.",
54476
- [mcpToolNames.createTask]: "Create a new task in a project. Always starts as status='todo' with a blank assignee.",
54487
+ [mcpToolNames.createTask]: "Create a new task in a project. Always starts as status='todo' with a blank assignee. Pass parentTaskId when spawning a follow-up task to continue work from an existing task \u2014 its operator_seed_request is inherited automatically if you don't supply your own.",
54477
54488
  [mcpToolNames.getProject]: "Fetch a single project summary by slug.",
54478
54489
  [mcpToolNames.getProjectSnapshot]: "Fetch the full project snapshot: GitHub binding, tasks, plans, and wiki pages.",
54479
54490
  [mcpToolNames.getTask]: "Fetch a single task by project slug and task id.",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrrlin-dev/mcp",
3
- "version": "0.3.34",
3
+ "version": "0.3.36",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mrrlin-mcp": "dist/bin.cjs"
@@ -21,12 +21,12 @@
21
21
  "@types/ws": "^8.18.1",
22
22
  "esbuild": "^0.24.0",
23
23
  "tsx": "^4.22.3",
24
- "@mrrlin/schemas": "0.0.0",
24
+ "@mrrlin/client": "0.0.0",
25
25
  "@mrrlin/director-e2e": "0.0.0",
26
+ "@mrrlin/schemas": "0.0.0",
26
27
  "@mrrlin/wiki": "0.0.0",
27
- "@mrrlin/codex-client": "0.0.0",
28
- "@mrrlin/client": "0.0.0",
29
- "@mrrlin/tsconfig": "0.0.0"
28
+ "@mrrlin/tsconfig": "0.0.0",
29
+ "@mrrlin/codex-client": "0.0.0"
30
30
  },
31
31
  "dependencies": {
32
32
  "@iarna/toml": "^2.2.5",