@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.
- package/dist/index.js +20 -11
- 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
|
|
1920
|
-
if (!
|
|
1921
|
-
const { text: text2, resolution_status } = parseResolution(
|
|
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.
|
|
2038
|
-
L.push(`-
|
|
2039
|
-
L.push(`-
|
|
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
|
-
|
|
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}
|
|
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: "
|
|
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