mrvn-cli 0.5.2 → 0.5.4
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 +19 -19
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +16 -16
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +19 -19
- package/dist/marvin.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -6630,13 +6630,13 @@ var error16 = () => {
|
|
|
6630
6630
|
// no unit
|
|
6631
6631
|
};
|
|
6632
6632
|
const typeEntry = (t) => t ? TypeNames[t] : void 0;
|
|
6633
|
-
const
|
|
6633
|
+
const typeLabel4 = (t) => {
|
|
6634
6634
|
const e = typeEntry(t);
|
|
6635
6635
|
if (e)
|
|
6636
6636
|
return e.label;
|
|
6637
6637
|
return t ?? TypeNames.unknown.label;
|
|
6638
6638
|
};
|
|
6639
|
-
const withDefinite = (t) => `\u05D4${
|
|
6639
|
+
const withDefinite = (t) => `\u05D4${typeLabel4(t)}`;
|
|
6640
6640
|
const verbFor = (t) => {
|
|
6641
6641
|
const e = typeEntry(t);
|
|
6642
6642
|
const gender = e?.gender ?? "m";
|
|
@@ -6686,7 +6686,7 @@ var error16 = () => {
|
|
|
6686
6686
|
switch (issue2.code) {
|
|
6687
6687
|
case "invalid_type": {
|
|
6688
6688
|
const expectedKey = issue2.expected;
|
|
6689
|
-
const expected = TypeDictionary[expectedKey ?? ""] ??
|
|
6689
|
+
const expected = TypeDictionary[expectedKey ?? ""] ?? typeLabel4(expectedKey);
|
|
6690
6690
|
const receivedType = parsedType(issue2.input);
|
|
6691
6691
|
const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;
|
|
6692
6692
|
if (/^[A-Z]/.test(issue2.expected)) {
|
|
@@ -15736,7 +15736,7 @@ function collectSprintSummaryData(store, sprintId) {
|
|
|
15736
15736
|
});
|
|
15737
15737
|
const sprintTag = `sprint:${fm.id}`;
|
|
15738
15738
|
const workItemDocs = allDocs.filter(
|
|
15739
|
-
(d) => d.frontmatter.type !== "sprint" && d.frontmatter.type !== "epic" && d.frontmatter.type !== "meeting" && d.frontmatter.tags?.includes(sprintTag)
|
|
15739
|
+
(d) => d.frontmatter.type !== "sprint" && d.frontmatter.type !== "epic" && d.frontmatter.type !== "meeting" && d.frontmatter.type !== "decision" && d.frontmatter.type !== "question" && d.frontmatter.tags?.includes(sprintTag)
|
|
15740
15740
|
);
|
|
15741
15741
|
const primaryDocs = workItemDocs.filter((d) => d.frontmatter.type !== "contribution");
|
|
15742
15742
|
const byStatus = {};
|
|
@@ -16277,7 +16277,7 @@ function formatDate(iso) {
|
|
|
16277
16277
|
if (!iso) return "";
|
|
16278
16278
|
return iso.slice(0, 10);
|
|
16279
16279
|
}
|
|
16280
|
-
function
|
|
16280
|
+
function typeLabel(type) {
|
|
16281
16281
|
return type.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
16282
16282
|
}
|
|
16283
16283
|
function renderMarkdown(md) {
|
|
@@ -18070,7 +18070,7 @@ tr:hover td {
|
|
|
18070
18070
|
|
|
18071
18071
|
// src/web/templates/pages/documents.ts
|
|
18072
18072
|
function documentsPage(data) {
|
|
18073
|
-
const label =
|
|
18073
|
+
const label = typeLabel(data.type);
|
|
18074
18074
|
const statusOptions = data.statuses.map(
|
|
18075
18075
|
(s) => `<option value="${escapeHtml(s)}"${data.filterStatus === s ? " selected" : ""}>${escapeHtml(s)}</option>`
|
|
18076
18076
|
).join("");
|
|
@@ -18144,7 +18144,7 @@ function documentsPage(data) {
|
|
|
18144
18144
|
// src/web/templates/pages/document-detail.ts
|
|
18145
18145
|
function documentDetailPage(doc) {
|
|
18146
18146
|
const fm = doc.frontmatter;
|
|
18147
|
-
const label =
|
|
18147
|
+
const label = typeLabel(fm.type);
|
|
18148
18148
|
const skipKeys = /* @__PURE__ */ new Set(["title", "type"]);
|
|
18149
18149
|
const entries = Object.entries(fm).filter(
|
|
18150
18150
|
([key]) => !skipKeys.has(key) && fm[key] != null
|
|
@@ -18827,7 +18827,7 @@ function poDashboardPage(ctx) {
|
|
|
18827
18827
|
<tr>
|
|
18828
18828
|
<td><a href="/docs/${d.frontmatter.type}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
18829
18829
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
18830
|
-
<td>${escapeHtml(
|
|
18830
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
18831
18831
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
18832
18832
|
<td>${formatDate(d.frontmatter.updated ?? d.frontmatter.created)}</td>
|
|
18833
18833
|
</tr>`).join("")}
|
|
@@ -19335,7 +19335,7 @@ function poDeliveryPage(ctx) {
|
|
|
19335
19335
|
<tr>
|
|
19336
19336
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
19337
19337
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
19338
|
-
<td>${escapeHtml(
|
|
19338
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
19339
19339
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
19340
19340
|
<td>${formatDate(d.frontmatter.updated ?? d.frontmatter.created)}</td>
|
|
19341
19341
|
</tr>`).join("")}
|
|
@@ -20032,7 +20032,7 @@ function dmRisksPage(ctx) {
|
|
|
20032
20032
|
<tr>
|
|
20033
20033
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
20034
20034
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
20035
|
-
<td>${escapeHtml(
|
|
20035
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
20036
20036
|
<td>${d.frontmatter.owner ? escapeHtml(d.frontmatter.owner) : '<span class="text-dim">\u2014</span>'}</td>
|
|
20037
20037
|
<td>${formatDate(d.frontmatter.created)}</td>
|
|
20038
20038
|
</tr>`).join("")}
|
|
@@ -20056,7 +20056,7 @@ function dmRisksPage(ctx) {
|
|
|
20056
20056
|
<tr>
|
|
20057
20057
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
20058
20058
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
20059
|
-
<td>${escapeHtml(
|
|
20059
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
20060
20060
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
20061
20061
|
<td>${formatDate(d.frontmatter.created)}</td>
|
|
20062
20062
|
<td><span class="${ageDays > 30 ? "priority-high" : "priority-medium"}">${ageDays}d</span></td>
|
|
@@ -20628,7 +20628,7 @@ function tlSprintPage(ctx) {
|
|
|
20628
20628
|
<tr>
|
|
20629
20629
|
<td><a href="/docs/${escapeHtml(w.type)}/${escapeHtml(w.id)}">${escapeHtml(w.id)}</a></td>
|
|
20630
20630
|
<td>${escapeHtml(w.title)}</td>
|
|
20631
|
-
<td>${escapeHtml(
|
|
20631
|
+
<td>${escapeHtml(typeLabel(w.type))}</td>
|
|
20632
20632
|
<td>${statusBadge(w.status)}</td>
|
|
20633
20633
|
<td>${w.workFocus ? `<span class="badge badge-subtle">${escapeHtml(w.workFocus)}</span>` : '<span class="text-dim">\u2014</span>'}</td>
|
|
20634
20634
|
</tr>`).join("")}
|
|
@@ -20650,7 +20650,7 @@ function tlSprintPage(ctx) {
|
|
|
20650
20650
|
<tr>
|
|
20651
20651
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
20652
20652
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
20653
|
-
<td>${escapeHtml(
|
|
20653
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
20654
20654
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
20655
20655
|
<td>${formatDate(d.frontmatter.updated ?? d.frontmatter.created)}</td>
|
|
20656
20656
|
</tr>`).join("")}
|
|
@@ -20839,7 +20839,7 @@ function timelinePage(diagrams) {
|
|
|
20839
20839
|
// src/web/templates/pages/board.ts
|
|
20840
20840
|
function boardPage(data, basePath = "/board") {
|
|
20841
20841
|
const typeOptions = data.types.map(
|
|
20842
|
-
(t) => `<option value="${escapeHtml(t)}"${data.type === t ? " selected" : ""}>${escapeHtml(
|
|
20842
|
+
(t) => `<option value="${escapeHtml(t)}"${data.type === t ? " selected" : ""}>${escapeHtml(typeLabel(t))}s</option>`
|
|
20843
20843
|
).join("");
|
|
20844
20844
|
const columns = data.columns.map(
|
|
20845
20845
|
(col) => `
|
|
@@ -20996,7 +20996,7 @@ function upcomingPage(data) {
|
|
|
20996
20996
|
<td><span class="trending-rank">${i + 1}</span></td>
|
|
20997
20997
|
<td><a href="/docs/${escapeHtml(t.type)}/${escapeHtml(t.id)}">${escapeHtml(t.id)}</a></td>
|
|
20998
20998
|
<td>${escapeHtml(t.title)}</td>
|
|
20999
|
-
<td>${escapeHtml(
|
|
20999
|
+
<td>${escapeHtml(typeLabel(t.type))}</td>
|
|
21000
21000
|
<td>${statusBadge(t.status)}</td>
|
|
21001
21001
|
<td><span class="trending-score">${t.score}</span></td>
|
|
21002
21002
|
<td>${t.signals.map((s) => `<span class="signal-tag">${escapeHtml(s.factor)} +${s.points}</span>`).join(" ")}</td>
|
|
@@ -21090,7 +21090,7 @@ function buildPersonaLayoutOpts(persona, activePath, navGroups) {
|
|
|
21090
21090
|
const artifactGroupsHtml = navGroups.map((group) => {
|
|
21091
21091
|
const links = group.types.map((type) => {
|
|
21092
21092
|
const href = `/docs/${type}?persona=${persona}`;
|
|
21093
|
-
return `<a href="${href}" class="${isActive(`/docs/${type}`)}">${
|
|
21093
|
+
return `<a href="${href}" class="${isActive(`/docs/${type}`)}">${typeLabel(type)}s</a>`;
|
|
21094
21094
|
}).join("\n ");
|
|
21095
21095
|
const groupActive = group.types.some(
|
|
21096
21096
|
(type) => isActive(`/docs/${type}`) !== ""
|
|
@@ -28360,8 +28360,8 @@ function executeImportPlan(plan, store, marvinDir, options) {
|
|
|
28360
28360
|
}
|
|
28361
28361
|
function formatPlanSummary(plan) {
|
|
28362
28362
|
const lines = [];
|
|
28363
|
-
const
|
|
28364
|
-
lines.push(`Detected: ${
|
|
28363
|
+
const typeLabel4 = classificationLabel(plan.classification.type);
|
|
28364
|
+
lines.push(`Detected: ${typeLabel4}`);
|
|
28365
28365
|
lines.push(`Source: ${plan.classification.inputPath}`);
|
|
28366
28366
|
lines.push("");
|
|
28367
28367
|
const imports = plan.items.filter((i) => i.action === "import");
|
|
@@ -29663,7 +29663,7 @@ function createProgram() {
|
|
|
29663
29663
|
const program = new Command();
|
|
29664
29664
|
program.name("marvin").description(
|
|
29665
29665
|
"AI-powered product development assistant with Product Owner, Delivery Manager, and Technical Lead personas"
|
|
29666
|
-
).version("0.5.
|
|
29666
|
+
).version("0.5.4");
|
|
29667
29667
|
program.command("init").description("Initialize a new Marvin project in the current directory").action(async () => {
|
|
29668
29668
|
await initCommand();
|
|
29669
29669
|
});
|