@pactosigna/mcp-server 0.1.10 → 0.1.11

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 +189 -134
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -21848,7 +21848,18 @@ var REQUIRED_SECTIONS = {
21848
21848
  audit_schedule: ["Scope", "Audit Criteria"],
21849
21849
  audit_report: ["Scope", "Methodology", "Findings", "Conclusion"],
21850
21850
  management_review: ["Review Inputs", "Review Outputs", "Action Items", "Decisions"],
21851
- hazard_category: ["Description", "Examples", "Applicable Standards"]
21851
+ hazard_category: ["Description", "Examples", "Applicable Standards"],
21852
+ software_risk: ["Harm Assessment"],
21853
+ security_risk: ["Harm Assessment"],
21854
+ usability_risk: ["Harm Assessment"],
21855
+ haz_soe_software: ["Intended Function", "Failure Cause", "Failure Mode", "Failure Effect"],
21856
+ haz_soe_security: [
21857
+ "STRIDE Category & Threat",
21858
+ "Asset",
21859
+ "Vulnerability",
21860
+ "Actor & Attack Vector",
21861
+ "Adverse Impact"
21862
+ ]
21852
21863
  };
21853
21864
  var MemberPermissionsSchema = external_exports.object({
21854
21865
  canSign: external_exports.boolean(),
@@ -22124,6 +22135,114 @@ var ListActionsResponseSchema = external_exports.object({
22124
22135
  limit: external_exports.number(),
22125
22136
  hasMore: external_exports.boolean()
22126
22137
  });
22138
+ var CapaStatusSchema = external_exports.enum(CAPA_STATUSES);
22139
+ var CapaClassificationSchema = external_exports.enum(CAPA_CLASSIFICATIONS);
22140
+ var CapaPrioritySchema = external_exports.enum(CAPA_PRIORITIES);
22141
+ var CapaSourceTypeSchema = external_exports.enum(CAPA_SOURCE_TYPES);
22142
+ var CapaActionStatusSchema = external_exports.enum(CAPA_ACTION_STATUSES);
22143
+ var QmsCapaParamSchema = external_exports.object({
22144
+ orgId: external_exports.string().min(1),
22145
+ qmsId: external_exports.string().min(1)
22146
+ });
22147
+ var CapaIdParamSchema = external_exports.object({
22148
+ orgId: external_exports.string().min(1),
22149
+ qmsId: external_exports.string().min(1),
22150
+ capaId: external_exports.string().min(1)
22151
+ });
22152
+ var CapaActionIdParamSchema = external_exports.object({
22153
+ orgId: external_exports.string().min(1),
22154
+ qmsId: external_exports.string().min(1),
22155
+ capaId: external_exports.string().min(1),
22156
+ actionId: external_exports.string().min(1)
22157
+ });
22158
+ var CreateCapaRequestSchema = external_exports.object({
22159
+ classification: CapaClassificationSchema,
22160
+ priority: CapaPrioritySchema,
22161
+ title: external_exports.string().min(1).max(200),
22162
+ description: external_exports.string().min(1).max(5e3),
22163
+ sourceType: CapaSourceTypeSchema,
22164
+ sourceDescription: external_exports.string().min(1).max(2e3),
22165
+ sourceId: external_exports.string().max(200).optional(),
22166
+ dueDate: external_exports.string().datetime().optional(),
22167
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).default([]),
22168
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).default([])
22169
+ });
22170
+ var UpdateCapaRequestSchema = external_exports.object({
22171
+ title: external_exports.string().min(1).max(200).optional(),
22172
+ description: external_exports.string().min(1).max(5e3).optional(),
22173
+ priority: CapaPrioritySchema.optional(),
22174
+ rootCauseDescription: external_exports.string().max(5e3).optional(),
22175
+ verificationDescription: external_exports.string().max(5e3).optional(),
22176
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).optional(),
22177
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).optional(),
22178
+ dueDate: external_exports.string().datetime().nullable().optional()
22179
+ });
22180
+ var CloseCapaRequestSchema = external_exports.object({
22181
+ signatureId: external_exports.string().min(1)
22182
+ });
22183
+ var AddCapaActionRequestSchema = external_exports.object({
22184
+ description: external_exports.string().min(1).max(2e3),
22185
+ assigneeId: external_exports.string().min(1),
22186
+ dueDate: external_exports.string().datetime(),
22187
+ notes: external_exports.string().max(2e3).optional()
22188
+ });
22189
+ var UpdateCapaActionRequestSchema = external_exports.object({
22190
+ description: external_exports.string().min(1).max(2e3).optional(),
22191
+ assigneeId: external_exports.string().min(1).optional(),
22192
+ dueDate: external_exports.string().datetime().optional(),
22193
+ status: CapaActionStatusSchema.optional(),
22194
+ notes: external_exports.string().max(2e3).optional()
22195
+ });
22196
+ var CapaListQuerySchema = PaginationParamsSchema.extend({
22197
+ status: CapaStatusSchema.optional(),
22198
+ classification: CapaClassificationSchema.optional(),
22199
+ priority: CapaPrioritySchema.optional()
22200
+ });
22201
+ var CapaActionResponseSchema = external_exports.object({
22202
+ id: external_exports.string(),
22203
+ description: external_exports.string(),
22204
+ assigneeId: external_exports.string(),
22205
+ assigneeEmail: external_exports.string(),
22206
+ dueDate: external_exports.string(),
22207
+ status: CapaActionStatusSchema,
22208
+ completedAt: external_exports.string().optional(),
22209
+ notes: external_exports.string().optional()
22210
+ });
22211
+ var CapaResponseSchema = external_exports.object({
22212
+ id: external_exports.string(),
22213
+ qmsId: external_exports.string(),
22214
+ organizationId: external_exports.string(),
22215
+ capaNumber: external_exports.string(),
22216
+ classification: CapaClassificationSchema,
22217
+ priority: CapaPrioritySchema,
22218
+ title: external_exports.string(),
22219
+ description: external_exports.string(),
22220
+ sourceType: CapaSourceTypeSchema,
22221
+ sourceId: external_exports.string().optional(),
22222
+ sourceDescription: external_exports.string(),
22223
+ rootCauseDescription: external_exports.string().optional(),
22224
+ verificationDescription: external_exports.string().optional(),
22225
+ affectedDocumentIds: external_exports.array(external_exports.string()),
22226
+ affectedDeviceIds: external_exports.array(external_exports.string()),
22227
+ actions: external_exports.array(CapaActionResponseSchema),
22228
+ status: CapaStatusSchema,
22229
+ createdAt: external_exports.string(),
22230
+ createdBy: external_exports.string(),
22231
+ investigationStartedAt: external_exports.string().optional(),
22232
+ implementationStartedAt: external_exports.string().optional(),
22233
+ verificationStartedAt: external_exports.string().optional(),
22234
+ closedAt: external_exports.string().optional(),
22235
+ closedBy: external_exports.string().optional(),
22236
+ cancelledAt: external_exports.string().optional(),
22237
+ cancelledBy: external_exports.string().optional(),
22238
+ dueDate: external_exports.string().optional()
22239
+ });
22240
+ var CapaListResponseSchema = external_exports.object({
22241
+ items: external_exports.array(CapaResponseSchema),
22242
+ total: external_exports.number(),
22243
+ limit: external_exports.number(),
22244
+ offset: external_exports.number()
22245
+ });
22127
22246
  var ComplaintStatusSchema = external_exports.enum(COMPLAINT_STATUSES);
