@kaddo/mcp 3.37.1 → 3.38.0

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/index.js +20 -11
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -1916,10 +1916,10 @@ function extractFromMarkdown(md) {
1916
1916
  }
1917
1917
  const m = line.match(/^\s*(?:[-*]|\d+\.)\s+(.+?)\s*$/);
1918
1918
  if (m) {
1919
- const raw = m[1].trim();
1920
- if (!raw || /^_.*_$/.test(raw)) continue;
1921
- const { text: text2, resolution_status } = parseResolution(raw);
1922
- if (text2) out.push({ text: text2, resolution_status });
1919
+ const bullet = m[1].trim();
1920
+ if (!bullet || /^_.*_$/.test(bullet)) continue;
1921
+ const { text: text2, resolution_status } = parseResolution(bullet);
1922
+ if (text2) out.push({ text: text2, resolution_status, line: i + 1, raw: line.trim() });
1923
1923
  }
1924
1924
  }
1925
1925
  return out;
@@ -1959,12 +1959,15 @@ function buildOpenQuestionsReport(dir, now = /* @__PURE__ */ new Date()) {
1959
1959
  questions.push({
1960
1960
  id: `OQ-${String(seq).padStart(3, "0")}`,
1961
1961
  source,
1962
+ sourcePath: source,
1963
+ line: eq.line,
1964
+ raw: eq.raw,
1962
1965
  section: "Open Questions",
1963
1966
  question: eq.text,
1964
1967
  classification,
1965
1968
  resolution_status: eq.resolution_status,
1966
1969
  reason,
1967
- ...eq.resolution_note ? { resolution_note: eq.resolution_note } : {},
1970
+ ...eq.resolution_note ? { resolution_note: eq.resolution_note, note: eq.resolution_note } : {},
1968
1971
  ...classification === "blocking" && eq.resolution_status === "open" ? { suggested_assumption: suggestedAssumption(eq.text) } : {}
1969
1972
  });
1970
1973
  }
@@ -2034,17 +2037,23 @@ function renderOpenQuestionsMarkdown(r) {
2034
2037
  L.push("## Blocking Open Questions", "");
2035
2038
  if (blockingOpen.length === 0) L.push("_None \u2014 nothing blocks readiness._", "");
2036
2039
  for (const q of blockingOpen) {
2037
- L.push(`### ${q.id}`, "");
2038
- L.push(`- Source: \`${q.source}\``);
2039
- L.push(`- Question: ${q.question}`);
2040
+ L.push(`### ${q.question}`, "");
2041
+ L.push(`- Status: ${q.resolution_status}`);
2042
+ L.push(`- Severity: ${q.classification}`);
2043
+ L.push(`- Source: \`${q.sourcePath}:${q.line}\``);
2040
2044
  L.push(`- Reason: ${q.reason}`);
2041
- if (q.suggested_assumption) L.push(`- Suggested assumption: ${q.suggested_assumption}`);
2045
+ L.push("");
2046
+ L.push("Suggested action:", "");
2047
+ L.push("```md");
2048
+ L.push(`- [assumed] ${q.question}`);
2049
+ L.push(` - note: ${q.suggested_assumption ?? "<editable assumption for the MVP>"}`);
2050
+ L.push("```");
2042
2051
  L.push("");
2043
2052
  }
2044
2053
  const renderStatusList = (title, items) => {
2045
2054
  L.push(`## ${title}`, "");
2046
2055
  if (items.length === 0) L.push("_None._");
2047
- for (const q of items) L.push(`- ${q.question}${q.resolution_note ? ` \u2014 _${q.resolution_note}_` : ""}`);
2056
+ for (const q of items) L.push(`- ${q.question} \u2014 \`${q.sourcePath}:${q.line}\`${q.note ? ` \u2014 _${q.note}_` : ""}`);
2048
2057
  L.push("");
2049
2058
  };
2050
2059
  renderStatusList("Resolved", r.resolved_questions);
@@ -2306,7 +2315,7 @@ function resolveNextStep(dir, now = /* @__PURE__ */ new Date()) {
2306
2315
  }
2307
2316
  const oq = buildOpenQuestionsReport(dir, now);
2308
2317
  if (oq.summary.blocking_open > 0) {
2309
- return { id: "questions", phase: "Knowledge Refinement", label: "Resolve, assume or defer the blocking open questions (`kaddo questions`).", command: "kaddo questions", reason: `${oq.summary.blocking_open} blocking open question(s) remain.` };
2318
+ return { id: "questions", phase: "Knowledge Refinement", label: "Run `kaddo questions` to see source locations and resolution guidance, then resolve, assume or defer the blocking open questions.", command: "kaddo questions", reason: `${oq.summary.blocking_open} blocking open question(s) remain.` };
2310
2319
  }
2311
2320
  const roadmap = roadmapSignal(dir);
2312
2321
  if (roadmap !== "has-candidates") {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kaddo/mcp",
3
- "version": "3.37.1",
3
+ "version": "3.38.0",
4
4
  "description": "MCP server for Kaddo project knowledge: read-only resources/tools/prompts plus safe derived generation under .kaddo/.",
5
5
  "license": "MIT",
6
6
  "repository": {