@taiga-ai/mcp-server 0.36.0-dev.833 → 0.36.0-dev.835

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 +27 -2
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -24908,7 +24908,7 @@ const HALT_CAUSES = {
24908
24908
  * reaped on a dead heartbeat, or found at 'planning' with no live job by the
24909
24909
  * reconciler, which fails it with that cause on the tick that notices
24910
24910
  * (`armPlanning` writes the status and creates the job in ONE transaction,
24911
- * so that shape is never a race). One of three halts that mirror
24911
+ * so that shape is never a race). One of four halts that mirror
24912
24912
  * `PLAN_FAILURE_CAUSES` one-to-one; see `PLAN_FAILURE_HALT`.
24913
24913
  */
24914
24914
  planning_stalled: {
@@ -24921,6 +24921,22 @@ const HALT_CAUSES = {
24921
24921
  "remove"
24922
24922
  ]
24923
24923
  },
24924
+ /**
24925
+ * The planner concluded nothing should be built (PRO-3941): a licence's
24926
+ * replacement where only build tools carry the licence and no maintained
24927
+ * package replaces them. Not a fault, so not `planning_failed`; its reason
24928
+ * is the detail, read off the planning job as a failure's is.
24929
+ */
24930
+ planning_declined: {
24931
+ message: "The plan recommends not building this, so the queue stopped here.",
24932
+ params: [],
24933
+ clearedWhen: "planning is retried, or a re-plan replaces it",
24934
+ exits: [
24935
+ "auto",
24936
+ "reorder",
24937
+ "remove"
24938
+ ]
24939
+ },
24924
24940
  /** The run errored out. */
24925
24941
  run_failed: {
24926
24942
  message: "The run failed, so the queue stopped here.",
@@ -28577,6 +28593,7 @@ function controlCoverageList(controls) {
28577
28593
  return [{
28578
28594
  controlId: control["controlId"],
28579
28595
  state: control["state"],
28596
+ planned: plannedFor(coverage),
28580
28597
  uncovered: coverage["uncovered"] === true,
28581
28598
  ...initiatives.length > 0 ? { initiatives: initiatives.map((item) => ({
28582
28599
  id: item["id"],
@@ -28586,6 +28603,14 @@ function controlCoverageList(controls) {
28586
28603
  }];
28587
28604
  });
28588
28605
  }
28606
+ /**
28607
+ * Whether the backlog plans a control: yes when a live initiative builds it, later when it deferred it with a
28608
+ * reason, no otherwise. A deferred control reads "planned later" rather than only "not assessed" (PRO-3860).
28609
+ */
28610
+ function plannedFor(coverage) {
28611
+ if (Array.isArray(coverage["initiatives"]) && coverage["initiatives"].length > 0) return "yes";
28612
+ return coverage["deferredReason"] ? "later" : "no";
28613
+ }
28589
28614
  /** The coverage, when the backlog answered for any control, for the default and full answers. */
28590
28615
  function controlCoveragePart(controls) {
28591
28616
  const coverage = controlCoverageList(controls);
@@ -28782,7 +28807,7 @@ function registerMaintenanceTools(server, client) {
28782
28807
  const own = violations.filter((violation) => String(violation["controlId"]).toUpperCase() === wanted);
28783
28808
  return toolResult({
28784
28809
  ...control,
28785
- ...control.state === "no_evidence" ? { meaning: "Not assessed: no finding or violation is recorded against it, and the documents were not found to show it met. That is no evidence either way, not a pass." } : {},
28810
+ ...control.state === "no_evidence" ? { meaning: (control.coverage && plannedFor(control.coverage) === "later" ? `Planned later: the backlog deferred it (${control.coverage.deferredReason}). ` : "") + "Not assessed: no finding or violation is recorded against it, and the documents were not found to show it met. That is no evidence either way, not a pass." } : {},
28786
28811
  ...control.coverage ? { coverageNote: "coverage is how the backlog plans for it: the live initiatives that build it, or why it is deferred. It says what is planned, not that the control is met." } : {},
28787
28812
  ...control.assessment == null && (control.state === "breached" || control.state === "diverged") ? { assessmentNote: "No met or not-applicable verdict is shown: an open finding or violation against the control outranks one." } : {},
28788
28813
  ...Number(control.findingCount ?? 0) > 0 ? { findingsNote: `${String(control.findingCount)} open scanner finding${control.findingCount === 1 ? "" : "s"} breach it; taiga_list_findings (productId) lists them with the controls each breaches. violations below are the documents' only.` } : {},
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@taiga-ai/mcp-server",
3
- "version": "0.36.0-dev.833",
3
+ "version": "0.36.0-dev.835",
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",