@nanobpm/nano-workforce 0.189.3 → 0.191.0

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.
@@ -149,6 +149,14 @@ test("readConvergeInput: an explicit payload.convergeOnly overrides the target d
149
149
  assertEquals(r.dependsOn, ["owner/repo#5"], "non-string dependsOn entries are dropped");
150
150
  });
151
151
 
152
+ test("readConvergeInput: autoMerge is the positive per-dispatch control", () => {
153
+ const merge = readConvergeInput("converge", { pr: "owner/repo#7", autoMerge: true }, null);
154
+ assertEquals(merge.convergeOnly, false);
155
+
156
+ const review = readConvergeInput("converge-merge", { pr: "owner/repo#7", autoMerge: false }, null);
157
+ assertEquals(review.convergeOnly, true);
158
+ });
159
+
152
160
  test("readConvergeInput: a missing / unparseable pr fails CLOSED (a converge connector with no target PR is meaningless)", () => {
153
161
  assertThrows(() => readConvergeInput("converge-merge", null, null), Error, "payload.pr");
154
162
  assertThrows(() => readConvergeInput("converge-merge", {}, null), Error, "payload.pr");
@@ -76,13 +76,14 @@ export function safeStringify(value: unknown): string {
76
76
  }
77
77
  }
78
78
 
79
- /** Parse + validate the converge connector's payload (`{ pr, convergeOnly?, dependsOn? }`) for a
79
+ /** Parse + validate the converge connector's payload (`{ pr, autoMerge?, dependsOn? }`) for a
80
80
  * `converge` / `converge-merge` / `merge-main` target. `pr` is REQUIRED and must parse to a canonical `owner/repo#N`
81
81
  * (fail CLOSED — a converge connector with no target PR is meaningless and could never enroll).
82
- * `convergeOnly` DEFAULTS from the target (`converge` → review-only `true`; `converge-merge`/`merge-main` → drive
83
- * the merge loop `false`) and may be overridden per-dispatch by an explicit boolean. `dependsOn` is an
84
- * optional list of PR refs unioned into the enrolled PR's merge-stage dependency set (only non-string
85
- * entries are dropped; `submitPr` itself ignores unparseable refs). Exported for unit coverage.
82
+ * `autoMerge` DEFAULTS from the target (`converge` → `false`; `converge-merge`/`merge-main` → `true`) and
83
+ * may be overridden per-dispatch by an explicit boolean. The deprecated `convergeOnly` alias is still
84
+ * accepted for compatibility. `dependsOn` is an optional list of PR refs unioned into the enrolled PR's
85
+ * merge-stage dependency set (only non-string entries are dropped; `submitPr` itself ignores unparseable
86
+ * refs). Exported for unit coverage.
86
87
  *
87
88
  * `pr` may be sourced three ways (issue #548), resolved by {@link resolveConvergePr} against the
88
89
  * threaded `boundFacts` BEFORE parsing: a LITERAL `owner/repo#N`, an explicit fact REFERENCE
@@ -104,7 +105,13 @@ export function readConvergeInput(
104
105
  `bound from an upstream \`agent\` node (got ${safeStringify(prValue ?? null)})`,
105
106
  );
106
107
  }
107
- const convergeOnly = typeof p.convergeOnly === "boolean" ? p.convergeOnly : convergeOnlyForTarget(target);
108
+ const autoMerge =
109
+ typeof p.autoMerge === "boolean"
110
+ ? p.autoMerge
111
+ : typeof p.convergeOnly === "boolean"
112
+ ? !p.convergeOnly
113
+ : !convergeOnlyForTarget(target);
114
+ const convergeOnly = !autoMerge;
108
115
  const dependsOn = Array.isArray(p.dependsOn) ? p.dependsOn.filter((d): d is string => typeof d === "string") : [];
109
116
  return { parsed, convergeOnly, dependsOn };
110
117
  }