@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.
Files changed (2) hide show
  1. package/dist/index.js +10 -4
  2. 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.6.1";
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.` : critique.compliance_note ?? "Compliance was not assessed.",
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 five
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 SOX are checked against requirement catalogues; any other regime is recorded and carried into the design brief as a requirement to satisfy, rather than checked."
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skeletiq/mcp",
3
- "version": "0.6.1",
3
+ "version": "0.7.0",
4
4
  "description": "Design in SkeletIQ, build with your coding agent. MCP server for the SkeletIQ architecture platform.",
5
5
  "license": "MIT",
6
6
  "author": "Sabhahith Works Private Limited",