nexus-agents 8.72.0 → 8.73.1

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.
Files changed (26) hide show
  1. package/dist/{chunk-GSSWMHEI.js → chunk-5NC4I44Y.js} +2 -2
  2. package/dist/{chunk-NZ2E25SC.js → chunk-DSBCOWEN.js} +7 -7
  3. package/dist/{chunk-2EKSJV5C.js → chunk-NSX7C7GA.js} +61 -27
  4. package/dist/chunk-NSX7C7GA.js.map +1 -0
  5. package/dist/{chunk-6E5JEBH2.js → chunk-RCISIRX7.js} +3 -3
  6. package/dist/{chunk-UNDHFITF.js → chunk-WZGUYIQA.js} +2 -2
  7. package/dist/{chunk-FL5R2KR7.js → chunk-YDZSLPM5.js} +2 -2
  8. package/dist/cli.d.ts +1 -1
  9. package/dist/cli.js +33 -13
  10. package/dist/cli.js.map +1 -1
  11. package/dist/{consensus-vote-QUWKYCYU.js → consensus-vote-H4T6XK3A.js} +4 -4
  12. package/dist/{consensus-vote-types-DTUSdB9g.d.ts → consensus-vote-types-DtqMYo6b.d.ts} +24 -0
  13. package/dist/{improvement-review-FQJ6PZP6.js → improvement-review-OGTR6QXW.js} +4 -4
  14. package/dist/index.d.ts +2 -2
  15. package/dist/index.js +6 -6
  16. package/dist/{setup-data-dir-NHCKHBWP.js → setup-data-dir-XB5R2AHL.js} +3 -3
  17. package/package.json +1 -1
  18. package/dist/chunk-2EKSJV5C.js.map +0 -1
  19. /package/dist/{chunk-GSSWMHEI.js.map → chunk-5NC4I44Y.js.map} +0 -0
  20. /package/dist/{chunk-NZ2E25SC.js.map → chunk-DSBCOWEN.js.map} +0 -0
  21. /package/dist/{chunk-6E5JEBH2.js.map → chunk-RCISIRX7.js.map} +0 -0
  22. /package/dist/{chunk-UNDHFITF.js.map → chunk-WZGUYIQA.js.map} +0 -0
  23. /package/dist/{chunk-FL5R2KR7.js.map → chunk-YDZSLPM5.js.map} +0 -0
  24. /package/dist/{consensus-vote-QUWKYCYU.js.map → consensus-vote-H4T6XK3A.js.map} +0 -0
  25. /package/dist/{improvement-review-FQJ6PZP6.js.map → improvement-review-OGTR6QXW.js.map} +0 -0
  26. /package/dist/{setup-data-dir-NHCKHBWP.js.map → setup-data-dir-XB5R2AHL.js.map} +0 -0
@@ -7,7 +7,7 @@ import {
7
7
  toolStructuredError,
8
8
  toolSuccessStructured,
9
9
  wrapToolWithTimeout
10
- } from "./chunk-UNDHFITF.js";
10
+ } from "./chunk-WZGUYIQA.js";
11
11
  import {
12
12
  JsonlStore,
13
13
  SECURITY_KEYWORDS,
@@ -2282,4 +2282,4 @@ export {
2282
2282
  runImprovementReview,
2283
2283
  registerImprovementReviewTool
2284
2284
  };
2285
- //# sourceMappingURL=chunk-GSSWMHEI.js.map
2285
+ //# sourceMappingURL=chunk-5NC4I44Y.js.map
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-6E5JEBH2.js";
24
+ } from "./chunk-RCISIRX7.js";
25
25
  import {
26
26
  executeExpert
27
27
  } from "./chunk-KCMHX6AZ.js";
