mrvn-cli 0.5.21 → 0.5.22

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
@@ -25807,6 +25807,7 @@ function generateProposedActions(issues) {
25807
25807
  // src/skills/builtin/jira/sprint-progress.ts
25808
25808
  import { query as query3 } from "@anthropic-ai/claude-agent-sdk";
25809
25809
  var DONE_STATUSES15 = /* @__PURE__ */ new Set(["done", "closed", "resolved", "obsolete", "wont do", "cancelled"]);
25810
+ var PROGRESS_DONE_STATUSES = /* @__PURE__ */ new Set(["done", "closed", "resolved", "obsolete", "wont do"]);
25810
25811
  var BATCH_SIZE = 5;
25811
25812
  var MAX_LINKED_ISSUES = 50;
25812
25813
  var BLOCKED_WEIGHT_RISK_THRESHOLD = 0.3;
@@ -26733,8 +26734,16 @@ async function _assessArtifactRecursive(store, client, host, options, visited, d
26733
26734
  children.push(childReport);
26734
26735
  }
26735
26736
  if (children.length > 0) {
26737
+ const childProgressValues = children.map((c) => {
26738
+ const updates = c.appliedUpdates.length > 0 ? c.appliedUpdates : c.proposedUpdates;
26739
+ const lastStatus = findLast(updates, (u) => u.field === "status");
26740
+ if (lastStatus && PROGRESS_DONE_STATUSES.has(String(lastStatus.proposedValue))) return 100;
26741
+ const lastProgress = findLast(updates, (u) => u.field === "progress");
26742
+ if (lastProgress) return lastProgress.proposedValue;
26743
+ return c.marvinProgress;
26744
+ });
26736
26745
  const rolledUpProgress = Math.round(
26737
- children.reduce((s, c) => s + c.marvinProgress, 0) / children.length
26746
+ childProgressValues.reduce((s, p) => s + p, 0) / childProgressValues.length
26738
26747
  );
26739
26748
  if (rolledUpProgress !== currentProgress) {
26740
26749
  proposedUpdates.push({
@@ -26750,7 +26759,7 @@ async function _assessArtifactRecursive(store, client, host, options, visited, d
26750
26759
  const appliedUpdates = [];
26751
26760
  if (options.applyUpdates && proposedUpdates.length > 0) {
26752
26761
  const doneArtifacts = new Set(
26753
- proposedUpdates.filter((u) => u.field === "status" && DONE_STATUSES15.has(String(u.proposedValue))).map((u) => u.artifactId)
26762
+ proposedUpdates.filter((u) => u.field === "status" && PROGRESS_DONE_STATUSES.has(String(u.proposedValue))).map((u) => u.artifactId)
26754
26763
  );
26755
26764
  for (const update of proposedUpdates) {
26756
26765
  if (update.field === "review") continue;
@@ -27078,6 +27087,12 @@ function formatArtifactChild(parts, child, depth) {
27078
27087
  formatArtifactChild(parts, grandchild, depth + 1);
27079
27088
  }
27080
27089
  }
27090
+ function findLast(arr, predicate) {
27091
+ for (let i = arr.length - 1; i >= 0; i--) {
27092
+ if (predicate(arr[i])) return arr[i];
27093
+ }
27094
+ return void 0;
27095
+ }
27081
27096
 
27082
27097
  // src/skills/builtin/jira/tools.ts
27083
27098
  var JIRA_TYPE = "jira-issue";
@@ -33575,7 +33590,7 @@ function createProgram() {
33575
33590
  const program = new Command();
33576
33591
  program.name("marvin").description(
33577
33592
  "AI-powered product development assistant with Product Owner, Delivery Manager, and Technical Lead personas"
33578
- ).version("0.5.21");
33593
+ ).version("0.5.22");
33579
33594
  program.command("init").description("Initialize a new Marvin project in the current directory").action(async () => {
33580
33595
  await initCommand();
33581
33596
  });