22128
22247
  var ComplaintSeveritySchema = external_exports.enum(COMPLAINT_SEVERITIES);
22129
22248
  var ComplaintCategorySchema = external_exports.enum(COMPLAINT_CATEGORIES);
@@ -22347,114 +22466,6 @@ var RequestDCOExportResponseSchema = external_exports.object({
22347
22466
  message: external_exports.string(),
22348
22467
  estimatedMinutes: external_exports.number()
22349
22468
  });
22350
- var CapaStatusSchema = external_exports.enum(CAPA_STATUSES);
22351
- var CapaClassificationSchema = external_exports.enum(CAPA_CLASSIFICATIONS);
22352
- var CapaPrioritySchema = external_exports.enum(CAPA_PRIORITIES);
22353
- var CapaSourceTypeSchema = external_exports.enum(CAPA_SOURCE_TYPES);
22354
- var CapaActionStatusSchema = external_exports.enum(CAPA_ACTION_STATUSES);
22355
- var QmsCapaParamSchema = external_exports.object({
22356
- orgId: external_exports.string().min(1),
22357
- qmsId: external_exports.string().min(1)
22358
- });
22359
- var CapaIdParamSchema = external_exports.object({
22360
- orgId: external_exports.string().min(1),
22361
- qmsId: external_exports.string().min(1),
22362
- capaId: external_exports.string().min(1)
22363
- });
22364
- var CapaActionIdParamSchema = external_exports.object({
22365
- orgId: external_exports.string().min(1),
22366
- qmsId: external_exports.string().min(1),
22367
- capaId: external_exports.string().min(1),
22368
- actionId: external_exports.string().min(1)
22369
- });
22370
- var CreateCapaRequestSchema = external_exports.object({
22371
- classification: CapaClassificationSchema,
22372
- priority: CapaPrioritySchema,
22373
- title: external_exports.string().min(1).max(200),
22374
- description: external_exports.string().min(1).max(5e3),
22375
- sourceType: CapaSourceTypeSchema,
22376
- sourceDescription: external_exports.string().min(1).max(2e3),
22377
- sourceId: external_exports.string().max(200).optional(),
22378
- dueDate: external_exports.string().datetime().optional(),
22379
- affectedDocumentIds: external_exports.array(external_exports.string().min(1)).default([]),
22380
- affectedDeviceIds: external_exports.array(external_exports.string().min(1)).default([])
22381
- });
22382
- var UpdateCapaRequestSchema = external_exports.object({
22383
- title: external_exports.string().min(1).max(200).optional(),
22384
- description: external_exports.string().min(1).max(5e3).optional(),
22385
- priority: CapaPrioritySchema.optional(),
22386
- rootCauseDescription: external_exports.string().max(5e3).optional(),
22387
- verificationDescription: external_exports.string().max(5e3).optional(),
22388
- affectedDocumentIds: external_exports.array(external_exports.string().min(1)).optional(),
22389
- affectedDeviceIds: external_exports.array(external_exports.string().min(1)).optional(),
22390
- dueDate: external_exports.string().datetime().nullable().optional()
22391
- });
22392
- var CloseCapaRequestSchema = external_exports.object({
22393
- signatureId: external_exports.string().min(1)
22394
- });
22395
- var AddCapaActionRequestSchema = external_exports.object({
22396
- description: external_exports.string().min(1).max(2e3),
22397
- assigneeId: external_exports.string().min(1),
22398
- dueDate: external_exports.string().datetime(),
22399
- notes: external_exports.string().max(2e3).optional()
22400
- });
22401
- var UpdateCapaActionRequestSchema = external_exports.object({
22402
- description: external_exports.string().min(1).max(2e3).optional(),
22403
- assigneeId: external_exports.string().min(1).optional(),
22404
- dueDate: external_exports.string().datetime().optional(),
22405
- status: CapaActionStatusSchema.optional(),
22406
- notes: external_exports.string().max(2e3).optional()
22407
- });
22408
- var CapaListQuerySchema = PaginationParamsSchema.extend({
22409
- status: CapaStatusSchema.optional(),
22410
- classification: CapaClassificationSchema.optional(),
22411
- priority: CapaPrioritySchema.optional()
22412
- });
22413
- var CapaActionResponseSchema = external_exports.object({
22414
- id: external_exports.string(),
22415
- description: external_exports.string(),
22416
- assigneeId: external_exports.string(),
22417
- assigneeEmail: external_exports.string(),
22418
- dueDate: external_exports.string(),
22419
- status: CapaActionStatusSchema,
22420
- completedAt: external_exports.string().optional(),
22421
- notes: external_exports.string().optional()
22422
- });
22423
- var CapaResponseSchema = external_exports.object({
22424
- id: external_exports.string(),
22425
- qmsId: external_exports.string(),
22426
- organizationId: external_exports.string(),
22427
- capaNumber: external_exports.string(),
22428
- classification: CapaClassificationSchema,
22429
- priority: CapaPrioritySchema,
22430
- title: external_exports.string(),
22431
- description: external_exports.string(),
22432
- sourceType: CapaSourceTypeSchema,
22433
- sourceId: external_exports.string().optional(),
22434
- sourceDescription: external_exports.string(),
22435
- rootCauseDescription: external_exports.string().optional(),
22436
- verificationDescription: external_exports.string().optional(),
22437
- affectedDocumentIds: external_exports.array(external_exports.string()),
22438
- affectedDeviceIds: external_exports.array(external_exports.string()),
22439
- actions: external_exports.array(CapaActionResponseSchema),
22440
- status: CapaStatusSchema,
22441
- createdAt: external_exports.string(),
22442
- createdBy: external_exports.string(),
22443
- investigationStartedAt: external_exports.string().optional(),
22444
- implementationStartedAt: external_exports.string().optional(),
22445
- verificationStartedAt: external_exports.string().optional(),
22446
- closedAt: external_exports.string().optional(),
22447
- closedBy: external_exports.string().optional(),
22448
- cancelledAt: external_exports.string().optional(),
22449
- cancelledBy: external_exports.string().optional(),
22450
- dueDate: external_exports.string().optional()
22451
- });
22452
- var CapaListResponseSchema = external_exports.object({
22453
- items: external_exports.array(CapaResponseSchema),
22454
- total: external_exports.number(),
22455
- limit: external_exports.number(),
22456
- offset: external_exports.number()
22457
- });
22458
22469
  var RegulatoryFrameworkSchema = external_exports.enum([
22459
22470
  "ISO_13485",
22460
22471
  "IEC_62304",
@@ -22555,11 +22566,12 @@ var RiskDocumentStatusSchema = external_exports.enum([
22555
22566
  "archived",
22556
22567
  "example"
22557
22568
  ]);
22558
- var MitigationTargetSchema = external_exports.enum([
22559
- "sequence_probability",
22560
- "harm_probability",
22561
- "severity"
22569
+ var IsoCategorySchema = external_exports.enum([
22570
+ "safe_design",
22571
+ "protective_measure",
22572
+ "safety_information"
22562
22573
  ]);
22574
+ var ReducesTargetSchema = external_exports.enum(["p1_sequence", "p2_harm", "severity"]);
22563
22575
  var RiskGapCodeSchema = external_exports.enum([
22564
22576
  "hazard_no_situation",
22565
22577
  "situation_no_harm",
@@ -22577,13 +22589,19 @@ var RiskGapCodeSchema = external_exports.enum([
22577
22589
  "architecture_no_parent",
22578
22590
  "haz_missing_category",
22579
22591
  "haz_invalid_category",
22580
- "category_not_approved"
22592
+ "category_not_approved",
22593
+ "missing_iso_category",
22594
+ "missing_risk_acceptable",
22595
+ "unacceptable_no_benefit",
22596
+ "preliminary_not_analyzed",
22597
+ "missing_body_rationale",
22598
+ "orphaned_body_section"
22581
22599
  ]);
22582
22600
  var RiskGapSeveritySchema = external_exports.enum(["error", "warning"]);
22583
22601
  var MitigationSchema = external_exports.object({
22584
22602
  control: external_exports.string().min(1),
22585
- reduces: MitigationTargetSchema,
22586
- for_harm: external_exports.string().optional()
22603
+ iso_category: IsoCategorySchema,
22604
+ reduces: ReducesTargetSchema
22587
22605
  });
22588
22606
  var HarmAssessmentSchema = external_exports.object({
22589
22607
  harm: external_exports.string().min(1),
@@ -22591,48 +22609,80 @@ var HarmAssessmentSchema = external_exports.object({
22591
22609
  inherent_exploitability: external_exports.number().int().min(1).max(5).optional(),
22592
22610
  residual_probability: external_exports.number().int().min(1).max(5).optional(),
22593
22611
  residual_exploitability: external_exports.number().int().min(1).max(5).optional(),
22594
- residual_severity_override: external_exports.number().int().min(1).max(5).optional()
22612
+ harm_severity_override: external_exports.number().int().min(1).max(5).optional(),
22613
+ risk_acceptable: external_exports.boolean(),
22614
+ benefit_outweighs_risk: external_exports.boolean().optional()
22615
+ });
22616
+ var HazardousSituationAssessmentSchema = external_exports.object({
22617
+ hazardous_situation: external_exports.string().min(1),
22618
+ mitigations: external_exports.array(MitigationSchema).optional(),
22619
+ harms: external_exports.array(HarmAssessmentSchema).min(1)
22595
22620
  });
22596
22621
  var RiskEntryFrontmatterSchema = external_exports.object({
22597
22622
  type: external_exports.enum(["software_risk", "usability_risk", "security_risk"]),
22598
22623
  id: external_exports.string().min(1),
22599
22624
  title: external_exports.string().min(1),
22600
22625
  status: RiskDocumentStatusSchema,
22626
+ author: external_exports.string().min(1),
22627
+ reviewers: external_exports.array(external_exports.string()).optional(),
22628
+ approvers: external_exports.array(external_exports.string()).optional(),
22601
22629
  analyzes: external_exports.string().min(1),
22602
- hazardous_situation: external_exports.string().min(1),
22603
- harm_assessments: external_exports.array(HarmAssessmentSchema).min(1),
22604
22630
  mitigations: external_exports.array(MitigationSchema).optional(),
22631
+ hazardous_situation_assessments: external_exports.array(HazardousSituationAssessmentSchema).min(1),
22605
22632
  cvss_score: external_exports.number().min(0).max(10).optional(),
22606
22633
  cvss_vector: external_exports.string().regex(
22607
22634
  /^CVSS:3\.[01]\/AV:[NALP]\/AC:[LH]\/PR:[NLH]\/UI:[NR]\/S:[UC]\/C:[NLH]\/I:[NLH]\/A:[NLH]$/
22608
22635
  ).optional()
22609
22636
  }).refine(
22610
22637
  (data) => {
22638
+ const allHarms = data.hazardous_situation_assessments.flatMap((hsa) => hsa.harms);
22611
22639
  if (data.type === "security_risk") {
22612
- return data.harm_assessments.every((ha) => ha.inherent_exploitability != null);
22640
+ return allHarms.every((ha) => ha.inherent_exploitability != null);
22613
22641
  }
22614
- return data.harm_assessments.every((ha) => ha.inherent_probability != null);
22642
+ return allHarms.every((ha) => ha.inherent_probability != null);
22615
22643
  },
22616
22644
  {
22617
22645
  message: "Security risks must use inherent_exploitability; software/usability risks must use inherent_probability"
22618
22646
  }
22647
+ ).refine(
22648
+ (data) => {
22649
+ const allHarms = data.hazardous_situation_assessments.flatMap((hsa) => hsa.harms);
22650
+ return allHarms.every((ha) => ha.risk_acceptable || ha.benefit_outweighs_risk != null);
22651
+ },
22652
+ {
22653
+ message: "benefit_outweighs_risk required when risk_acceptable is false"
22654
+ }
22619
22655
  );
22620
- var HazardFrontmatterSchema = external_exports.object({
22621
- type: external_exports.enum(["haz_soe_software", "haz_soe_security"]),
22656
+ var HazardSoftwareFrontmatterSchema = external_exports.object({
22657
+ type: external_exports.literal("haz_soe_software"),
22658
+ id: external_exports.string().min(1),
22659
+ title: external_exports.string().min(1),
22660
+ status: RiskDocumentStatusSchema,
22661
+ author: external_exports.string().min(1),
22662
+ reviewers: external_exports.array(external_exports.string()).optional(),
22663
+ approvers: external_exports.array(external_exports.string()).optional(),
22664
+ preliminary: external_exports.boolean().default(false),
22665
+ leads_to: external_exports.array(external_exports.string()).optional(),
22666
+ hazard_category: external_exports.string().optional(),
22667
+ detection_score: external_exports.number().int().min(1).max(5).optional(),
22668
+ detection_method: external_exports.string().optional()
22669
+ });
22670
+ var HazardSecurityFrontmatterSchema = external_exports.object({
22671
+ type: external_exports.literal("haz_soe_security"),
22622
22672
  id: external_exports.string().min(1),
22623
22673
  title: external_exports.string().min(1),
22624
22674
  status: RiskDocumentStatusSchema,
22675
+ author: external_exports.string().min(1),
22676
+ reviewers: external_exports.array(external_exports.string()).optional(),
22677
+ approvers: external_exports.array(external_exports.string()).optional(),
22678
+ preliminary: external_exports.boolean().default(false),
22625
22679
  leads_to: external_exports.array(external_exports.string()).optional(),
22626
- // sFMEA fields
22627
- failure_mode: external_exports.string().optional(),
22628
- cause: external_exports.string().optional(),
22629
- detection_method: external_exports.string().optional(),
22630
- // STRIDE fields
22631
- threat_category: external_exports.string().optional(),
22632
- attack_vector: external_exports.string().optional(),
22633
- // Hazard category reference (HC-xxx)
22634
22680
  hazard_category: external_exports.string().optional()
22635
22681
  });
22682
+ var HazardFrontmatterSchema = external_exports.discriminatedUnion("type", [
22683
+ HazardSoftwareFrontmatterSchema,
22684
+ HazardSecurityFrontmatterSchema
22685
+ ]);
22636
22686
  var HazardCategoryFrontmatterSchema = external_exports.object({
22637
22687
  type: external_exports.literal("hazard_category"),
22638
22688
  id: external_exports.string().min(1),
@@ -24080,10 +24130,13 @@ var HarmAssessmentEntrySchema = external_exports.object({
24080
24130
  harmSeverity: RiskValueSchema,
24081
24131
  inherentProbability: RiskValueSchema,
24082
24132
  residualProbability: RiskValueSchema,
24083
- residualSeverityOverride: RiskValueSchema.optional(),
24133
+ harmSeverityOverride: RiskValueSchema.optional(),
24084
24134
  residualSeverity: RiskValueSchema,
24085
24135
  inherentAcceptability: AcceptabilityStatusSchema,
24086
- residualAcceptability: AcceptabilityStatusSchema
24136
+ residualAcceptability: AcceptabilityStatusSchema,
24137
+ riskAcceptable: external_exports.boolean(),
24138
+ benefitOutweighsRisk: external_exports.boolean().optional(),
24139
+ hazardousSituation: external_exports.string().optional()
24087
24140
  });
24088
24141
  var RiskEntrySchema = external_exports.object({
24089
24142
  id: external_exports.string(),
@@ -24137,6 +24190,8 @@ var RiskListItemSchema = external_exports.object({
24137
24190
  worstResidualProbability: RiskValueSchema.optional(),
24138
24191
  worstAcceptability: AcceptabilityStatusSchema.optional(),
24139
24192
  mitigationsCount: external_exports.number().int().min(0),
24193
+ topLevelMitigationsCount: external_exports.number().int().min(0),
24194
+ perHsMitigationsCount: external_exports.number().int().min(0),
24140
24195
  hasRiskBenefit: external_exports.boolean(),
24141
24196
  cvssScore: external_exports.number().min(0).max(10).optional(),
24142
24197
  cvssVector: external_exports.string().optional()
@@ -25781,7 +25836,7 @@ var client = new PactoSignaApiClient({
25781
25836
  apiKey: PACTOSIGNA_API_KEY
25782
25837
  });
25783
25838
  var server = new Server(
25784
- { name: "pactosigna", version: "0.1.10" },
25839
+ { name: "pactosigna", version: "0.1.11" },
25785
25840
  { capabilities: { tools: {} } }
25786
25841
  );
25787
25842
  server.setRequestHandler(ListToolsRequestSchema, async () => ({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pactosigna/mcp-server",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "type": "module",
5
5
  "description": "MCP server for PactoSigna QMS — connects Claude Desktop, Cursor, and other AI tools to your quality management system",
6
6
  "bin": {