@@ -71,7 +71,7 @@ import {
71
71
  updateStage,
72
72
  withWarnings,
73
73
  writeJobCancelled
74
- } from "./chunk-2EKSJV5C.js";
74
+ } from "./chunk-NSX7C7GA.js";
75
75
  import {
76
76
  allOf,
77
77
  anyOf
@@ -93,7 +93,7 @@ import {
93
93
  } from "./chunk-5LBLNPCD.js";
94
94
  import {
95
95
  withPrerequisite
96
- } from "./chunk-GSSWMHEI.js";
96
+ } from "./chunk-5NC4I44Y.js";
97
97
  import {
98
98
  NOOP_NOTIFIER,
99
99
  RateLimiter,
@@ -116,7 +116,7 @@ import {
116
116
  toolSuccessStructured,
117
117
  withProgressHeartbeat,
118
118
  wrapToolWithTimeout
119
- } from "./chunk-UNDHFITF.js";
119
+ } from "./chunk-WZGUYIQA.js";
120
120
  import {
121
121
  EventTopics,
122
122
  UNRESOLVED_MODEL_ID,
@@ -45845,7 +45845,7 @@ function buildVotingInput(plan, config) {
45845
45845
  }
45846
45846
  async function executeSingleVote(plan, config, log) {
45847
45847
  try {
45848
- const { executeVoting } = await import("./consensus-vote-QUWKYCYU.js");
45848
+ const { executeVoting } = await import("./consensus-vote-H4T6XK3A.js");
45849
45849
  const input = buildVotingInput(plan, config);
45850
45850
  const result = await executeVoting(input, log);
45851
45851
  return parseVotingResult(result);
@@ -47649,7 +47649,7 @@ ${contextBlock}`;
47649
47649
  const strategy = config.votingStrategy ?? "higher_order";
47650
47650
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47651
47651
  try {
47652
- const { executeVoting } = await import("./consensus-vote-QUWKYCYU.js");
47652
+ const { executeVoting } = await import("./consensus-vote-H4T6XK3A.js");
47653
47653
  const votingResult = await executeVoting(
47654
47654
  {
47655
47655
  proposal: buildVoteProposal(plan, research),
@@ -56899,4 +56899,4 @@ export {
56899
56899
  startPipelineEventBridge,
56900
56900
  shutdownPipelineEventBridge
56901
56901
  };
56902
- //# sourceMappingURL=chunk-NZ2E25SC.js.map
56902
+ //# sourceMappingURL=chunk-DSBCOWEN.js.map
@@ -25,10 +25,10 @@ import {
25
25
  toolSuccessStructured,
26
26
  withProgressHeartbeat,
27
27
  wrapToolWithTimeout
28
- } from "./chunk-UNDHFITF.js";
28
+ } from "./chunk-WZGUYIQA.js";
29
29
  import {
30
30
  VERSION
31
- } from "./chunk-FL5R2KR7.js";
31
+ } from "./chunk-YDZSLPM5.js";
32
32
  import {
33
33
  UNRESOLVED_MODEL_ID,
34
34
  assessPanelIndependence,
@@ -2015,19 +2015,32 @@ function adapterCliKey(adapter) {
2015
2015
  function withAssignment(result, pinnedModel, assignedKey) {
2016
2016
  return withAssignedCli({ ...result, pinnedModel }, assignedKey);
2017
2017
  }
2018
+ var CLI_LANE_WIDTH = { "cli-claude": 2 };
2019
+ var DEFAULT_LANE_WIDTH = 1;
2020
+ function laneWidthOf(key) {
2021
+ return Object.hasOwn(CLI_LANE_WIDTH, key) ? CLI_LANE_WIDTH[key] ?? DEFAULT_LANE_WIDTH : DEFAULT_LANE_WIDTH;
2022
+ }
2018
2023
  function createKeyedSerializer() {
2019
- const tails = /* @__PURE__ */ new Map();
2020
- return (key, fn) => {
2021
- const prev = tails.get(key) ?? Promise.resolve();
2022
- const run = prev.then(fn, fn);
2023
- tails.set(
2024
- key,
2025
- run.then(
2026
- () => void 0,
2027
- () => void 0
2028
- )
2029
- );
2030
- return run;
2024
+ const lanes = /* @__PURE__ */ new Map();
2025
+ const laneFor = (key) => {
2026
+ const existing = lanes.get(key);
2027
+ if (existing !== void 0) return existing;
2028
+ const created = { active: 0, waiting: [] };
2029
+ lanes.set(key, created);
2030
+ return created;
2031
+ };
2032
+ return async (key, fn) => {
2033
+ const lane = laneFor(key);
2034
+ if (lane.active >= laneWidthOf(key)) {
2035
+ await new Promise((resolve5) => lane.waiting.push(resolve5));
2036
+ }
2037
+ lane.active += 1;
2038
+ try {
2039
+ return await fn();
2040
+ } finally {
2041
+ lane.active -= 1;
2042
+ lane.waiting.shift()?.();
2043
+ }
2031
2044
  };
2032
2045
  }
2033
2046
  function raceWithDeadline(p, role, deadlineMs) {
@@ -2044,6 +2057,14 @@ function raceWithDeadline(p, role, deadlineMs) {
2044
2057
  function cancelled(signal) {
2045
2058
  return signal?.aborted === true;
2046
2059
  }
2060
+ function withPrimaryAttempts(primary, recovered) {
2061
+ return {
2062
+ ...recovered,
2063
+ timing: {
2064
+ attempts: [...primary.timing?.attempts ?? [], ...recovered.timing?.attempts ?? []]
2065
+ }
2066
+ };
2067
+ }
2047
2068
  async function launchRoleVote(role, index, input, voteOnAdapter) {
2048
2069
  if (index > 0 && input.interDelay > 0) await delay(input.interDelay);
2049
2070
  const adapter = input.roleAdapters.get(role) ?? input.fallbackAdapter;
@@ -2051,9 +2072,12 @@ async function launchRoleVote(role, index, input, voteOnAdapter) {
2051
2072
  const assignedKey = adapterCliKey(adapter);
2052
2073
  const stamp = (r) => withAssignment(r, pinnedModel, assignedKey);
2053
2074
  if (cancelled(input.signal)) {
2054
- return stamp(createErrorVoteResult(role, CANCELLED_MESSAGE, 0));
2075
+ return stamp({
2076
+ ...createErrorVoteResult(role, CANCELLED_MESSAGE, 0),
2077
+ timing: { attempts: [] }
2078
+ });
2055
2079
  }
2056
- const primary = await voteOnAdapter(role, adapter);
2080
+ const primary = await voteOnAdapter(role, adapter, false);
2057
2081
  if (!shouldRetryOnFallback(primary, adapter, input.fallbackAdapter)) return stamp(primary);
2058
2082
  if (cancelled(input.signal)) return stamp(primary);
2059
2083
  input.logger.warn("Voter failed on diverse adapter; retrying on fallback (#3587)", {
@@ -2062,7 +2086,10 @@ async function launchRoleVote(role, index, input, voteOnAdapter) {
2062
2086
  fallbackCli: adapterCliKey(input.fallbackAdapter),
2063
2087
  error: primary.error
2064
2088
  });
2065
- const recovered = await voteOnAdapter(role, input.fallbackAdapter);
2089
+ const recovered = withPrimaryAttempts(
2090
+ primary,
2091
+ await voteOnAdapter(role, input.fallbackAdapter, true)
2092
+ );
2066
2093
  if (recovered.source === "error") return stamp(recovered);
2067
2094
  const fallback = crossCliFallback(adapter, assignedKey, primary.error ?? "");
2068
2095
  return stamp({ ...recovered, fallback });
@@ -2071,19 +2098,26 @@ async function launchVotesWithOverallDeadline(input) {
2071
2098
  const { roles, proposal, logger: logger11, voteOptions, overallDeadlineMs, voteFn } = input;
2072
2099
  const startedAt = Date.now();
2073
2100
  const serialize = createKeyedSerializer();
2074
- const voteOnAdapter = (role, adapter) => (
2075
- // Serialize per CLI so concurrent same-CLI calls don't race that CLI's
2076
- // OAuth refresh (#3348). The deadline is measured when the vote actually
2077
- // starts, so a queued role still gets a correct remaining budget.
2078
- serialize(adapterCliKey(adapter), () => {
2079
- const remaining = Math.max(1, overallDeadlineMs - (Date.now() - startedAt));
2080
- return raceWithDeadline(
2101
+ const voteOnAdapter = (role, adapter, fallback) => {
2102
+ const cli = adapterCliKey(adapter);
2103
+ const enqueuedAt = Date.now();
2104
+ return serialize(cli, async () => {
2105
+ const runStartedAt = Date.now();
2106
+ const remaining = Math.max(1, overallDeadlineMs - (runStartedAt - startedAt));
2107
+ const result = await raceWithDeadline(
2081
2108
  voteFn(role, proposal, adapter, logger11, voteOptions),
2082
2109
  role,
2083
2110
  remaining
2084
2111
  );
2085
- })
2086
- );
2112
+ const attempt = {
2113
+ cli,
2114
+ queuedMs: runStartedAt - enqueuedAt,
2115
+ ranMs: Date.now() - runStartedAt,
2116
+ fallback
2117
+ };
2118
+ return { ...result, timing: { attempts: [...result.timing?.attempts ?? [], attempt] } };
2119
+ });
2120
+ };
2087
2121
  const wrapped = roles.map((role, index) => launchRoleVote(role, index, input, voteOnAdapter));
2088
2122
  const results = await Promise.all(wrapped);
2089
2123
  const expired = results.filter((r) => r.source === "error" && r.error === DEADLINE_MESSAGE);
@@ -9144,4 +9178,4 @@ export {
9144
9178
  CONSENSUS_VOTE_TOOL_SCHEMA,
9145
9179
  registerConsensusVoteTool
9146
9180
  };
9147
- //# sourceMappingURL=chunk-2EKSJV5C.js.map
9181
+ //# sourceMappingURL=chunk-NSX7C7GA.js.map