mrvn-cli 0.5.18 → 0.5.19
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 +30 -5
- package/dist/index.js.map +1 -1
- package/dist/marvin-serve.js +29 -4
- package/dist/marvin-serve.js.map +1 -1
- package/dist/marvin.js +30 -5
- package/dist/marvin.js.map +1 -1
- package/package.json +1 -1
package/dist/marvin.js
CHANGED
|
@@ -16824,7 +16824,7 @@ function createTaskTools(store) {
|
|
|
16824
16824
|
priority: external_exports.enum(["critical", "high", "medium", "low"]).optional().describe("New priority"),
|
|
16825
16825
|
tags: external_exports.array(external_exports.string()).optional().describe("Replace tags (e.g. remove old tags, add new ones)"),
|
|
16826
16826
|
workFocus: external_exports.string().optional().describe("Work focus name (e.g. 'Budget UX'). Replaces existing focus:<value> tag."),
|
|
16827
|
-
progress: external_exports.number().optional().describe("Explicit progress percentage (0-100). Overrides auto-calculation from child contributions.")
|
|
16827
|
+
progress: external_exports.number().nullable().optional().describe("Explicit progress percentage (0-100). Overrides auto-calculation from child contributions. Pass null to clear the override and revert to auto-calculation.")
|
|
16828
16828
|
},
|
|
16829
16829
|
async (args) => {
|
|
16830
16830
|
const { id, content, linkedEpic: rawLinkedEpic, tags: userTags, workFocus, progress, ...updates } = args;
|
|
@@ -16857,6 +16857,8 @@ function createTaskTools(store) {
|
|
|
16857
16857
|
if (typeof progress === "number") {
|
|
16858
16858
|
updates.progress = Math.max(0, Math.min(100, Math.round(progress)));
|
|
16859
16859
|
updates.progressOverride = true;
|
|
16860
|
+
} else if (progress === null) {
|
|
16861
|
+
updates.progressOverride = false;
|
|
16860
16862
|
}
|
|
16861
16863
|
const doc = store.update(id, updates, content);
|
|
16862
16864
|
if (args.status !== void 0 || typeof progress === "number") {
|
|
@@ -18913,7 +18915,7 @@ function createActionTools(store) {
|
|
|
18913
18915
|
tags: external_exports.array(external_exports.string()).optional().describe("Replace all tags. When provided with sprints, sprint tags are merged into this array."),
|
|
18914
18916
|
sprints: external_exports.array(external_exports.string()).optional().describe("Sprint IDs to assign (replaces existing sprint tags). E.g. ['SP-001']."),
|
|
18915
18917
|
workFocus: external_exports.string().optional().describe("Work focus name (e.g. 'Budget UX'). Replaces existing focus:<value> tag."),
|
|
18916
|
-
progress: external_exports.number().optional().describe("Explicit progress percentage (0-100).")
|
|
18918
|
+
progress: external_exports.number().nullable().optional().describe("Explicit progress percentage (0-100). Pass null to clear the override and revert to auto-calculation from children.")
|
|
18917
18919
|
},
|
|
18918
18920
|
async (args) => {
|
|
18919
18921
|
const { id, content, sprints, tags, workFocus, progress, owner, assignee, ...updates } = args;
|
|
@@ -18956,6 +18958,8 @@ function createActionTools(store) {
|
|
|
18956
18958
|
if (typeof progress === "number") {
|
|
18957
18959
|
updates.progress = Math.max(0, Math.min(100, Math.round(progress)));
|
|
18958
18960
|
updates.progressOverride = true;
|
|
18961
|
+
} else if (progress === null) {
|
|
18962
|
+
updates.progressOverride = false;
|
|
18959
18963
|
}
|
|
18960
18964
|
const doc = store.update(id, updates, content);
|
|
18961
18965
|
if (args.status !== void 0 || typeof progress === "number") {
|
|
@@ -26961,16 +26965,37 @@ async function _assessArtifactRecursive(store, client, host, options, visited, d
|
|
|
26961
26965
|
);
|
|
26962
26966
|
children.push(childReport);
|
|
26963
26967
|
}
|
|
26968
|
+
if (children.length > 0) {
|
|
26969
|
+
const rolledUpProgress = computeWeightedProgress(
|
|
26970
|
+
children.map((c) => ({
|
|
26971
|
+
weight: resolveWeight(void 0).weight,
|
|
26972
|
+
progress: c.marvinProgress
|
|
26973
|
+
}))
|
|
26974
|
+
);
|
|
26975
|
+
if (rolledUpProgress !== currentProgress) {
|
|
26976
|
+
proposedUpdates.push({
|
|
26977
|
+
artifactId: fm.id,
|
|
26978
|
+
field: "progress",
|
|
26979
|
+
currentValue: currentProgress,
|
|
26980
|
+
proposedValue: rolledUpProgress,
|
|
26981
|
+
reason: `Rolled up from ${children.length} children (weighted average ${rolledUpProgress}%)`
|
|
26982
|
+
});
|
|
26983
|
+
}
|
|
26984
|
+
}
|
|
26964
26985
|
const signals = buildSignals(commentSignals, linkedIssues, statusDrift, proposedMarvinStatus);
|
|
26965
26986
|
const appliedUpdates = [];
|
|
26966
26987
|
if (options.applyUpdates && proposedUpdates.length > 0) {
|
|
26967
26988
|
for (const update of proposedUpdates) {
|
|
26968
26989
|
if (update.field === "review") continue;
|
|
26969
26990
|
try {
|
|
26970
|
-
|
|
26991
|
+
const updatePayload = {
|
|
26971
26992
|
[update.field]: update.proposedValue,
|
|
26972
26993
|
lastJiraSyncAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
26973
|
-
}
|
|
26994
|
+
};
|
|
26995
|
+
if (update.field === "progress") {
|
|
26996
|
+
updatePayload.progressOverride = false;
|
|
26997
|
+
}
|
|
26998
|
+
store.update(update.artifactId, updatePayload);
|
|
26974
26999
|
const updatedDoc = store.get(update.artifactId);
|
|
26975
27000
|
if (updatedDoc) {
|
|
26976
27001
|
if (updatedDoc.frontmatter.type === "task") {
|
|
@@ -33526,7 +33551,7 @@ function createProgram() {
|
|
|
33526
33551
|
const program2 = new Command();
|
|
33527
33552
|
program2.name("marvin").description(
|
|
33528
33553
|
"AI-powered product development assistant with Product Owner, Delivery Manager, and Technical Lead personas"
|
|
33529
|
-
).version("0.5.
|
|
33554
|
+
).version("0.5.19");
|
|
33530
33555
|
program2.command("init").description("Initialize a new Marvin project in the current directory").action(async () => {
|
|
33531
33556
|
await initCommand();
|
|
33532
33557
|
});
|