@pactosigna/mcp-server 0.1.10 → 0.1.12
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 +264 -150
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -21840,15 +21840,27 @@ var LINK_TYPES = {
|
|
|
21840
21840
|
analyzes: "Analyzes"
|
|
21841
21841
|
};
|
|
21842
21842
|
var REQUIRED_SECTIONS = {
|
|
21843
|
-
user_need: ["
|
|
21844
|
-
architecture: ["Purpose"],
|
|
21843
|
+
user_need: ["User Story", "Validation Criteria"],
|
|
21844
|
+
architecture: ["Purpose", "Architecture Overview", "Interfaces"],
|
|
21845
|
+
detailed_design: ["Purpose", "Detailed Design", "Interfaces"],
|
|
21845
21846
|
release_plan: ["Scope", "Applicable Plans", "Release-Specific Criteria", "Known Anomalies"],
|
|
21846
21847
|
design_review: ["Review Scope", "Attendees", "Findings", "Actions", "Conclusion"],
|
|
21847
21848
|
release_notes: ["Changes", "Known Issues"],
|
|
21848
21849
|
audit_schedule: ["Scope", "Audit Criteria"],
|
|
21849
21850
|
audit_report: ["Scope", "Methodology", "Findings", "Conclusion"],
|
|
21850
21851
|
management_review: ["Review Inputs", "Review Outputs", "Action Items", "Decisions"],
|
|
21851
|
-
hazard_category: ["Description", "Examples", "Applicable Standards"]
|
|
21852
|
+
hazard_category: ["Description", "Examples", "Applicable Standards"],
|
|
21853
|
+
software_risk: ["Harm Assessment"],
|
|
21854
|
+
security_risk: ["Harm Assessment"],
|
|
21855
|
+
usability_risk: ["Harm Assessment"],
|
|
21856
|
+
haz_soe_software: ["Intended Function", "Failure Cause", "Failure Mode", "Failure Effect"],
|
|
21857
|
+
haz_soe_security: [
|
|
21858
|
+
"STRIDE Category & Threat",
|
|
21859
|
+
"Asset",
|
|
21860
|
+
"Vulnerability",
|
|
21861
|
+
"Actor & Attack Vector",
|
|
21862
|
+
"Adverse Impact"
|
|
21863
|
+
]
|
|
21852
21864
|
};
|
|
21853
21865
|
var MemberPermissionsSchema = external_exports.object({
|
|
21854
21866
|
canSign: external_exports.boolean(),
|
|
@@ -22124,6 +22136,114 @@ var ListActionsResponseSchema = external_exports.object({
|
|
|
22124
22136
|
limit: external_exports.number(),
|
|
22125
22137
|
hasMore: external_exports.boolean()
|
|
22126
22138
|
});
|
|
22139
|
+
var CapaStatusSchema = external_exports.enum(CAPA_STATUSES);
|
|
22140
|
+
var CapaClassificationSchema = external_exports.enum(CAPA_CLASSIFICATIONS);
|
|
22141
|
+
var CapaPrioritySchema = external_exports.enum(CAPA_PRIORITIES);
|
|
22142
|
+
var CapaSourceTypeSchema = external_exports.enum(CAPA_SOURCE_TYPES);
|
|
22143
|
+
var CapaActionStatusSchema = external_exports.enum(CAPA_ACTION_STATUSES);
|
|
22144
|
+
var QmsCapaParamSchema = external_exports.object({
|
|
22145
|
+
orgId: external_exports.string().min(1),
|
|
22146
|
+
qmsId: external_exports.string().min(1)
|
|
22147
|
+
});
|
|
22148
|
+
var CapaIdParamSchema = external_exports.object({
|
|
22149
|
+
orgId: external_exports.string().min(1),
|
|
22150
|
+
qmsId: external_exports.string().min(1),
|
|
22151
|
+
capaId: external_exports.string().min(1)
|
|
22152
|
+
});
|
|
22153
|
+
var CapaActionIdParamSchema = external_exports.object({
|
|
22154
|
+
orgId: external_exports.string().min(1),
|
|
22155
|
+
qmsId: external_exports.string().min(1),
|
|
22156
|
+
capaId: external_exports.string().min(1),
|
|
22157
|
+
actionId: external_exports.string().min(1)
|
|
22158
|
+
});
|
|
22159
|
+
var CreateCapaRequestSchema = external_exports.object({
|
|
22160
|
+
classification: CapaClassificationSchema,
|
|
22161
|
+
priority: CapaPrioritySchema,
|
|
22162
|
+
title: external_exports.string().min(1).max(200),
|
|
22163
|
+
description: external_exports.string().min(1).max(5e3),
|
|
22164
|
+
sourceType: CapaSourceTypeSchema,
|
|
22165
|
+
sourceDescription: external_exports.string().min(1).max(2e3),
|
|
22166
|
+
sourceId: external_exports.string().max(200).optional(),
|
|
22167
|
+
dueDate: external_exports.string().datetime().optional(),
|
|
22168
|
+
affectedDocumentIds: external_exports.array(external_exports.string().min(1)).default([]),
|
|
22169
|
+
affectedDeviceIds: external_exports.array(external_exports.string().min(1)).default([])
|
|
22170
|
+
});
|
|
22171
|
+
var UpdateCapaRequestSchema = external_exports.object({
|
|
22172
|
+
title: external_exports.string().min(1).max(200).optional(),
|
|
22173
|
+
description: external_exports.string().min(1).max(5e3).optional(),
|
|
22174
|
+
priority: CapaPrioritySchema.optional(),
|
|
22175
|
+
rootCauseDescription: external_exports.string().max(5e3).optional(),
|
|
22176
|
+
verificationDescription: external_exports.string().max(5e3).optional(),
|
|
22177
|
+
affectedDocumentIds: external_exports.array(external_exports.string().min(1)).optional(),
|
|
22178
|
+
affectedDeviceIds: external_exports.array(external_exports.string().min(1)).optional(),
|
|
22179
|
+
dueDate: external_exports.string().datetime().nullable().optional()
|
|
22180
|
+
});
|
|
22181
|
+
var CloseCapaRequestSchema = external_exports.object({
|
|
22182
|
+
signatureId: external_exports.string().min(1)
|
|
22183
|
+
});
|
|
22184
|
+
var AddCapaActionRequestSchema = external_exports.object({
|
|
22185
|
+
description: external_exports.string().min(1).max(2e3),
|
|
22186
|
+
assigneeId: external_exports.string().min(1),
|
|
22187
|
+
dueDate: external_exports.string().datetime(),
|
|
22188
|
+
notes: external_exports.string().max(2e3).optional()
|
|
22189
|
+
});
|
|
22190
|
+
var UpdateCapaActionRequestSchema = external_exports.object({
|
|
22191
|
+
description: external_exports.string().min(1).max(2e3).optional(),
|
|
22192
|
+
assigneeId: external_exports.string().min(1).optional(),
|
|
22193
|
+
dueDate: external_exports.string().datetime().optional(),
|
|
22194
|
+
status: CapaActionStatusSchema.optional(),
|
|
22195
|
+
notes: external_exports.string().max(2e3).optional()
|
|
22196
|
+
});
|
|
22197
|
+
var CapaListQuerySchema = PaginationParamsSchema.extend({
|
|
22198
|
+
status: CapaStatusSchema.optional(),
|
|
22199
|
+
classification: CapaClassificationSchema.optional(),
|
|
22200
|
+
priority: CapaPrioritySchema.optional()
|
|
22201
|
+
});
|
|
22202
|
+
var CapaActionResponseSchema = external_exports.object({
|
|
22203
|
+
id: external_exports.string(),
|
|
22204
|
+
description: external_exports.string(),
|
|
22205
|
+
assigneeId: external_exports.string(),
|
|
22206
|
+
assigneeEmail: external_exports.string(),
|
|
22207
|
+
dueDate: external_exports.string(),
|
|
22208
|
+
status: CapaActionStatusSchema,
|
|
22209
|
+
completedAt: external_exports.string().optional(),
|
|
22210
|
+
notes: external_exports.string().optional()
|
|
22211
|
+
});
|
|
22212
|
+
var CapaResponseSchema = external_exports.object({
|
|
22213
|
+
id: external_exports.string(),
|
|
22214
|
+
qmsId: external_exports.string(),
|
|
22215
|
+
organizationId: external_exports.string(),
|
|
22216
|
+
capaNumber: external_exports.string(),
|
|
22217
|
+
classification: CapaClassificationSchema,
|
|
22218
|
+
priority: CapaPrioritySchema,
|
|
22219
|
+
title: external_exports.string(),
|
|
22220
|
+
description: external_exports.string(),
|
|
22221
|
+
sourceType: CapaSourceTypeSchema,
|
|
22222
|
+
sourceId: external_exports.string().optional(),
|
|
22223
|
+
sourceDescription: external_exports.string(),
|
|
22224
|
+
rootCauseDescription: external_exports.string().optional(),
|
|
22225
|
+
verificationDescription: external_exports.string().optional(),
|
|
22226
|
+
affectedDocumentIds: external_exports.array(external_exports.string()),
|
|
22227
|
+
affectedDeviceIds: external_exports.array(external_exports.string()),
|
|
22228
|
+
actions: external_exports.array(CapaActionResponseSchema),
|
|
22229
|
+
status: CapaStatusSchema,
|
|
22230
|
+
createdAt: external_exports.string(),
|
|
22231
|
+
createdBy: external_exports.string(),
|
|
22232
|
+
investigationStartedAt: external_exports.string().optional(),
|
|
22233
|
+
implementationStartedAt: external_exports.string().optional(),
|
|
22234
|
+
verificationStartedAt: external_exports.string().optional(),
|
|
22235
|
+
closedAt: external_exports.string().optional(),
|
|
22236
|
+
closedBy: external_exports.string().optional(),
|
|
22237
|
+
cancelledAt: external_exports.string().optional(),
|
|
22238
|
+
cancelledBy: external_exports.string().optional(),
|
|
22239
|
+
dueDate: external_exports.string().optional()
|
|
22240
|
+
});
|
|
22241
|
+
var CapaListResponseSchema = external_exports.object({
|
|
22242
|
+
items: external_exports.array(CapaResponseSchema),
|
|
22243
|
+
total: external_exports.number(),
|
|
22244
|
+
limit: external_exports.number(),
|
|
22245
|
+
offset: external_exports.number()
|
|
22246
|
+
});
|
|
22127
22247
|
var ComplaintStatusSchema = external_exports.enum(COMPLAINT_STATUSES);
|
|
22128
22248
|
var ComplaintSeveritySchema = external_exports.enum(COMPLAINT_SEVERITIES);
|
|
22129
22249
|
var ComplaintCategorySchema = external_exports.enum(COMPLAINT_CATEGORIES);
|
|
@@ -22347,114 +22467,6 @@ var RequestDCOExportResponseSchema = external_exports.object({
|
|
|
22347
22467
|
message: external_exports.string(),
|
|
22348
22468
|
estimatedMinutes: external_exports.number()
|
|
22349
22469
|
});
|
|
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
22470
|
var RegulatoryFrameworkSchema = external_exports.enum([
|
|
22459
22471
|
"ISO_13485",
|
|
22460
22472
|
"IEC_62304",
|
|
@@ -22555,11 +22567,12 @@ var RiskDocumentStatusSchema = external_exports.enum([
|
|
|
22555
22567
|
"archived",
|
|
22556
22568
|
"example"
|
|
22557
22569
|
]);
|
|
22558
|
-
var
|
|
22559
|
-
"
|
|
22560
|
-
"
|
|
22561
|
-
"
|
|
22570
|
+
var IsoCategorySchema = external_exports.enum([
|
|
22571
|
+
"safe_design",
|
|
22572
|
+
"protective_measure",
|
|
22573
|
+
"safety_information"
|
|
22562
22574
|
]);
|
|
22575
|
+
var ReducesTargetSchema = external_exports.enum(["p1_sequence", "p2_harm", "severity"]);
|
|
22563
22576
|
var RiskGapCodeSchema = external_exports.enum([
|
|
22564
22577
|
"hazard_no_situation",
|
|
22565
22578
|
"situation_no_harm",
|
|
@@ -22577,13 +22590,19 @@ var RiskGapCodeSchema = external_exports.enum([
|
|
|
22577
22590
|
"architecture_no_parent",
|
|
22578
22591
|
"haz_missing_category",
|
|
22579
22592
|
"haz_invalid_category",
|
|
22580
|
-
"category_not_approved"
|
|
22593
|
+
"category_not_approved",
|
|
22594
|
+
"missing_iso_category",
|
|
22595
|
+
"missing_risk_acceptable",
|
|
22596
|
+
"unacceptable_no_benefit",
|
|
22597
|
+
"preliminary_not_analyzed",
|
|
22598
|
+
"missing_body_rationale",
|
|
22599
|
+
"orphaned_body_section"
|
|
22581
22600
|
]);
|
|
22582
22601
|
var RiskGapSeveritySchema = external_exports.enum(["error", "warning"]);
|
|
22583
22602
|
var MitigationSchema = external_exports.object({
|
|
22584
22603
|
control: external_exports.string().min(1),
|
|
22585
|
-
|
|
22586
|
-
|
|
22604
|
+
iso_category: IsoCategorySchema,
|
|
22605
|
+
reduces: ReducesTargetSchema
|
|
22587
22606
|
});
|
|
22588
22607
|
var HarmAssessmentSchema = external_exports.object({
|
|
22589
22608
|
harm: external_exports.string().min(1),
|
|
@@ -22591,48 +22610,80 @@ var HarmAssessmentSchema = external_exports.object({
|
|
|
22591
22610
|
inherent_exploitability: external_exports.number().int().min(1).max(5).optional(),
|
|
22592
22611
|
residual_probability: external_exports.number().int().min(1).max(5).optional(),
|
|
22593
22612
|
residual_exploitability: external_exports.number().int().min(1).max(5).optional(),
|
|
22594
|
-
|
|
22613
|
+
harm_severity_override: external_exports.number().int().min(1).max(5).optional(),
|
|
22614
|
+
risk_acceptable: external_exports.boolean(),
|
|
22615
|
+
benefit_outweighs_risk: external_exports.boolean().optional()
|
|
22616
|
+
});
|
|
22617
|
+
var HazardousSituationAssessmentSchema = external_exports.object({
|
|
22618
|
+
hazardous_situation: external_exports.string().min(1),
|
|
22619
|
+
mitigations: external_exports.array(MitigationSchema).optional(),
|
|
22620
|
+
harms: external_exports.array(HarmAssessmentSchema).min(1)
|
|
22595
22621
|
});
|
|
22596
22622
|
var RiskEntryFrontmatterSchema = external_exports.object({
|
|
22597
22623
|
type: external_exports.enum(["software_risk", "usability_risk", "security_risk"]),
|
|
22598
22624
|
id: external_exports.string().min(1),
|
|
22599
22625
|
title: external_exports.string().min(1),
|
|
22600
22626
|
status: RiskDocumentStatusSchema,
|
|
22627
|
+
author: external_exports.string().min(1),
|
|
22628
|
+
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
22629
|
+
approvers: external_exports.array(external_exports.string()).optional(),
|
|
22601
22630
|
analyzes: external_exports.string().min(1),
|
|
22602
|
-
hazardous_situation: external_exports.string().min(1),
|
|
22603
|
-
harm_assessments: external_exports.array(HarmAssessmentSchema).min(1),
|
|
22604
22631
|
mitigations: external_exports.array(MitigationSchema).optional(),
|
|
22632
|
+
hazardous_situation_assessments: external_exports.array(HazardousSituationAssessmentSchema).min(1),
|
|
22605
22633
|
cvss_score: external_exports.number().min(0).max(10).optional(),
|
|
22606
22634
|
cvss_vector: external_exports.string().regex(
|
|
22607
22635
|
/^CVSS:3\.[01]\/AV:[NALP]\/AC:[LH]\/PR:[NLH]\/UI:[NR]\/S:[UC]\/C:[NLH]\/I:[NLH]\/A:[NLH]$/
|
|
22608
22636
|
).optional()
|
|
22609
22637
|
}).refine(
|
|
22610
22638
|
(data) => {
|
|
22639
|
+
const allHarms = data.hazardous_situation_assessments.flatMap((hsa) => hsa.harms);
|
|
22611
22640
|
if (data.type === "security_risk") {
|
|
22612
|
-
return
|
|
22641
|
+
return allHarms.every((ha) => ha.inherent_exploitability != null);
|
|
22613
22642
|
}
|
|
22614
|
-
return
|
|
22643
|
+
return allHarms.every((ha) => ha.inherent_probability != null);
|
|
22615
22644
|
},
|
|
22616
22645
|
{
|
|
22617
22646
|
message: "Security risks must use inherent_exploitability; software/usability risks must use inherent_probability"
|
|
22618
22647
|
}
|
|
22648
|
+
).refine(
|
|
22649
|
+
(data) => {
|
|
22650
|
+
const allHarms = data.hazardous_situation_assessments.flatMap((hsa) => hsa.harms);
|
|
22651
|
+
return allHarms.every((ha) => ha.risk_acceptable || ha.benefit_outweighs_risk != null);
|
|
22652
|
+
},
|
|
22653
|
+
{
|
|
22654
|
+
message: "benefit_outweighs_risk required when risk_acceptable is false"
|
|
22655
|
+
}
|
|
22619
22656
|
);
|
|
22620
|
-
var
|
|
22621
|
-
type: external_exports.
|
|
22657
|
+
var HazardSoftwareFrontmatterSchema = external_exports.object({
|
|
22658
|
+
type: external_exports.literal("haz_soe_software"),
|
|
22622
22659
|
id: external_exports.string().min(1),
|
|
22623
22660
|
title: external_exports.string().min(1),
|
|
22624
22661
|
status: RiskDocumentStatusSchema,
|
|
22662
|
+
author: external_exports.string().min(1),
|
|
22663
|
+
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
22664
|
+
approvers: external_exports.array(external_exports.string()).optional(),
|
|
22665
|
+
preliminary: external_exports.boolean().default(false),
|
|
22666
|
+
leads_to: external_exports.array(external_exports.string()).optional(),
|
|
22667
|
+
hazard_category: external_exports.string().optional(),
|
|
22668
|
+
detection_score: external_exports.number().int().min(1).max(5).optional(),
|
|
22669
|
+
detection_method: external_exports.string().optional()
|
|
22670
|
+
});
|
|
22671
|
+
var HazardSecurityFrontmatterSchema = external_exports.object({
|
|
22672
|
+
type: external_exports.literal("haz_soe_security"),
|
|
22673
|
+
id: external_exports.string().min(1),
|
|
22674
|
+
title: external_exports.string().min(1),
|
|
22675
|
+
status: RiskDocumentStatusSchema,
|
|
22676
|
+
author: external_exports.string().min(1),
|
|
22677
|
+
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
22678
|
+
approvers: external_exports.array(external_exports.string()).optional(),
|
|
22679
|
+
preliminary: external_exports.boolean().default(false),
|
|
22625
22680
|
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
22681
|
hazard_category: external_exports.string().optional()
|
|
22635
22682
|
});
|
|
22683
|
+
var HazardFrontmatterSchema = external_exports.discriminatedUnion("type", [
|
|
22684
|
+
HazardSoftwareFrontmatterSchema,
|
|
22685
|
+
HazardSecurityFrontmatterSchema
|
|
22686
|
+
]);
|
|
22636
22687
|
var HazardCategoryFrontmatterSchema = external_exports.object({
|
|
22637
22688
|
type: external_exports.literal("hazard_category"),
|
|
22638
22689
|
id: external_exports.string().min(1),
|
|
@@ -22776,28 +22827,38 @@ var SegregationSchema = external_exports.object({
|
|
|
22776
22827
|
var ArchitectureFrontmatterSchema = external_exports.object({
|
|
22777
22828
|
id: external_exports.string().min(1),
|
|
22778
22829
|
title: external_exports.string().min(1),
|
|
22830
|
+
/** Required — cannot be inferred from folder alone since architecture/ and design/ share parent */
|
|
22779
22831
|
type: external_exports.literal("architecture"),
|
|
22780
22832
|
status: RiskDocumentStatusSchema,
|
|
22781
|
-
|
|
22833
|
+
/** IEC 62304 §5.3 — C4/IEC mapping: system, subsystem, component, unit (required) */
|
|
22834
|
+
software_item_type: SoftwareItemTypeSchema,
|
|
22835
|
+
/** Parent HLD doc ID (optional for system-level, recommended for subsystem/component) */
|
|
22782
22836
|
parent_item: external_exports.string().optional(),
|
|
22783
|
-
safety_class:
|
|
22837
|
+
safety_class: SafetyClassSchema.optional(),
|
|
22784
22838
|
segregation: SegregationSchema.optional(),
|
|
22785
|
-
author
|
|
22839
|
+
/** Document author — required for all regulated document types */
|
|
22840
|
+
author: external_exports.string().min(1),
|
|
22786
22841
|
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
22787
|
-
|
|
22842
|
+
/** Approver list — required for all regulated document types */
|
|
22843
|
+
approvers: external_exports.array(external_exports.string()).min(1)
|
|
22788
22844
|
});
|
|
22789
22845
|
var DetailedDesignFrontmatterSchema = external_exports.object({
|
|
22790
22846
|
id: external_exports.string().min(1),
|
|
22791
22847
|
title: external_exports.string().min(1),
|
|
22848
|
+
/** Required — cannot be inferred from folder alone since architecture/ and design/ share parent */
|
|
22792
22849
|
type: external_exports.literal("detailed_design"),
|
|
22793
22850
|
status: RiskDocumentStatusSchema,
|
|
22794
|
-
|
|
22795
|
-
|
|
22796
|
-
|
|
22851
|
+
/** IEC 62304 §5.4 — typically component or unit (required) */
|
|
22852
|
+
software_item_type: SoftwareItemTypeSchema,
|
|
22853
|
+
/** Parent HLD doc ID — required for SDD (must reference parent architecture) */
|
|
22854
|
+
parent_item: external_exports.string().min(1),
|
|
22855
|
+
safety_class: SafetyClassSchema.optional(),
|
|
22797
22856
|
segregation: SegregationSchema.optional(),
|
|
22798
|
-
author
|
|
22857
|
+
/** Document author — required for all regulated document types */
|
|
22858
|
+
author: external_exports.string().min(1),
|
|
22799
22859
|
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
22800
|
-
|
|
22860
|
+
/** Approver list — required for all regulated document types */
|
|
22861
|
+
approvers: external_exports.array(external_exports.string()).min(1)
|
|
22801
22862
|
});
|
|
22802
22863
|
var AnomalyCategorySchema = external_exports.enum([
|
|
22803
22864
|
"bug",
|
|
@@ -22926,17 +22987,21 @@ var UserNeedFrontmatterSchema = external_exports.object({
|
|
|
22926
22987
|
status: RiskDocumentStatusSchema,
|
|
22927
22988
|
/** Validated if present — ensures frontmatter doesn't misidentify the document type */
|
|
22928
22989
|
type: external_exports.literal("user_need").optional(),
|
|
22929
|
-
/** The user role or stakeholder (e.g., "Quality Manager", "Developer") */
|
|
22930
|
-
stakeholder: external_exports.string().
|
|
22990
|
+
/** The user role or stakeholder (e.g., "Quality Manager", "Developer") — required per ISO 13485 §7.3.2 */
|
|
22991
|
+
stakeholder: external_exports.string().min(1),
|
|
22931
22992
|
/** MoSCoW priority classification */
|
|
22932
22993
|
priority: UserNeedPrioritySchema.optional(),
|
|
22933
22994
|
/** Where this need originated (e.g., "ISO 13485 §7.3", "user interview") */
|
|
22934
22995
|
source: external_exports.string().optional(),
|
|
22935
22996
|
/** IDs of product requirements derived from this need */
|
|
22936
22997
|
derives: external_exports.array(external_exports.string()).optional(),
|
|
22937
|
-
author
|
|
22998
|
+
/** Document author — required for all regulated document types */
|
|
22999
|
+
author: external_exports.string().min(1),
|
|
22938
23000
|
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
22939
|
-
|
|
23001
|
+
/** Approver list — required for all regulated document types */
|
|
23002
|
+
approvers: external_exports.array(external_exports.string()).min(1),
|
|
23003
|
+
/** Optional reference to a Use Specification persona (US-xxx) per IEC 62366 */
|
|
23004
|
+
use_specification: external_exports.string().optional()
|
|
22940
23005
|
});
|
|
22941
23006
|
var RequirementTypeSchema = external_exports.enum([
|
|
22942
23007
|
"functional",
|
|
@@ -22974,6 +23039,46 @@ var RequirementFrontmatterSchema = external_exports.object({
|
|
|
22974
23039
|
/** Downstream traceability — IDs of documents this requirement traces to (e.g., SRS for PRS) */
|
|
22975
23040
|
traces_to: external_exports.array(external_exports.string()).optional()
|
|
22976
23041
|
});
|
|
23042
|
+
var ProductRequirementFrontmatterSchema = external_exports.object({
|
|
23043
|
+
id: external_exports.string().min(1),
|
|
23044
|
+
title: external_exports.string().min(1),
|
|
23045
|
+
status: RiskDocumentStatusSchema,
|
|
23046
|
+
/** IEC 62304 §5.2.2 — requirement classification (optional for PRS) */
|
|
23047
|
+
req_type: RequirementTypeSchema.optional(),
|
|
23048
|
+
/** Authoring convention — controls which required sections are checked */
|
|
23049
|
+
format: RequirementFormatSchema.optional(),
|
|
23050
|
+
/** ISO 13485 §7.3.3 — how this PRS design input is fulfilled (defaults to 'software') */
|
|
23051
|
+
fulfillment_type: RequirementFulfillmentTypeSchema.optional(),
|
|
23052
|
+
/** Document author — required for all regulated document types */
|
|
23053
|
+
author: external_exports.string().min(1),
|
|
23054
|
+
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
23055
|
+
/** Approver list — required for all regulated document types */
|
|
23056
|
+
approvers: external_exports.array(external_exports.string()).min(1),
|
|
23057
|
+
/** Upstream traceability — IDs of User Need documents this PRS traces from (required) */
|
|
23058
|
+
traces_from: external_exports.array(external_exports.string()).min(1),
|
|
23059
|
+
/** Downstream traceability — IDs of SRS documents this PRS traces to */
|
|
23060
|
+
traces_to: external_exports.array(external_exports.string()).optional()
|
|
23061
|
+
});
|
|
23062
|
+
var SoftwareRequirementFrontmatterSchema = external_exports.object({
|
|
23063
|
+
id: external_exports.string().min(1),
|
|
23064
|
+
title: external_exports.string().min(1),
|
|
23065
|
+
status: RiskDocumentStatusSchema,
|
|
23066
|
+
/** IEC 62304 §5.2.2 — requirement classification (recommended for SRS) */
|
|
23067
|
+
req_type: RequirementTypeSchema.optional(),
|
|
23068
|
+
/** Authoring convention — controls which required sections are checked */
|
|
23069
|
+
format: RequirementFormatSchema.optional(),
|
|
23070
|
+
/** Document author — required for all regulated document types */
|
|
23071
|
+
author: external_exports.string().min(1),
|
|
23072
|
+
reviewers: external_exports.array(external_exports.string()).optional(),
|
|
23073
|
+
/** Approver list — required for all regulated document types */
|
|
23074
|
+
approvers: external_exports.array(external_exports.string()).min(1),
|
|
23075
|
+
/** Upstream traceability — IDs of PRS documents this SRS traces from (required) */
|
|
23076
|
+
traces_from: external_exports.array(external_exports.string()).min(1),
|
|
23077
|
+
/** Downstream traceability — IDs of documents this SRS traces to */
|
|
23078
|
+
traces_to: external_exports.array(external_exports.string()).optional(),
|
|
23079
|
+
/** HLD/SDD document ID that implements this requirement */
|
|
23080
|
+
implemented_in: external_exports.string().optional()
|
|
23081
|
+
});
|
|
22977
23082
|
var TestProtocolFrontmatterSchema = external_exports.object({
|
|
22978
23083
|
type: external_exports.literal("test_protocol"),
|
|
22979
23084
|
id: external_exports.string().min(1),
|
|
@@ -23244,7 +23349,8 @@ var EvidenceRuleConditionsSeedSchema = external_exports.object({
|
|
|
23244
23349
|
documentType: DocumentTypeSchema.optional(),
|
|
23245
23350
|
linkType: LinkTypeSchema.optional(),
|
|
23246
23351
|
status: external_exports.string().optional(),
|
|
23247
|
-
minCount: external_exports.number().int().positive().optional()
|
|
23352
|
+
minCount: external_exports.number().int().positive().optional(),
|
|
23353
|
+
safetyClass: SafetyClassSchema.optional()
|
|
23248
23354
|
});
|
|
23249
23355
|
var EvidenceRuleSeedSchema = external_exports.object({
|
|
23250
23356
|
clauseId: external_exports.string().min(1),
|
|
@@ -24080,10 +24186,13 @@ var HarmAssessmentEntrySchema = external_exports.object({
|
|
|
24080
24186
|
harmSeverity: RiskValueSchema,
|
|
24081
24187
|
inherentProbability: RiskValueSchema,
|
|
24082
24188
|
residualProbability: RiskValueSchema,
|
|
24083
|
-
|
|
24189
|
+
harmSeverityOverride: RiskValueSchema.optional(),
|
|
24084
24190
|
residualSeverity: RiskValueSchema,
|
|
24085
24191
|
inherentAcceptability: AcceptabilityStatusSchema,
|
|
24086
|
-
residualAcceptability: AcceptabilityStatusSchema
|
|
24192
|
+
residualAcceptability: AcceptabilityStatusSchema,
|
|
24193
|
+
riskAcceptable: external_exports.boolean(),
|
|
24194
|
+
benefitOutweighsRisk: external_exports.boolean().optional(),
|
|
24195
|
+
hazardousSituation: external_exports.string().optional()
|
|
24087
24196
|
});
|
|
24088
24197
|
var RiskEntrySchema = external_exports.object({
|
|
24089
24198
|
id: external_exports.string(),
|
|
@@ -24137,6 +24246,8 @@ var RiskListItemSchema = external_exports.object({
|
|
|
24137
24246
|
worstResidualProbability: RiskValueSchema.optional(),
|
|
24138
24247
|
worstAcceptability: AcceptabilityStatusSchema.optional(),
|
|
24139
24248
|
mitigationsCount: external_exports.number().int().min(0),
|
|
24249
|
+
topLevelMitigationsCount: external_exports.number().int().min(0),
|
|
24250
|
+
perHsMitigationsCount: external_exports.number().int().min(0),
|
|
24140
24251
|
hasRiskBenefit: external_exports.boolean(),
|
|
24141
24252
|
cvssScore: external_exports.number().min(0).max(10).optional(),
|
|
24142
24253
|
cvssVector: external_exports.string().optional()
|
|
@@ -25517,6 +25628,9 @@ var SCHEMA_MAP = {
|
|
|
25517
25628
|
// Product (ISO 13485 §7.3)
|
|
25518
25629
|
product_development_plan: ProductDevelopmentPlanFrontmatterSchema,
|
|
25519
25630
|
intended_use: IntendedUseFrontmatterSchema,
|
|
25631
|
+
// Architecture (IEC 62304 §5.3)
|
|
25632
|
+
architecture: ArchitectureFrontmatterSchema,
|
|
25633
|
+
detailed_design: DetailedDesignFrontmatterSchema,
|
|
25520
25634
|
// User needs (ISO 13485 §7.3.2)
|
|
25521
25635
|
user_need: UserNeedFrontmatterSchema,
|
|
25522
25636
|
// Requirements (IEC 62304 §5.2.2, ISO 13485 §7.3.3)
|
|
@@ -25781,7 +25895,7 @@ var client = new PactoSignaApiClient({
|
|
|
25781
25895
|
apiKey: PACTOSIGNA_API_KEY
|
|
25782
25896
|
});
|
|
25783
25897
|
var server = new Server(
|
|
25784
|
-
{ name: "pactosigna", version: "0.1.
|
|
25898
|
+
{ name: "pactosigna", version: "0.1.12" },
|
|
25785
25899
|
{ capabilities: { tools: {} } }
|
|
25786
25900
|
);
|
|
25787
25901
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
package/package.json
CHANGED