@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.
- package/dist/index.js +27 -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
|
|
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.
|
|
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",
|