@kaddo/cli 3.40.0 → 3.40.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.
- package/README.md +1 -0
- package/dist/index.js +8 -3
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -538,6 +538,7 @@ create --from roadmap → owners → guard → explain`.
|
|
|
538
538
|
| v3.39 | Existing capability discovery: state-aware `capabilities.md` (pre-ai/legacy = evidence-backed Capability Inventory + Gaps + Roadmap Candidate Signals; legacy adds criticality/change-risk/modernization); capability-agent discovers with evidence, roadmap-agent treats capabilities as primary source |
|
|
539
539
|
| v3.39.1 | Domain-oriented capability inventory: pre-ai/legacy `capabilities.md` groups capabilities under `## Capability Domains` (functional domains, not technical folders); gaps/candidates name their `Domain`; roadmap-agent reads it as a domain map; work-item-agent recommends `related_domain` + `related_capability` |
|
|
540
540
|
| v3.40 | ADR materialization: `kaddo adr` (alias `decisions`) detects decision candidates + ADRs and hands off the ADR files to create; `tech_decisions` status (none/candidates/draft-adrs/accepted-adrs) surfaced in `explain`/`context`/`understand`; adr-writing skill formalized |
|
|
541
|
+
| v3.40.1 | ADR slug cleanup + MCP: suggested ADR filenames strip list/heading prefixes (no `ADR-001-1-…`) and normalize acronyms; new read-only MCP resource `kaddo://tech-decisions` sharing `buildTechDecisions` with `kaddo adr` |
|
|
541
542
|
|
|
542
543
|
**Optional modules (installed with `kaddo add`):**
|
|
543
544
|
|
package/dist/index.js
CHANGED
|
@@ -8125,16 +8125,21 @@ function buildReadinessReport(dir, now = /* @__PURE__ */ new Date()) {
|
|
|
8125
8125
|
// src/core/decisions.ts
|
|
8126
8126
|
var CANDIDATES_PATH = "knowledge/tech/decision-candidates.md";
|
|
8127
8127
|
var DECISIONS_DIR = "knowledge/tech/decisions";
|
|
8128
|
+
function cleanCandidateTitle(title) {
|
|
8129
|
+
return title.replace(/^\s*#{1,6}\s+/, "").replace(/^\s*[-*]\s+/, "").replace(/^\s*\(?\d+\)?[.):]\s+/, "").trim();
|
|
8130
|
+
}
|
|
8128
8131
|
function slugify2(s) {
|
|
8129
|
-
return s.toLowerCase().normalize("NFD").replace(/[̀-ͯ]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "").slice(0,
|
|
8132
|
+
return cleanCandidateTitle(s).toLowerCase().normalize("NFD").replace(/[̀-ͯ]/g, "").replace(/[^a-z0-9]+/g, "-").replace(/-+/g, "-").replace(/^-+|-+$/g, "").slice(0, 70).replace(/-+$/g, "");
|
|
8130
8133
|
}
|
|
8131
8134
|
function parseDecisionCandidates(md) {
|
|
8132
8135
|
const out = [];
|
|
8133
8136
|
for (const line of md.split(/\r?\n/)) {
|
|
8134
8137
|
const m = line.match(/^##\s+(.+?)\s*$/);
|
|
8135
8138
|
if (m) {
|
|
8136
|
-
const
|
|
8137
|
-
if (
|
|
8139
|
+
const raw = m[1].trim();
|
|
8140
|
+
if (!raw || /^_.*_$/.test(raw)) continue;
|
|
8141
|
+
const t = cleanCandidateTitle(raw);
|
|
8142
|
+
if (t) out.push(t);
|
|
8138
8143
|
}
|
|
8139
8144
|
}
|
|
8140
8145
|
return out;
|