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 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 typeLabel5 = (t) => {
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${typeLabel5(t)}`;
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 ?? ""] ?? typeLabel5(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 typeLabel2(type) {
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 = typeLabel2(data.type);
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 = typeLabel2(fm.type);
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(typeLabel2(d.frontmatter.type))}</td>
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(typeLabel2(d.frontmatter.type))}</td>
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(typeLabel2(d.frontmatter.type))}</td>
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(typeLabel2(d.frontmatter.type))}</td>
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(typeLabel2(w.type))}</td>
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(typeLabel2(d.frontmatter.type))}</td>
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(typeLabel2(t))}s</option>`
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(typeLabel2(t.type))}</td>
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}`)}">${typeLabel2(type)}s</a>`;
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 typeLabel5 = classificationLabel(plan.classification.type);
28364
- lines.push(`Detected: ${typeLabel5}`);
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.2");
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
  });