@taiga-ai/mcp-server 0.36.0-dev.919 → 0.36.0-dev.921

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 (2) hide show
  1. package/dist/index.js +23 -1
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -26346,8 +26346,19 @@ function isFixableFinding(finding) {
26346
26346
  return typeof finding.baseMove === "boolean" ? finding.baseMove : baseImageMoveRemoves(finding.data);
26347
26347
  }
26348
26348
  if (finding.kind === "vulnerable_dependency" && isMaliciousPackageFinding(finding)) return true;
26349
+ if (isPinBlocked(finding)) return false;
26349
26350
  return isCodeRemediationKind(finding.kind) || !!finding.recommendedVersion;
26350
26351
  }
26352
+ /**
26353
+ * Whether a Fix cannot work: another package's pin caps this finding's fix, and
26354
+ * the last fix ended still vulnerable against it (`opentelemetry-api` under
26355
+ * `aws-opentelemetry-distro`'s `==1.44.0`). Another would spend a run to meet
26356
+ * it again. Blocked with no such fix, a person's Fix still runs (AC-17): they
26357
+ * may know a way round. The gate lifts the hold when the pin moves.
26358
+ */
26359
+ function isPinBlocked(finding) {
26360
+ return finding.autoFixHeld?.reason === "blocked_by_dependency" && finding.autoFixHeld.fixFailed === true;
26361
+ }
26351
26362
  function baseImageMoveRemoves(data) {
26352
26363
  const baseImage = typeof data === "object" && data !== null ? data.baseImage : null;
26353
26364
  const bases = typeof baseImage === "object" && baseImage !== null ? baseImage.bases : null;
@@ -28781,7 +28792,7 @@ function withFixability(row) {
28781
28792
  return {
28782
28793
  ...row,
28783
28794
  fixable: false,
28784
- fixNote: reason === "not_shipped" ? "No longer applies: the package is only a build for platforms the repository does not deploy to. Nothing to do." : reason === "license_approved" ? "No longer applies: its license is on the organization's approved list. Nothing to do." : reason === "license_undecided" ? "No longer applies: its license can no longer be judged against the list (some of what it can stand for is approved). Nothing to do." : reason === "superseded" ? "Replaced by the repository's finding of its license, which lists every package under it. Nothing to do here." : "Resolved: the sweep no longer reports it. Nothing to do."
28795
+ fixNote: reason === "not_shipped" ? "No longer applies: the package is only a build for platforms the repository does not deploy to. Nothing to do." : reason === "license_approved" ? "No longer applies: its license is on the organization's approved list. Nothing to do." : reason === "license_undecided" ? "No longer applies: its license can no longer be judged against the list (some of what it can stand for is approved). Nothing to do." : reason === "superseded" ? "Replaced by the repository's finding of its license, which lists every package under it. Nothing to do here." : reason === "license_not_judged" ? "No longer applies: an OS package's license is judged only when it restricts use. Its packages keep it. Nothing to do." : "Resolved: the sweep no longer reports it. Nothing to do."
28785
28796
  };
28786
28797
  }
28787
28798
  if (row["kind"] === "license_violation" && row["replaceable"] === true) return {
@@ -28820,6 +28831,16 @@ function withFixability(row) {
28820
28831
  fixable: true,
28821
28832
  fixNote: "A malicious package: taiga_fix_finding removes it (or replaces it), with every advisory on that version."
28822
28833
  } : row;
28834
+ const held = row["autoFixHeld"];
28835
+ const inBase = row["baseImageFix"] != null || typeof row["baseMove"] === "boolean";
28836
+ if (row["status"] === "open" && !inBase && held && isPinBlocked({ autoFixHeld: held })) {
28837
+ const what = held.blockingPackage ?? "another dependency";
28838
+ return {
28839
+ ...row,
28840
+ fixable: false,
28841
+ fixNote: `Waiting on ${what}${held.blockingConstraint ? `, which requires ${held.blockingConstraint}` : ""}. taiga_fix_finding refuses it until that moves.`
28842
+ };
28843
+ }
28823
28844
  const base = row["baseImageFix"];
28824
28845
  if (base && base.way !== "move" && isAgentRemediable({ remediableBy: remediableByOf(row) })) {
28825
28846
  if (base.way === "upgrade") return row["status"] === "open" ? {
@@ -31381,6 +31402,7 @@ function registerBuildTools(server, client) {
31381
31402
  }
31382
31403
  /** What happened to a request that steers a run (PRO-3161), in one sentence. */
31383
31404
  function steerSituation(steer) {
31405
+ if (steer === "sent") return "The run takes it as an instruction while it keeps working.";
31384
31406
  if (steer === "replanning") return "The run has paused and its plan is being revised for the request.";
31385
31407
  if (steer === "after_step") return "The run stops when the step it is building ends, then its plan is revised.";
31386
31408
  if (steer === "after_round") return "The run is answering review comments or fixing CI; the request is planned when that round ends, and no further automatic round starts while it is open.";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ai/mcp-server",
3
- "version": "0.36.0-dev.919",
3
+ "version": "0.36.0-dev.921",
4
4
  "description": "Taiga for AI coding assistants: read products, policies, initiatives and runs, and operate the line, over MCP",
5
5
  "mcpName": "ga.tai/mcp-server",
6
6
  "license": "UNLICENSED",