@mrrlin-dev/mcp 0.2.0 → 0.2.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/bin.cjs +38 -1
  2. package/package.json +3 -3
package/dist/bin.cjs CHANGED
@@ -34055,6 +34055,11 @@ var mrrlinTaskIdSchema = external_exports.string().regex(/^GT-\d+$/);
34055
34055
  var mrrlinPlanIdSchema = external_exports.string().regex(/^PL-\d+$/);
34056
34056
  var mrrlinWikiPageIdSchema = external_exports.string().regex(/^WK-\d+$/);
34057
34057
  var mrrlinWikiPagePathSchema = external_exports.string().regex(/^\/[a-z0-9-]+\/[a-z0-9-]+$/);
34058
+ var PROJECT_CONSTITUTION_PAGE = {
34059
+ folder: "Memory",
34060
+ path: "/memory/constitution",
34061
+ title: "Project Constitution"
34062
+ };
34058
34063
  var mrrlinExecutionRunIdSchema = external_exports.string().regex(/^ER-[A-Za-z0-9-]+$/);
34059
34064
  var mrrlinExecutionArtifactIdSchema = external_exports.string().regex(/^EA-[A-Za-z0-9-]+$/);
34060
34065
  var mrrlinProjectSlugSchema = external_exports.string().min(1);
@@ -41451,12 +41456,40 @@ function buildThreadStartParams(msg, config2, desiredModel) {
41451
41456
  "- When the operator answers in chat, write the answer into the Specs/{taskId}",
41452
41457
  ' Clarifications section, then `decide_inbox_item` the question with `verdict="acknowledged"`',
41453
41458
  " and `answer` = the resolved answer.",
41459
+ "- Project-level ambiguity (scope or direction not yet tied to a specific task) MAY be banked",
41460
+ " the same way but with `taskId` OMITTED. There is no spec page yet, so incorporate the answer",
41461
+ " into your current scoping/conversation. Reserve taskless questions for genuine project-level",
41462
+ " scope \u2014 task-affecting questions still set `taskId`.",
41463
+ "- Binding taskless answers to a task: WHEN you create a task out of project-level scoping,",
41464
+ " call `list_inbox_items` (kind=question), fold any relevant `acknowledged` TASKLESS answer",
41465
+ " into the new task's Specs/{id} Clarifications, and `reject` (with a reason) any taskless",
41466
+ " question the new task makes moot \u2014 so taskless answers never linger unconsumed.",
41454
41467
  "- When resuming a task, call `list_inbox_items` (kind=question) and incorporate any",
41455
41468
  " `acknowledged` answer not yet reflected in the spec's Clarifications section.",
41456
41469
  "- If a question becomes moot (task cancelled, superseded, or no longer relevant), close it",
41457
41470
  ' with `decide_inbox_item` `verdict="rejected"` + a `reason`; never leave it pending.',
41458
41471
  "- Questions are a chat-only mechanism. Do not create question items from non-interactive",
41459
- " runs; use the handoff contract above when there is no live operator."
41472
+ " runs; use the handoff contract above when there is no live operator.",
41473
+ "",
41474
+ "Onboarding contract \u2014 seed project context when there is none:",
41475
+ `- A project is un-onboarded when it has no \`${PROJECT_CONSTITUTION_PAGE.path}\` wiki page.`,
41476
+ " Run onboarding when the operator initiates it (the overview onboarding CTA seeds a kickoff,",
41477
+ " or they explicitly ask to set up the project), OR when a request clearly needs missing",
41478
+ " project context \u2014 in which case OFFER to onboard once. Do NOT turn every turn on an",
41479
+ " un-onboarded project into an interrogation.",
41480
+ "- Gather context by asking a focused set of high-value questions: what the project/product",
41481
+ " is; primary goal/outcome; domain or URL; target audience; key constraints; how success is",
41482
+ " measured; current state. Ask ~5-7 \u2014 gather, don't interrogate.",
41483
+ `- Write the answers into a wiki page at path \`${PROJECT_CONSTITUTION_PAGE.path}\` (folder`,
41484
+ ` \`${PROJECT_CONSTITUTION_PAGE.folder}\`, title \`${PROJECT_CONSTITUTION_PAGE.title}\`) via`,
41485
+ " `create_wiki_page` if it does not exist yet, else `update_wiki_page` \u2014 never create a",
41486
+ " duplicate. Seed it once you have a meaningful answer or two, then keep extending it.",
41487
+ "- These onboarding questions are ordinary TASKLESS `question` inbox items: follow the",
41488
+ " clarifying-question contract above \u2014 when answered, write it into the constitution page AND",
41489
+ ' close the item with `decide_inbox_item` `verdict="acknowledged"` + `answer`; `reject` (with',
41490
+ " a reason) any that become moot. Never leave stale pending onboarding questions.",
41491
+ "- v1 captures the domain as prose in the constitution page (no structured domain field, no",
41492
+ " web research) \u2014 just record what the operator tells you."
41460
41493
  ].join("\n");
41461
41494
  return {
41462
41495
  // No project checkout for this turn → run in a dedicated EMPTY scratch dir, never the bridge's own
@@ -48455,6 +48488,10 @@ function installService(deps) {
48455
48488
  deps.log("Could not resolve absolute paths for node/codex/mrrlin-mcp on PATH. Install them or fix PATH.");
48456
48489
  return { ok: false };
48457
48490
  }
48491
+ if (!deps.which("pm2")) {
48492
+ deps.log("pm2 not found on PATH. Install it first: npm i -g pm2");
48493
+ return { ok: false };
48494
+ }
48458
48495
  const resolvedBins = bins.filter((b) => b !== null);
48459
48496
  const pathEnv = Array.from(new Set(resolvedBins.map((b) => import_node_path17.default.dirname(b)))).join(":");
48460
48497
  const text = renderEcosystemConfig({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mrrlin-dev/mcp",
3
- "version": "0.2.0",
3
+ "version": "0.2.1",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "mrrlin-mcp": "dist/bin.cjs"
@@ -20,10 +20,10 @@
20
20
  "esbuild": "^0.24.0",
21
21
  "tsx": "^4.22.3",
22
22
  "@mrrlin/client": "0.0.0",
23
+ "@mrrlin/codex-client": "0.0.0",
23
24
  "@mrrlin/director-e2e": "0.0.0",
24
- "@mrrlin/tsconfig": "0.0.0",
25
25
  "@mrrlin/schemas": "0.0.0",
26
- "@mrrlin/codex-client": "0.0.0",
26
+ "@mrrlin/tsconfig": "0.0.0",
27
27
  "@mrrlin/wiki": "0.0.0"
28
28
  },
29
29
  "dependencies": {