mrvn-cli 0.5.23 → 0.5.24
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 +45 -1
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +44 -0
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +45 -1
- package/dist/marvin.js.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -26805,6 +26805,23 @@ async function _assessArtifactRecursive(store, client, host, options, visited, d
|
|
|
26805
26805
|
}
|
|
26806
26806
|
}
|
|
26807
26807
|
}
|
|
26808
|
+
if (options.applyUpdates) {
|
|
26809
|
+
const assessmentSummary = buildAssessmentSummary(
|
|
26810
|
+
commentSummary,
|
|
26811
|
+
commentAnalysisProgress,
|
|
26812
|
+
signals,
|
|
26813
|
+
children,
|
|
26814
|
+
linkedIssues
|
|
26815
|
+
);
|
|
26816
|
+
try {
|
|
26817
|
+
store.update(fm.id, {
|
|
26818
|
+
assessmentSummary,
|
|
26819
|
+
lastAssessedAt: assessmentSummary.generatedAt
|
|
26820
|
+
});
|
|
26821
|
+
} catch (err) {
|
|
26822
|
+
errors.push(`Failed to persist assessment summary: ${err instanceof Error ? err.message : String(err)}`);
|
|
26823
|
+
}
|
|
26824
|
+
}
|
|
26808
26825
|
return {
|
|
26809
26826
|
artifactId: fm.id,
|
|
26810
26827
|
title: fm.title,
|
|
@@ -27011,6 +27028,33 @@ function emptyArtifactReport(artifactId, errors) {
|
|
|
27011
27028
|
errors
|
|
27012
27029
|
};
|
|
27013
27030
|
}
|
|
27031
|
+
function buildAssessmentSummary(commentSummary, commentAnalysisProgress, signals, children, linkedIssues) {
|
|
27032
|
+
const childProgressValues = children.map((c) => {
|
|
27033
|
+
const updates = c.appliedUpdates.length > 0 ? c.appliedUpdates : c.proposedUpdates;
|
|
27034
|
+
const lastStatus = findLast(updates, (u) => u.field === "status");
|
|
27035
|
+
if (lastStatus && PROGRESS_DONE_STATUSES.has(String(lastStatus.proposedValue))) return 100;
|
|
27036
|
+
const lastProgress = findLast(updates, (u) => u.field === "progress");
|
|
27037
|
+
if (lastProgress) return lastProgress.proposedValue;
|
|
27038
|
+
return c.marvinProgress;
|
|
27039
|
+
});
|
|
27040
|
+
const childDoneCount = children.filter((c, i) => {
|
|
27041
|
+
const updates = c.appliedUpdates.length > 0 ? c.appliedUpdates : c.proposedUpdates;
|
|
27042
|
+
const lastStatus = findLast(updates, (u) => u.field === "status");
|
|
27043
|
+
const effectiveStatus = lastStatus ? String(lastStatus.proposedValue) : c.marvinStatus;
|
|
27044
|
+
return DONE_STATUSES15.has(effectiveStatus);
|
|
27045
|
+
}).length;
|
|
27046
|
+
const childRollupProgress = children.length > 0 ? Math.round(childProgressValues.reduce((s, p) => s + p, 0) / childProgressValues.length) : null;
|
|
27047
|
+
return {
|
|
27048
|
+
generatedAt: (/* @__PURE__ */ new Date()).toISOString(),
|
|
27049
|
+
commentSummary,
|
|
27050
|
+
commentAnalysisProgress,
|
|
27051
|
+
signals,
|
|
27052
|
+
childCount: children.length,
|
|
27053
|
+
childDoneCount,
|
|
27054
|
+
childRollupProgress,
|
|
27055
|
+
linkedIssueCount: linkedIssues.length
|
|
27056
|
+
};
|
|
27057
|
+
}
|
|
27014
27058
|
function formatArtifactReport(report) {
|
|
27015
27059
|
const parts = [];
|
|
27016
27060
|
parts.push(`# Artifact Assessment \u2014 ${report.artifactId}`);
|
|
@@ -33625,7 +33669,7 @@ function createProgram() {
|
|
|
33625
33669
|
const program = new Command();
|
|
33626
33670
|
program.name("marvin").description(
|
|
33627
33671
|
"AI-powered product development assistant with Product Owner, Delivery Manager, and Technical Lead personas"
|
|
33628
|
-
).version("0.5.
|
|
33672
|
+
).version("0.5.24");
|
|
33629
33673
|
program.command("init").description("Initialize a new Marvin project in the current directory").action(async () => {
|
|
33630
33674
|
await initCommand();
|
|
33631
33675
|
});
|