@skeletiq/mcp 0.6.1 → 0.7.0
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 +10 -4
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { serveStdio } from "@modelcontextprotocol/server/stdio";
|
|
|
5
5
|
|
|
6
6
|
// src/config.ts
|
|
7
7
|
var SERVER_NAME = "skeletiq";
|
|
8
|
-
var SERVER_VERSION = "0.
|
|
8
|
+
var SERVER_VERSION = "0.7.0";
|
|
9
9
|
var AGENT_SCHEMA_VERSION = 2;
|
|
10
10
|
function schemaNote(serverVersion) {
|
|
11
11
|
if (serverVersion === void 0 || serverVersion <= AGENT_SCHEMA_VERSION) return null;
|
|
@@ -625,6 +625,11 @@ var CritiqueFindingSchema = z.looseObject({
|
|
|
625
625
|
remediation: z.string().optional(),
|
|
626
626
|
/** Reported in full and never charged against the score — advice, not a problem to fix. */
|
|
627
627
|
advisory_only: z.boolean().optional(),
|
|
628
|
+
/**
|
|
629
|
+
* Whether this finding can hold a design back from Ready. Absent or null means not stated, and
|
|
630
|
+
* the standing Ready rule applies to it.
|
|
631
|
+
*/
|
|
632
|
+
holds_ready: z.boolean().nullable().optional(),
|
|
628
633
|
/**
|
|
629
634
|
* The problem this finding is about. Stable across rewording, and shared with the advisor
|
|
630
635
|
* suggestion and decision record raised by the same problem — the key a dismissal is recorded
|
|
@@ -1455,6 +1460,7 @@ var input3 = z5.object({
|
|
|
1455
1460
|
});
|
|
1456
1461
|
var SCORE_BASIS_FINDINGS_ONLY = "findings_only";
|
|
1457
1462
|
var SCORE_BASIS_NOTE = "This score is findings only. It is not held to a traceability ceiling, because this tool is given a design and no requirement set to trace it against. The app can show a lower number for the same stored design for exactly that reason.";
|
|
1463
|
+
var COMPLIANCE_INDICATIVE_NOTE = "Indicative automated check based on architecture structure \u2014 not a certified compliance audit or legal advice.";
|
|
1458
1464
|
var output3 = z5.object({
|
|
1459
1465
|
architecture_score: z5.number(),
|
|
1460
1466
|
score_basis: z5.literal(SCORE_BASIS_FINDINGS_ONLY).describe(SCORE_BASIS_NOTE),
|
|
@@ -1537,7 +1543,7 @@ function registerCritique(server, client) {
|
|
|
1537
1543
|
// An agent that reads only the text has to see this too. Without it, "the app
|
|
1538
1544
|
// said 59 and the tool said 74" is an unexplained contradiction it will either
|
|
1539
1545
|
// resolve wrongly or report as a bug.
|
|
1540
|
-
complianceAssessed ? `Compliance checked against ${(critique.frameworks_checked ?? []).join(", ")} \u2014 the frameworks systems in this domain are usually held to, inferred from the domain you sent rather than from a regime anyone named. Confirm them
|
|
1546
|
+
complianceAssessed ? `Compliance checked against ${(critique.frameworks_checked ?? []).join(", ")} \u2014 the frameworks systems in this domain are usually held to, inferred from the domain you sent rather than from a regime anyone named. Confirm them. ` + COMPLIANCE_INDICATIVE_NOTE : `${critique.compliance_note ?? "Compliance was not assessed."} ${COMPLIANCE_INDICATIVE_NOTE}`,
|
|
1541
1547
|
// Only when the exposure used is not the one the agent chose. When a
|
|
1542
1548
|
// non-public exposure *was* applied the server returns an
|
|
1543
1549
|
// `exposure_scoped_checks` finding naming exactly which checks it took off
|
|
@@ -1660,13 +1666,13 @@ function frameDetail(frame) {
|
|
|
1660
1666
|
var constraintsInput = z6.strictObject({
|
|
1661
1667
|
budget: z6.enum(["low", "medium", "high", "unlimited"]).optional(),
|
|
1662
1668
|
max_latency_ms: z6.number().int().positive().optional(),
|
|
1663
|
-
// Free strings, not an enum, and the description has to say why. SkeletIQ assesses
|
|
1669
|
+
// Free strings, not an enum, and the description has to say why. SkeletIQ assesses six
|
|
1664
1670
|
// frameworks; naming anything else is still worth doing, because an unassessed regime is
|
|
1665
1671
|
// recorded and reaches the design brief as a requirement the agent still has to satisfy.
|
|
1666
1672
|
// The old text read 'e.g. HIPAA, SOC2, PCI-DSS, GDPR' — it omitted SOX, which is the one
|
|
1667
1673
|
// an agent is least likely to guess, and said nothing about what happens to the rest.
|
|
1668
1674
|
compliance: z6.array(z6.string()).optional().describe(
|
|
1669
|
-
"Regimes the design must satisfy. SOC2, HIPAA, PCI-DSS, GDPR and
|
|
1675
|
+
"Regimes the design must satisfy. SOC2, HIPAA, PCI-DSS, GDPR, SOX and DPDP (India) are checked against requirement catalogues; any other regime is recorded and carried into the design brief as a requirement to satisfy, rather than checked."
|
|
1670
1676
|
),
|
|
1671
1677
|
preferred_cloud: z6.enum(["aws", "gcp", "azure", "any"]).optional(),
|
|
1672
1678
|
preferred_technologies: z6.array(z6.string()).optional(),
|
package/package.json
CHANGED