nexus-agents 8.47.8 → 8.47.10

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.
@@ -8,7 +8,7 @@ import {
8
8
  NODE_ENGINE_RANGE,
9
9
  VERSION,
10
10
  isNodeVersionSupported
11
- } from "./chunk-4U4KH5AD.js";
11
+ } from "./chunk-KNZKA3MI.js";
12
12
  import {
13
13
  claimGlobalRegistry
14
14
  } from "./chunk-QOKB6MWY.js";
@@ -1247,7 +1247,7 @@ async function runDoctorFix(result) {
1247
1247
  writeLine2("\u2500".repeat(40));
1248
1248
  let fixCount = 0;
1249
1249
  if (!result.dataDirectory.rootExists || result.dataDirectory.subdirectories.some((d) => !d.exists || !d.writable)) {
1250
- const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-4SRJZ35Z.js");
1250
+ const { initDataDirectories: initDataDirectories2, describeDataDirFix: describeDataDirFix2 } = await import("./setup-data-dir-VK7WVGLP.js");
1251
1251
  const outcome = describeDataDirFix2(initDataDirectories2());
1252
1252
  writeLine2(outcome.line);
1253
1253
  if (outcome.counted) fixCount++;
@@ -1349,4 +1349,4 @@ export {
1349
1349
  startStdioServer,
1350
1350
  closeServer
1351
1351
  };
1352
- //# sourceMappingURL=chunk-46MCNHNQ.js.map
1352
+ //# sourceMappingURL=chunk-CXT433H4.js.map
@@ -1,6 +1,6 @@
1
1
  // src/version.ts
2
2
  import semver from "semver";
3
- var VERSION = true ? "8.47.8" : "dev";
3
+ var VERSION = true ? "8.47.10" : "dev";
4
4
  var NODE_ENGINE_RANGE = ">=22.5.0";
5
5
  function isNodeVersionSupported(version) {
6
6
  return semver.satisfies(version, NODE_ENGINE_RANGE);
@@ -11,4 +11,4 @@ export {
11
11
  NODE_ENGINE_RANGE,
12
12
  isNodeVersionSupported
13
13
  };
14
- //# sourceMappingURL=chunk-4U4KH5AD.js.map
14
+ //# sourceMappingURL=chunk-KNZKA3MI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["/**\n * nexus-agents - Version constant\n *\n * Injected at build time via tsup define from package.json.\n * Do NOT edit VERSION manually — it is replaced during build.\n */\n\nimport semver from 'semver';\n\ndeclare const __NEXUS_VERSION__: string;\n\nexport const VERSION: string = typeof __NEXUS_VERSION__ !== 'undefined' ? __NEXUS_VERSION__ : 'dev';\n\n/** Supported Node.js versions. Pinned to package.json by a regression test. */\nexport const NODE_ENGINE_RANGE = '>=22.5.0';\n\n/** Returns whether a Node.js version satisfies the package engine requirement. */\nexport function isNodeVersionSupported(version: string): boolean {\n return semver.satisfies(version, NODE_ENGINE_RANGE);\n}\n"],"mappings":";AAOA,OAAO,YAAY;AAIZ,IAAM,UAAkB,OAA2C,WAAoB;AAGvF,IAAM,oBAAoB;AAG1B,SAAS,uBAAuB,SAA0B;AAC/D,SAAO,OAAO,UAAU,SAAS,iBAAiB;AACpD;","names":[]}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["/**\n * nexus-agents - Version constant\n *\n * Injected at build time via tsup define from package.json.\n * Do NOT edit VERSION manually — it is replaced during build.\n */\n\nimport semver from 'semver';\n\ndeclare const __NEXUS_VERSION__: string;\n\nexport const VERSION: string = typeof __NEXUS_VERSION__ !== 'undefined' ? __NEXUS_VERSION__ : 'dev';\n\n/** Supported Node.js versions. Pinned to package.json by a regression test. */\nexport const NODE_ENGINE_RANGE = '>=22.5.0';\n\n/** Returns whether a Node.js version satisfies the package engine requirement. */\nexport function isNodeVersionSupported(version: string): boolean {\n return semver.satisfies(version, NODE_ENGINE_RANGE);\n}\n"],"mappings":";AAOA,OAAO,YAAY;AAIZ,IAAM,UAAkB,OAA2C,YAAoB;AAGvF,IAAM,oBAAoB;AAG1B,SAAS,uBAAuB,SAA0B;AAC/D,SAAO,OAAO,UAAU,SAAS,iBAAiB;AACpD;","names":[]}
@@ -21,7 +21,7 @@ import {
21
21
  import {
22
22
  DEFAULT_TASK_TTL_MS,
23
23
  clampTaskTtl
24
- } from "./chunk-46MCNHNQ.js";
24
+ } from "./chunk-CXT433H4.js";
25
25
  import {
26
26
  executeExpert
27
27
  } from "./chunk-7QY3RIIY.js";
@@ -42,7 +42,7 @@ import {
42
42
  isAbandonedJob,
43
43
  isMeasuredBuildVersion,
44
44
  isRateLimitError,
45
- listJobs,
45
+ listJobsWithDiagnostics,
46
46
  listTaskStateIds,
47
47
  readJobResult,
48
48
  readTaskState,
@@ -55,7 +55,7 @@ import {
55
55
  toJobSummary,
56
56
  updateStage,
57
57
  writeJobCancelled
58
- } from "./chunk-OV6GG2BF.js";
58
+ } from "./chunk-Y3FWKEHT.js";
59
59
  import {
60
60
  allOf,
61
61
  anyOf
@@ -75,7 +75,7 @@ import {
75
75
  } from "./chunk-7I3LY4HJ.js";
76
76
  import {
77
77
  withPrerequisite
78
- } from "./chunk-OUJPQ5GT.js";
78
+ } from "./chunk-OKPEXBOI.js";
79
79
  import {
80
80
  NOOP_NOTIFIER,
81
81
  RateLimiter,
@@ -100,7 +100,7 @@ import {
100
100
  withAuditTrail,
101
101
  withProgressHeartbeat,
102
102
  wrapToolWithTimeout
103
- } from "./chunk-KUEOEFAT.js";
103
+ } from "./chunk-YVXX6EN2.js";
104
104
  import {
105
105
  createAuditTrail,
106
106
  createGraphAuditBridge,
@@ -43571,12 +43571,14 @@ async function resolveFileScope(input) {
43571
43571
  async function collectUsages(input, scope, limit, ctx) {
43572
43572
  const results = [];
43573
43573
  let total = 0;
43574
+ let unreadable = 0;
43574
43575
  for (const file of scope.files) {
43575
43576
  let src;
43576
43577
  try {
43577
43578
  src = await readFile3(file, "utf8");
43578
43579
  } catch {
43579
43580
  ctx.logger.warn(`search_usages: skipped unreadable file ${file}`);
43581
+ unreadable += 1;
43580
43582
  continue;
43581
43583
  }
43582
43584
  const lang = input.lang ?? inferLang(file);
@@ -43586,11 +43588,15 @@ async function collectUsages(input, scope, limit, ctx) {
43586
43588
  if (results.length < limit) results.push({ file: rel, ...match });
43587
43589
  }
43588
43590
  }
43589
- return { results, total };
43591
+ return { results, total, unreadable };
43590
43592
  }
43591
- function applyScopeTruncation(payload, scope) {
43592
- if (scope.skippedDirs === 0 && scope.omittedFiles === 0) return;
43593
+ function applyScopeTruncation(payload, scope, unreadable) {
43594
+ if (scope.skippedDirs === 0 && scope.omittedFiles === 0 && unreadable === 0) return;
43593
43595
  const reasons = [];
43596
+ if (unreadable > 0) {
43597
+ payload["filesUnreadable"] = unreadable;
43598
+ reasons.push(`${String(unreadable)} file(s) could not be read and were not searched`);
43599
+ }
43594
43600
  if (scope.skippedDirs > 0) {
43595
43601
  payload["skippedDirs"] = scope.skippedDirs;
43596
43602
  const plural = scope.skippedDirs === 1 ? "y was" : "ies were";
@@ -43612,7 +43618,10 @@ function buildOutput2(input, scope, limit, collected) {
43612
43618
  symbol: input.symbol,
43613
43619
  scope: input.path !== void 0 ? { path: input.path } : { dir: input.dir ?? "." },
43614
43620
  lang: input.lang ?? "inferred",
43615
- filesScanned: scope.files.length,
43621
+ // Files actually READ, not files intended to be read (#6038). The old
43622
+ // value was the size of the candidate set, so it corroborated a zero-match
43623
+ // answer that came from never opening anything.
43624
+ filesScanned: scope.files.length - collected.unreadable,
43616
43625
  totalMatches: collected.total,
43617
43626
  results: collected.results
43618
43627
  };
@@ -43621,7 +43630,7 @@ function buildOutput2(input, scope, limit, collected) {
43621
43630
  payload["omittedMatches"] = collected.total - collected.results.length;
43622
43631
  payload["limit"] = limit;
43623
43632
  }
43624
- applyScopeTruncation(payload, scope);
43633
+ applyScopeTruncation(payload, scope, collected.unreadable);
43625
43634
  return JSON.stringify(payload, null, 2);
43626
43635
  }
43627
43636
  async function searchUsagesHandler(args, ctx) {
@@ -43937,13 +43946,16 @@ function listJobsFromTaskState(customDir) {
43937
43946
  }
43938
43947
  return summaries;
43939
43948
  }
43940
- function resolveJobList(customDir) {
43941
- const sidecar = listJobs();
43949
+ function resolveJobListing(customDir) {
43950
+ const sidecar = listJobsWithDiagnostics();
43942
43951
  if (!isTaskStateJobSource()) return sidecar;
43943
43952
  const byId = /* @__PURE__ */ new Map();
43944
- for (const summary of sidecar) byId.set(summary.jobId, summary);
43953
+ for (const summary of sidecar.jobs) byId.set(summary.jobId, summary);
43945
43954
  for (const summary of listJobsFromTaskState(customDir)) byId.set(summary.jobId, summary);
43946
- return [...byId.values()].sort((a, b) => b.createdAt.localeCompare(a.createdAt));
43955
+ return {
43956
+ jobs: [...byId.values()].sort((a, b) => b.createdAt.localeCompare(a.createdAt)),
43957
+ diagnostics: sidecar.diagnostics
43958
+ };
43947
43959
  }
43948
43960
 
43949
43961
  // src/mcp/tools/get-job-result-tool.ts
@@ -44042,7 +44054,8 @@ function listJobsHandler(args) {
44042
44054
  );
44043
44055
  }
44044
44056
  const { toolName, status, limit } = parsed.data;
44045
- const all = resolveJobList();
44057
+ const listing = resolveJobListing();
44058
+ const all = listing.jobs;
44046
44059
  const filtered = all.filter((j) => {
44047
44060
  if (toolName !== void 0 && j.toolName !== toolName) return false;
44048
44061
  if (status !== void 0 && j.status !== status) return false;
@@ -44050,10 +44063,19 @@ function listJobsHandler(args) {
44050
44063
  });
44051
44064
  const cap = limit ?? MAX_LIST_JOBS_RESULTS;
44052
44065
  const trimmed = filtered.slice(0, cap);
44066
+ const { dirUnreadable, unparseableRecords } = listing.diagnostics;
44053
44067
  const response = {
44054
44068
  count: trimmed.length,
44055
44069
  truncated: filtered.length > trimmed.length,
44056
- jobs: trimmed
44070
+ jobs: trimmed,
44071
+ // #6038: `truncated` describes the LIMIT CAP only, so it positively
44072
+ // asserted completeness over a silently lossy read. `count: 0,
44073
+ // truncated: false` was returned for an unreadable jobs directory and for
44074
+ // sidecars that failed schema validation alike, and a caller without the
44075
+ // jobId has nothing to cross-check against. get_job_result already hardens
44076
+ // the single-job path with `found: false`; this is its list-shaped twin.
44077
+ ...dirUnreadable ? { jobsDirUnreadable: true } : {},
44078
+ ...unparseableRecords > 0 ? { unparseableRecords } : {}
44057
44079
  };
44058
44080
  return Promise.resolve(toolSuccess(JSON.stringify(response, null, 2)));
44059
44081
  }
@@ -46140,7 +46162,7 @@ function buildVotingInput(plan, config) {
46140
46162
  }
46141
46163
  async function executeSingleVote(plan, config, log) {
46142
46164
  try {
46143
- const { executeVoting } = await import("./consensus-vote-QQLNEPYL.js");
46165
+ const { executeVoting } = await import("./consensus-vote-777WYHSY.js");
46144
46166
  const input = buildVotingInput(plan, config);
46145
46167
  const result = await executeVoting(input, log);
46146
46168
  return parseVotingResult(result);
@@ -47935,7 +47957,7 @@ ${contextBlock}`;
47935
47957
  const strategy = config.votingStrategy ?? "higher_order";
47936
47958
  await postProgress(config, "Vote", `Running consensus with ${strategy} strategy...`);
47937
47959
  try {
47938
- const { executeVoting } = await import("./consensus-vote-QQLNEPYL.js");
47960
+ const { executeVoting } = await import("./consensus-vote-777WYHSY.js");
47939
47961
  const votingResult = await executeVoting(
47940
47962
  {
47941
47963
  proposal: buildVoteProposal(plan, research),
@@ -56676,4 +56698,4 @@ export {
56676
56698
  startPipelineEventBridge,
56677
56699
  shutdownPipelineEventBridge
56678
56700
  };
56679
- //# sourceMappingURL=chunk-3FKJFPCE.js.map
56701
+ //# sourceMappingURL=chunk-LBODVTW5.js.map