mrvn-cli 0.5.2 → 0.5.3
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 +18 -18
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +15 -15
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +18 -18
- package/dist/marvin.js.map +1 -1
- package/package.json +1 -1
package/dist/marvin.js
CHANGED
|
@@ -6188,13 +6188,13 @@ var error16 = () => {
|
|
|
6188
6188
|
// no unit
|
|
6189
6189
|
};
|
|
6190
6190
|
const typeEntry = (t) => t ? TypeNames[t] : void 0;
|
|
6191
|
-
const
|
|
6191
|
+
const typeLabel4 = (t) => {
|
|
6192
6192
|
const e = typeEntry(t);
|
|
6193
6193
|
if (e)
|
|
6194
6194
|
return e.label;
|
|
6195
6195
|
return t ?? TypeNames.unknown.label;
|
|
6196
6196
|
};
|
|
6197
|
-
const withDefinite = (t) => `\u05D4${
|
|
6197
|
+
const withDefinite = (t) => `\u05D4${typeLabel4(t)}`;
|
|
6198
6198
|
const verbFor = (t) => {
|
|
6199
6199
|
const e = typeEntry(t);
|
|
6200
6200
|
const gender = e?.gender ?? "m";
|
|
@@ -6244,7 +6244,7 @@ var error16 = () => {
|
|
|
6244
6244
|
switch (issue2.code) {
|
|
6245
6245
|
case "invalid_type": {
|
|
6246
6246
|
const expectedKey = issue2.expected;
|
|
6247
|
-
const expected = TypeDictionary[expectedKey ?? ""] ??
|
|
6247
|
+
const expected = TypeDictionary[expectedKey ?? ""] ?? typeLabel4(expectedKey);
|
|
6248
6248
|
const receivedType = parsedType(issue2.input);
|
|
6249
6249
|
const received = TypeDictionary[receivedType] ?? TypeNames[receivedType]?.label ?? receivedType;
|
|
6250
6250
|
if (/^[A-Z]/.test(issue2.expected)) {
|
|
@@ -19340,7 +19340,7 @@ function formatDate(iso) {
|
|
|
19340
19340
|
if (!iso) return "";
|
|
19341
19341
|
return iso.slice(0, 10);
|
|
19342
19342
|
}
|
|
19343
|
-
function
|
|
19343
|
+
function typeLabel(type) {
|
|
19344
19344
|
return type.replace(/-/g, " ").replace(/\b\w/g, (c) => c.toUpperCase());
|
|
19345
19345
|
}
|
|
19346
19346
|
function renderMarkdown(md) {
|
|
@@ -21133,7 +21133,7 @@ tr:hover td {
|
|
|
21133
21133
|
|
|
21134
21134
|
// src/web/templates/pages/documents.ts
|
|
21135
21135
|
function documentsPage(data) {
|
|
21136
|
-
const label =
|
|
21136
|
+
const label = typeLabel(data.type);
|
|
21137
21137
|
const statusOptions = data.statuses.map(
|
|
21138
21138
|
(s) => `<option value="${escapeHtml(s)}"${data.filterStatus === s ? " selected" : ""}>${escapeHtml(s)}</option>`
|
|
21139
21139
|
).join("");
|
|
@@ -21207,7 +21207,7 @@ function documentsPage(data) {
|
|
|
21207
21207
|
// src/web/templates/pages/document-detail.ts
|
|
21208
21208
|
function documentDetailPage(doc) {
|
|
21209
21209
|
const fm = doc.frontmatter;
|
|
21210
|
-
const label =
|
|
21210
|
+
const label = typeLabel(fm.type);
|
|
21211
21211
|
const skipKeys = /* @__PURE__ */ new Set(["title", "type"]);
|
|
21212
21212
|
const entries = Object.entries(fm).filter(
|
|
21213
21213
|
([key]) => !skipKeys.has(key) && fm[key] != null
|
|
@@ -21768,7 +21768,7 @@ function poDashboardPage(ctx) {
|
|
|
21768
21768
|
<tr>
|
|
21769
21769
|
<td><a href="/docs/${d.frontmatter.type}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
21770
21770
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
21771
|
-
<td>${escapeHtml(
|
|
21771
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
21772
21772
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
21773
21773
|
<td>${formatDate(d.frontmatter.updated ?? d.frontmatter.created)}</td>
|
|
21774
21774
|
</tr>`).join("")}
|
|
@@ -22276,7 +22276,7 @@ function poDeliveryPage(ctx) {
|
|
|
22276
22276
|
<tr>
|
|
22277
22277
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
22278
22278
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
22279
|
-
<td>${escapeHtml(
|
|
22279
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
22280
22280
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
22281
22281
|
<td>${formatDate(d.frontmatter.updated ?? d.frontmatter.created)}</td>
|
|
22282
22282
|
</tr>`).join("")}
|
|
@@ -22973,7 +22973,7 @@ function dmRisksPage(ctx) {
|
|
|
22973
22973
|
<tr>
|
|
22974
22974
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
22975
22975
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
22976
|
-
<td>${escapeHtml(
|
|
22976
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
22977
22977
|
<td>${d.frontmatter.owner ? escapeHtml(d.frontmatter.owner) : '<span class="text-dim">\u2014</span>'}</td>
|
|
22978
22978
|
<td>${formatDate(d.frontmatter.created)}</td>
|
|
22979
22979
|
</tr>`).join("")}
|
|
@@ -22997,7 +22997,7 @@ function dmRisksPage(ctx) {
|
|
|
22997
22997
|
<tr>
|
|
22998
22998
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
22999
22999
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
23000
|
-
<td>${escapeHtml(
|
|
23000
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
23001
23001
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
23002
23002
|
<td>${formatDate(d.frontmatter.created)}</td>
|
|
23003
23003
|
<td><span class="${ageDays > 30 ? "priority-high" : "priority-medium"}">${ageDays}d</span></td>
|
|
@@ -23569,7 +23569,7 @@ function tlSprintPage(ctx) {
|
|
|
23569
23569
|
<tr>
|
|
23570
23570
|
<td><a href="/docs/${escapeHtml(w.type)}/${escapeHtml(w.id)}">${escapeHtml(w.id)}</a></td>
|
|
23571
23571
|
<td>${escapeHtml(w.title)}</td>
|
|
23572
|
-
<td>${escapeHtml(
|
|
23572
|
+
<td>${escapeHtml(typeLabel(w.type))}</td>
|
|
23573
23573
|
<td>${statusBadge(w.status)}</td>
|
|
23574
23574
|
<td>${w.workFocus ? `<span class="badge badge-subtle">${escapeHtml(w.workFocus)}</span>` : '<span class="text-dim">\u2014</span>'}</td>
|
|
23575
23575
|
</tr>`).join("")}
|
|
@@ -23591,7 +23591,7 @@ function tlSprintPage(ctx) {
|
|
|
23591
23591
|
<tr>
|
|
23592
23592
|
<td><a href="/docs/${escapeHtml(d.frontmatter.type)}/${escapeHtml(d.frontmatter.id)}">${escapeHtml(d.frontmatter.id)}</a></td>
|
|
23593
23593
|
<td>${escapeHtml(d.frontmatter.title)}</td>
|
|
23594
|
-
<td>${escapeHtml(
|
|
23594
|
+
<td>${escapeHtml(typeLabel(d.frontmatter.type))}</td>
|
|
23595
23595
|
<td>${statusBadge(d.frontmatter.status)}</td>
|
|
23596
23596
|
<td>${formatDate(d.frontmatter.updated ?? d.frontmatter.created)}</td>
|
|
23597
23597
|
</tr>`).join("")}
|
|
@@ -23780,7 +23780,7 @@ function timelinePage(diagrams) {
|
|
|
23780
23780
|
// src/web/templates/pages/board.ts
|
|
23781
23781
|
function boardPage(data, basePath = "/board") {
|
|
23782
23782
|
const typeOptions = data.types.map(
|
|
23783
|
-
(t) => `<option value="${escapeHtml(t)}"${data.type === t ? " selected" : ""}>${escapeHtml(
|
|
23783
|
+
(t) => `<option value="${escapeHtml(t)}"${data.type === t ? " selected" : ""}>${escapeHtml(typeLabel(t))}s</option>`
|
|
23784
23784
|
).join("");
|
|
23785
23785
|
const columns = data.columns.map(
|
|
23786
23786
|
(col) => `
|
|
@@ -23937,7 +23937,7 @@ function upcomingPage(data) {
|
|
|
23937
23937
|
<td><span class="trending-rank">${i + 1}</span></td>
|
|
23938
23938
|
<td><a href="/docs/${escapeHtml(t.type)}/${escapeHtml(t.id)}">${escapeHtml(t.id)}</a></td>
|
|
23939
23939
|
<td>${escapeHtml(t.title)}</td>
|
|
23940
|
-
<td>${escapeHtml(
|
|
23940
|
+
<td>${escapeHtml(typeLabel(t.type))}</td>
|
|
23941
23941
|
<td>${statusBadge(t.status)}</td>
|
|
23942
23942
|
<td><span class="trending-score">${t.score}</span></td>
|
|
23943
23943
|
<td>${t.signals.map((s) => `<span class="signal-tag">${escapeHtml(s.factor)} +${s.points}</span>`).join(" ")}</td>
|
|
@@ -24031,7 +24031,7 @@ function buildPersonaLayoutOpts(persona, activePath, navGroups) {
|
|
|
24031
24031
|
const artifactGroupsHtml = navGroups.map((group) => {
|
|
24032
24032
|
const links = group.types.map((type) => {
|
|
24033
24033
|
const href = `/docs/${type}?persona=${persona}`;
|
|
24034
|
-
return `<a href="${href}" class="${isActive(`/docs/${type}`)}">${
|
|
24034
|
+
return `<a href="${href}" class="${isActive(`/docs/${type}`)}">${typeLabel(type)}s</a>`;
|
|
24035
24035
|
}).join("\n ");
|
|
24036
24036
|
const groupActive = group.types.some(
|
|
24037
24037
|
(type) => isActive(`/docs/${type}`) !== ""
|
|
@@ -28352,8 +28352,8 @@ function executeImportPlan(plan, store, marvinDir, options) {
|
|
|
28352
28352
|
}
|
|
28353
28353
|
function formatPlanSummary(plan) {
|
|
28354
28354
|
const lines = [];
|
|
28355
|
-
const
|
|
28356
|
-
lines.push(`Detected: ${
|
|
28355
|
+
const typeLabel4 = classificationLabel(plan.classification.type);
|
|
28356
|
+
lines.push(`Detected: ${typeLabel4}`);
|
|
28357
28357
|
lines.push(`Source: ${plan.classification.inputPath}`);
|
|
28358
28358
|
lines.push("");
|
|
28359
28359
|
const imports = plan.items.filter((i) => i.action === "import");
|
|
@@ -29655,7 +29655,7 @@ function createProgram() {
|
|
|
29655
29655
|
const program2 = new Command();
|
|
29656
29656
|
program2.name("marvin").description(
|
|
29657
29657
|
"AI-powered product development assistant with Product Owner, Delivery Manager, and Technical Lead personas"
|
|
29658
|
-
).version("0.5.
|
|
29658
|
+
).version("0.5.3");
|
|
29659
29659
|
program2.command("init").description("Initialize a new Marvin project in the current directory").action(async () => {
|
|
29660
29660
|
await initCommand();
|
|
29661
29661
|
});
|