@skeletiq/mcp 0.6.0 → 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 +14 -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
|
|
@@ -1173,6 +1178,8 @@ var output = z3.object({
|
|
|
1173
1178
|
partial: refs,
|
|
1174
1179
|
elsewhere: refs,
|
|
1175
1180
|
unknown_ids: z3.array(z3.object({ id: z3.string(), suggestions: refs })),
|
|
1181
|
+
extra_components: z3.array(z3.looseObject({ name: z3.string() })),
|
|
1182
|
+
extra_connections: z3.array(z3.looseObject({ source: z3.string(), target: z3.string() })),
|
|
1176
1183
|
counts: z3.record(z3.string(), z3.number()),
|
|
1177
1184
|
evidence_checked: z3.boolean(),
|
|
1178
1185
|
unverified: refs,
|
|
@@ -1236,6 +1243,8 @@ function registerCheckDrift(server, client, resolver) {
|
|
|
1236
1243
|
id: entry.id,
|
|
1237
1244
|
suggestions: entry.suggestions ?? []
|
|
1238
1245
|
})),
|
|
1246
|
+
extra_components: report.extra_components,
|
|
1247
|
+
extra_connections: report.extra_connections,
|
|
1239
1248
|
counts: report.counts,
|
|
1240
1249
|
evidence_checked: report.evidence_checked === true,
|
|
1241
1250
|
unverified: report.unverified ?? [],
|
|
@@ -1451,6 +1460,7 @@ var input3 = z5.object({
|
|
|
1451
1460
|
});
|
|
1452
1461
|
var SCORE_BASIS_FINDINGS_ONLY = "findings_only";
|
|
1453
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.";
|
|
1454
1464
|
var output3 = z5.object({
|
|
1455
1465
|
architecture_score: z5.number(),
|
|
1456
1466
|
score_basis: z5.literal(SCORE_BASIS_FINDINGS_ONLY).describe(SCORE_BASIS_NOTE),
|
|
@@ -1533,7 +1543,7 @@ function registerCritique(server, client) {
|
|
|
1533
1543
|
// An agent that reads only the text has to see this too. Without it, "the app
|
|
1534
1544
|
// said 59 and the tool said 74" is an unexplained contradiction it will either
|
|
1535
1545
|
// resolve wrongly or report as a bug.
|
|
1536
|
-
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}`,
|
|
1537
1547
|
// Only when the exposure used is not the one the agent chose. When a
|
|
1538
1548
|
// non-public exposure *was* applied the server returns an
|
|
1539
1549
|
// `exposure_scoped_checks` finding naming exactly which checks it took off
|
|
@@ -1656,13 +1666,13 @@ function frameDetail(frame) {
|
|
|
1656
1666
|
var constraintsInput = z6.strictObject({
|
|
1657
1667
|
budget: z6.enum(["low", "medium", "high", "unlimited"]).optional(),
|
|
1658
1668
|
max_latency_ms: z6.number().int().positive().optional(),
|
|
1659
|
-
// 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
|
|
1660
1670
|
// frameworks; naming anything else is still worth doing, because an unassessed regime is
|
|
1661
1671
|
// recorded and reaches the design brief as a requirement the agent still has to satisfy.
|
|
1662
1672
|
// The old text read 'e.g. HIPAA, SOC2, PCI-DSS, GDPR' — it omitted SOX, which is the one
|
|
1663
1673
|
// an agent is least likely to guess, and said nothing about what happens to the rest.
|
|
1664
1674
|
compliance: z6.array(z6.string()).optional().describe(
|
|
1665
|
-
"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."
|
|
1666
1676
|
),
|
|
1667
1677
|
preferred_cloud: z6.enum(["aws", "gcp", "azure", "any"]).optional(),
|
|
1668
1678
|
preferred_technologies: z6.array(z6.string()).optional(),
|
package/package.json
CHANGED