@pactosigna/mcp-server 0.1.8 → 0.1.9

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 +3051 -193
  2. package/package.json +4 -2
package/dist/index.js CHANGED
@@ -21406,6 +21406,1054 @@ var PactoSignaApiClient = class {
21406
21406
 
21407
21407
  // ../schemas/dist/index.js
21408
21408
  var import_gray_matter = __toESM(require_gray_matter(), 1);
21409
+ var CAPA_STATUSES = [
21410
+ "open",
21411
+ "investigation",
21412
+ "implementation",
21413
+ "verification",
21414
+ "closed",
21415
+ "cancelled"
21416
+ ];
21417
+ var CAPA_CLASSIFICATIONS = ["corrective", "preventive"];
21418
+ var CAPA_PRIORITIES = ["low", "medium", "high", "critical"];
21419
+ var CAPA_SOURCE_TYPES = [
21420
+ "nonconformance",
21421
+ "complaint",
21422
+ "audit_finding",
21423
+ "observation",
21424
+ "other"
21425
+ ];
21426
+ var CAPA_ACTION_STATUSES = ["pending", "in_progress", "completed"];
21427
+ var COMPLAINT_STATUSES = [
21428
+ "open",
21429
+ "investigating",
21430
+ "resolved",
21431
+ "closed",
21432
+ "cancelled"
21433
+ ];
21434
+ var COMPLAINT_SEVERITIES = ["low", "medium", "high", "critical"];
21435
+ var COMPLAINT_CATEGORIES = [
21436
+ "quality",
21437
+ "safety",
21438
+ "performance",
21439
+ "usability",
21440
+ "other"
21441
+ ];
21442
+ var COMPLAINT_SOURCES = ["customer", "internal", "regulatory", "distributor"];
21443
+ var NC_STATUSES = [
21444
+ "reported",
21445
+ "investigation",
21446
+ "disposition",
21447
+ "closed",
21448
+ "cancelled"
21449
+ ];
21450
+ var NC_SEVERITIES = ["minor", "major", "critical"];
21451
+ var NC_DISPOSITIONS = [
21452
+ "use_as_is",
21453
+ "rework",
21454
+ "scrap",
21455
+ "return_to_supplier",
21456
+ "concession"
21457
+ ];
21458
+ var NC_SOURCE_TYPES = [
21459
+ "product",
21460
+ "process",
21461
+ "supplier",
21462
+ "audit_finding",
21463
+ "complaint",
21464
+ "other"
21465
+ ];
21466
+ var ACTION_STATUSES = ["open", "in_progress", "completed", "cancelled"];
21467
+ var ACTION_PRIORITIES = ["low", "medium", "high", "critical"];
21468
+ var ACTION_SOURCE_TYPES = [
21469
+ "capa",
21470
+ "nonconformance",
21471
+ "complaint",
21472
+ "management_review",
21473
+ "custom_review",
21474
+ "audit_finding",
21475
+ "quality_objective"
21476
+ ];
21477
+ var OBJECTIVE_TYPES = ["auto", "manual"];
21478
+ var OBJECTIVE_STATUSES = ["on_track", "at_risk", "off_target", "not_started"];
21479
+ var OBJECTIVE_DIRECTIONS = ["above", "below"];
21480
+ var OBJECTIVE_CADENCES = ["monthly", "quarterly", "annual"];
21481
+ var AUTO_METRIC_SOURCES = [
21482
+ "capa.avgCycleTimeDays",
21483
+ "capa.overdueCount",
21484
+ "capa.openCount",
21485
+ "nonconformance.avgCycleTimeDays",
21486
+ "nonconformance.overdueCount",
21487
+ "nonconformance.openCount",
21488
+ "complaint.avgCycleTimeDays",
21489
+ "complaint.overdueCount",
21490
+ "complaint.reportableCount",
21491
+ "training.complianceRate",
21492
+ "training.overdueCount",
21493
+ "release.avgCycleTimeDays",
21494
+ "audit.findingsMajor",
21495
+ "audit.findingsMinor"
21496
+ ];
21497
+ var REVIEW_STATUSES = [
21498
+ "scheduled",
21499
+ "draft",
21500
+ "in_progress",
21501
+ "completed",
21502
+ "cancelled"
21503
+ ];
21504
+ var REVIEW_CADENCES = ["monthly", "quarterly", "semi_annual", "annual"];
21505
+ var REVIEW_DATA_SOURCES = [
21506
+ "capas",
21507
+ "nonconformances",
21508
+ "complaints",
21509
+ "training",
21510
+ "releases",
21511
+ "audits"
21512
+ ];
21513
+ var CreateQualityReviewRequestSchema = external_exports.object({
21514
+ reviewTypeId: external_exports.string().min(1),
21515
+ title: external_exports.string().min(1).max(200),
21516
+ scheduledDate: external_exports.string().datetime(),
21517
+ reviewPeriod: external_exports.object({
21518
+ from: external_exports.string().datetime(),
21519
+ to: external_exports.string().datetime()
21520
+ })
21521
+ });
21522
+ var AddDecisionRequestSchema = external_exports.object({
21523
+ description: external_exports.string().min(1).max(2e3),
21524
+ decidedBy: external_exports.string().min(1)
21525
+ });
21526
+ var AddAttendeeRequestSchema = external_exports.object({
21527
+ memberId: external_exports.string().min(1),
21528
+ name: external_exports.string().min(1),
21529
+ department: external_exports.string().min(1),
21530
+ role: external_exports.string().min(1)
21531
+ });
21532
+ var UpdateReviewNotesRequestSchema = external_exports.object({
21533
+ notes: external_exports.string().max(1e4)
21534
+ });
21535
+ var ListQualityReviewsQuerySchema = external_exports.object({
21536
+ reviewTypeId: external_exports.string().optional(),
21537
+ status: external_exports.enum(REVIEW_STATUSES).optional(),
21538
+ page: external_exports.coerce.number().int().positive().default(1),
21539
+ limit: external_exports.coerce.number().int().positive().max(100).default(20)
21540
+ });
21541
+ var QmsReviewParamSchema = external_exports.object({
21542
+ orgId: external_exports.string().min(1),
21543
+ qmsId: external_exports.string().min(1)
21544
+ });
21545
+ var ReviewIdParamSchema = external_exports.object({
21546
+ orgId: external_exports.string().min(1),
21547
+ qmsId: external_exports.string().min(1),
21548
+ reviewId: external_exports.string().min(1)
21549
+ });
21550
+ var MonthlyTrendSchema = external_exports.object({
21551
+ month: external_exports.string(),
21552
+ opened: external_exports.number(),
21553
+ closed: external_exports.number()
21554
+ });
21555
+ var ReviewDataSnapshotSchema = external_exports.object({
21556
+ capas: external_exports.object({
21557
+ total: external_exports.number(),
21558
+ open: external_exports.number(),
21559
+ overdue: external_exports.number(),
21560
+ avgCycleTimeDays: external_exports.number().nullable(),
21561
+ trend: external_exports.array(MonthlyTrendSchema)
21562
+ }).optional(),
21563
+ nonconformances: external_exports.object({
21564
+ total: external_exports.number(),
21565
+ open: external_exports.number(),
21566
+ overdue: external_exports.number(),
21567
+ avgCycleTimeDays: external_exports.number().nullable(),
21568
+ bySeverity: external_exports.record(external_exports.string(), external_exports.number()),
21569
+ trend: external_exports.array(MonthlyTrendSchema)
21570
+ }).optional(),
21571
+ complaints: external_exports.object({
21572
+ total: external_exports.number(),
21573
+ open: external_exports.number(),
21574
+ overdue: external_exports.number(),
21575
+ reportableCount: external_exports.number(),
21576
+ trend: external_exports.array(MonthlyTrendSchema)
21577
+ }).optional(),
21578
+ training: external_exports.object({
21579
+ totalTasks: external_exports.number(),
21580
+ complianceRate: external_exports.number(),
21581
+ overdue: external_exports.number()
21582
+ }).optional(),
21583
+ releases: external_exports.object({
21584
+ total: external_exports.number(),
21585
+ avgCycleTimeDays: external_exports.number().nullable()
21586
+ }).optional(),
21587
+ audits: external_exports.object({
21588
+ totalFindings: external_exports.number(),
21589
+ major: external_exports.number(),
21590
+ minor: external_exports.number(),
21591
+ observations: external_exports.number()
21592
+ }).optional()
21593
+ });
21594
+ var ReviewObjectiveSnapshotSchema = external_exports.object({
21595
+ objectiveId: external_exports.string(),
21596
+ title: external_exports.string(),
21597
+ target: external_exports.number(),
21598
+ value: external_exports.number().nullable(),
21599
+ status: external_exports.string(),
21600
+ direction: external_exports.string(),
21601
+ unit: external_exports.string()
21602
+ });
21603
+ var ReviewDecisionSchema = external_exports.object({
21604
+ description: external_exports.string(),
21605
+ decidedBy: external_exports.string()
21606
+ });
21607
+ var ReviewAttendeeSchema = external_exports.object({
21608
+ memberId: external_exports.string(),
21609
+ name: external_exports.string(),
21610
+ department: external_exports.string(),
21611
+ role: external_exports.string()
21612
+ });
21613
+ var QualityReviewResponseSchema = external_exports.object({
21614
+ id: external_exports.string(),
21615
+ reviewNumber: external_exports.string(),
21616
+ title: external_exports.string(),
21617
+ reviewTypeId: external_exports.string(),
21618
+ reviewTypeName: external_exports.string(),
21619
+ status: external_exports.enum(REVIEW_STATUSES),
21620
+ scheduledDate: external_exports.string(),
21621
+ conductedDate: external_exports.string().nullable(),
21622
+ reviewPeriod: external_exports.object({
21623
+ from: external_exports.string(),
21624
+ to: external_exports.string()
21625
+ }),
21626
+ ownerDepartment: external_exports.string(),
21627
+ ownerDepartmentRole: external_exports.enum(["manager", "member"]),
21628
+ dataSources: external_exports.array(external_exports.enum(REVIEW_DATA_SOURCES)),
21629
+ attendees: external_exports.array(ReviewAttendeeSchema),
21630
+ dataSnapshot: ReviewDataSnapshotSchema,
21631
+ objectiveSnapshots: external_exports.array(ReviewObjectiveSnapshotSchema),
21632
+ decisions: external_exports.array(ReviewDecisionSchema),
21633
+ notes: external_exports.string().nullable(),
21634
+ completedAt: external_exports.string().nullable(),
21635
+ completedBy: external_exports.string().nullable(),
21636
+ createdAt: external_exports.string(),
21637
+ createdBy: external_exports.string(),
21638
+ updatedAt: external_exports.string()
21639
+ });
21640
+ var ListQualityReviewsResponseSchema = external_exports.object({
21641
+ items: external_exports.array(QualityReviewResponseSchema),
21642
+ total: external_exports.number(),
21643
+ page: external_exports.number(),
21644
+ limit: external_exports.number(),
21645
+ hasMore: external_exports.boolean()
21646
+ });
21647
+ var CreateReviewTypeRequestSchema = external_exports.object({
21648
+ name: external_exports.string().min(1).max(200),
21649
+ dataSources: external_exports.array(external_exports.enum(REVIEW_DATA_SOURCES)).min(1),
21650
+ requiredSections: external_exports.array(external_exports.string().min(1)).default([]),
21651
+ ownerDepartment: external_exports.string().min(1),
21652
+ ownerDepartmentRole: external_exports.enum(["manager", "member"]),
21653
+ cadence: external_exports.enum(REVIEW_CADENCES),
21654
+ advanceNotificationDays: external_exports.number().int().min(1).max(30).default(7),
21655
+ includeObjectives: external_exports.boolean().default(false)
21656
+ });
21657
+ var UpdateReviewTypeRequestSchema = external_exports.object({
21658
+ name: external_exports.string().min(1).max(200).optional(),
21659
+ dataSources: external_exports.array(external_exports.enum(REVIEW_DATA_SOURCES)).min(1).optional(),
21660
+ requiredSections: external_exports.array(external_exports.string().min(1)).optional(),
21661
+ ownerDepartment: external_exports.string().min(1).optional(),
21662
+ ownerDepartmentRole: external_exports.enum(["manager", "member"]).optional(),
21663
+ cadence: external_exports.enum(REVIEW_CADENCES).optional(),
21664
+ advanceNotificationDays: external_exports.number().int().min(1).max(30).optional(),
21665
+ includeObjectives: external_exports.boolean().optional()
21666
+ });
21667
+ var QmsReviewTypeParamSchema = external_exports.object({
21668
+ orgId: external_exports.string().min(1),
21669
+ qmsId: external_exports.string().min(1)
21670
+ });
21671
+ var ReviewTypeIdParamSchema = external_exports.object({
21672
+ orgId: external_exports.string().min(1),
21673
+ qmsId: external_exports.string().min(1),
21674
+ reviewTypeId: external_exports.string().min(1)
21675
+ });
21676
+ var ReviewTypeResponseSchema = external_exports.object({
21677
+ id: external_exports.string(),
21678
+ name: external_exports.string(),
21679
+ isBuiltIn: external_exports.boolean(),
21680
+ dataSources: external_exports.array(external_exports.enum(REVIEW_DATA_SOURCES)),
21681
+ requiredSections: external_exports.array(external_exports.string()),
21682
+ ownerDepartment: external_exports.string(),
21683
+ ownerDepartmentRole: external_exports.enum(["manager", "member"]),
21684
+ cadence: external_exports.enum(REVIEW_CADENCES),
21685
+ advanceNotificationDays: external_exports.number(),
21686
+ includeObjectives: external_exports.boolean(),
21687
+ isActive: external_exports.boolean(),
21688
+ createdAt: external_exports.string(),
21689
+ updatedAt: external_exports.string()
21690
+ });
21691
+ var ListReviewTypesResponseSchema = external_exports.object({
21692
+ items: external_exports.array(ReviewTypeResponseSchema)
21693
+ });
21694
+ var RISK_DOCUMENT_TYPES = [
21695
+ "software_risk",
21696
+ "usability_risk",
21697
+ "security_risk"
21698
+ ];
21699
+ var HAZARD_DOCUMENT_TYPES = ["haz_soe_software", "haz_soe_security"];
21700
+ var ALL_RISK_RELATED_DOCUMENT_TYPES = [
21701
+ ...RISK_DOCUMENT_TYPES,
21702
+ ...HAZARD_DOCUMENT_TYPES,
21703
+ "hazardous_situation",
21704
+ "harm"
21705
+ ];
21706
+ var QMS_DOCUMENT_TYPES = [
21707
+ "sop",
21708
+ "policy",
21709
+ "work_instruction",
21710
+ "supplier",
21711
+ // Internal audit management (ISO 13485 §8.2.2)
21712
+ "audit_schedule",
21713
+ "audit_report",
21714
+ // Management review (ISO 13485 §5.6)
21715
+ "management_review"
21716
+ ];
21717
+ var DEVICE_DOCUMENT_TYPES = [
21718
+ "user_need",
21719
+ "requirement",
21720
+ "architecture",
21721
+ "detailed_design",
21722
+ "test_protocol",
21723
+ "test_report",
21724
+ "usability_risk",
21725
+ "software_risk",
21726
+ "security_risk",
21727
+ "hazardous_situation",
21728
+ "harm",
21729
+ "haz_soe_software",
21730
+ "haz_soe_security",
21731
+ "hazard_category",
21732
+ // Usability engineering (IEC 62366)
21733
+ "usability_plan",
21734
+ "use_specification",
21735
+ "task_analysis",
21736
+ "usability_evaluation",
21737
+ "summative_evaluation",
21738
+ // Risk management (ISO 14971)
21739
+ "risk_management_plan",
21740
+ // Software lifecycle (IEC 62304)
21741
+ "software_development_plan",
21742
+ "software_maintenance_plan",
21743
+ "soup_register",
21744
+ // Problem resolution (IEC 62304 §9)
21745
+ "anomaly",
21746
+ // Cybersecurity (IEC 81001-5-1)
21747
+ "cybersecurity_plan",
21748
+ "sbom",
21749
+ // Clinical (MDR / FDA)
21750
+ "clinical_evaluation_plan",
21751
+ "clinical_evaluation_report",
21752
+ // Post-market surveillance (MDR Art. 83)
21753
+ "post_market_surveillance_plan",
21754
+ "post_market_feedback",
21755
+ // Labeling (MDR Annex I)
21756
+ "labeling",
21757
+ // Product (ISO 13485 §7.3)
21758
+ "product_development_plan",
21759
+ "intended_use",
21760
+ // Release management (IEC 62304 §5.7)
21761
+ "release_plan",
21762
+ // Change management (ISO 13485 §7.3.5)
21763
+ "design_review",
21764
+ "release_notes",
21765
+ // Software test plan (IEC 62304 §5.7)
21766
+ "software_test_plan"
21767
+ ];
21768
+ var DOCUMENT_TYPES = {
21769
+ user_need: "User Need",
21770
+ requirement: "Requirement",
21771
+ architecture: "Architecture",
21772
+ detailed_design: "Detailed Design",
21773
+ test_protocol: "Test Protocol",
21774
+ test_report: "Test Report",
21775
+ sop: "SOP",
21776
+ work_instruction: "Work Instruction",
21777
+ policy: "Policy",
21778
+ usability_risk: "Usability Risk",
21779
+ software_risk: "Software Risk",
21780
+ security_risk: "Security Risk",
21781
+ // Risk document types
21782
+ haz_soe_software: "Hazard (Software)",
21783
+ haz_soe_security: "Hazard (Security)",
21784
+ hazardous_situation: "Hazardous Situation",
21785
+ harm: "Harm",
21786
+ hazard_category: "Hazard Category",
21787
+ // Usability engineering (IEC 62366)
21788
+ usability_plan: "Usability Plan",
21789
+ use_specification: "Use Specification",
21790
+ task_analysis: "Task Analysis",
21791
+ usability_evaluation: "Usability Evaluation",
21792
+ summative_evaluation: "Summative Evaluation",
21793
+ // Risk management (ISO 14971)
21794
+ risk_management_plan: "Risk Management Plan",
21795
+ // Software lifecycle (IEC 62304)
21796
+ software_development_plan: "Software Development Plan",
21797
+ software_maintenance_plan: "Software Maintenance Plan",
21798
+ soup_register: "SOUP Register",
21799
+ // Problem resolution (IEC 62304 §9)
21800
+ anomaly: "Anomaly",
21801
+ // Cybersecurity (IEC 81001-5-1)
21802
+ cybersecurity_plan: "Cybersecurity Plan",
21803
+ sbom: "SBOM",
21804
+ // Clinical (MDR / FDA)
21805
+ clinical_evaluation_plan: "Clinical Evaluation Plan",
21806
+ clinical_evaluation_report: "Clinical Evaluation Report",
21807
+ // Post-market surveillance (MDR Art. 83)
21808
+ post_market_surveillance_plan: "Post-Market Surveillance Plan",
21809
+ post_market_feedback: "Post-Market Feedback",
21810
+ // Labeling (MDR Annex I)
21811
+ labeling: "Labeling",
21812
+ // Product (ISO 13485 §7.3)
21813
+ product_development_plan: "Product Development Plan",
21814
+ intended_use: "Intended Use",
21815
+ // Release management (IEC 62304 §5.7)
21816
+ release_plan: "Release Plan",
21817
+ // Change management (ISO 13485 §7.3.5)
21818
+ design_review: "Design Review",
21819
+ release_notes: "Release Notes",
21820
+ // Supplier management (ISO 13485 §7.4)
21821
+ supplier: "Supplier",
21822
+ // Internal audit management (ISO 13485 §8.2.2)
21823
+ audit_schedule: "Audit Schedule",
21824
+ audit_report: "Audit Report",
21825
+ // Management review (ISO 13485 §5.6)
21826
+ management_review: "Management Review",
21827
+ // Software test plan (IEC 62304 §5.7)
21828
+ software_test_plan: "Software Test Plan"
21829
+ };
21830
+ var LINK_TYPES = {
21831
+ derives_from: "Derives From",
21832
+ implements: "Implements",
21833
+ verified_by: "Verified By",
21834
+ mitigates: "Mitigates",
21835
+ parent_of: "Parent Of",
21836
+ related_to: "Related To",
21837
+ // New risk link types
21838
+ leads_to: "Leads To",
21839
+ results_in: "Results In",
21840
+ analyzes: "Analyzes"
21841
+ };
21842
+ var REQUIRED_SECTIONS = {
21843
+ user_need: ["Purpose", "Stakeholder", "User Needs"],
21844
+ architecture: ["Purpose"],
21845
+ release_plan: ["Scope", "Applicable Plans", "Release-Specific Criteria", "Known Anomalies"],
21846
+ design_review: ["Review Scope", "Attendees", "Findings", "Actions", "Conclusion"],
21847
+ release_notes: ["Changes", "Known Issues"],
21848
+ audit_schedule: ["Scope", "Audit Criteria"],
21849
+ audit_report: ["Scope", "Methodology", "Findings", "Conclusion"],
21850
+ management_review: ["Review Inputs", "Review Outputs", "Action Items", "Decisions"],
21851
+ hazard_category: ["Description", "Examples", "Applicable Standards"]
21852
+ };
21853
+ var MemberPermissionsSchema = external_exports.object({
21854
+ canSign: external_exports.boolean(),
21855
+ canApprove: external_exports.boolean(),
21856
+ canCreateRelease: external_exports.boolean(),
21857
+ canPublishRelease: external_exports.boolean(),
21858
+ canManageMembers: external_exports.boolean(),
21859
+ canViewAuditLog: external_exports.boolean(),
21860
+ canExport: external_exports.boolean()
21861
+ });
21862
+ var ErrorResponseSchema = external_exports.object({
21863
+ error: external_exports.string(),
21864
+ code: external_exports.string().optional(),
21865
+ details: external_exports.record(external_exports.unknown()).optional()
21866
+ });
21867
+ var PaginationParamsSchema = external_exports.object({
21868
+ limit: external_exports.coerce.number().min(1).max(100).optional().default(50),
21869
+ offset: external_exports.coerce.number().min(0).optional().default(0)
21870
+ });
21871
+ var NcStatusSchema = external_exports.enum(NC_STATUSES);
21872
+ var NcSeveritySchema = external_exports.enum(NC_SEVERITIES);
21873
+ var NcDispositionSchema = external_exports.enum(NC_DISPOSITIONS);
21874
+ var NcSourceTypeSchema = external_exports.enum(NC_SOURCE_TYPES);
21875
+ var QmsNcParamSchema = external_exports.object({
21876
+ orgId: external_exports.string().min(1),
21877
+ qmsId: external_exports.string().min(1)
21878
+ });
21879
+ var NcIdParamSchema = external_exports.object({
21880
+ orgId: external_exports.string().min(1),
21881
+ qmsId: external_exports.string().min(1),
21882
+ ncId: external_exports.string().min(1)
21883
+ });
21884
+ var CreateNcRequestSchema = external_exports.object({
21885
+ severity: NcSeveritySchema,
21886
+ sourceType: NcSourceTypeSchema,
21887
+ title: external_exports.string().min(1).max(200),
21888
+ description: external_exports.string().min(1).max(5e3),
21889
+ dueDate: external_exports.string().datetime().optional(),
21890
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).default([]),
21891
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).default([])
21892
+ });
21893
+ var UpdateNcRequestSchema = external_exports.object({
21894
+ title: external_exports.string().min(1).max(200).optional(),
21895
+ description: external_exports.string().min(1).max(5e3).optional(),
21896
+ severity: NcSeveritySchema.optional(),
21897
+ investigationDescription: external_exports.string().max(5e3).optional(),
21898
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).optional(),
21899
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).optional(),
21900
+ dueDate: external_exports.string().datetime().nullable().optional()
21901
+ });
21902
+ var SetDispositionRequestSchema = external_exports.object({
21903
+ disposition: NcDispositionSchema,
21904
+ justification: external_exports.string().min(1).max(5e3)
21905
+ });
21906
+ var ApproveConcessionRequestSchema = external_exports.object({
21907
+ signatureId: external_exports.string().min(1)
21908
+ });
21909
+ var NcListQuerySchema = PaginationParamsSchema.extend({
21910
+ status: NcStatusSchema.optional(),
21911
+ severity: NcSeveritySchema.optional(),
21912
+ sourceType: NcSourceTypeSchema.optional()
21913
+ });
21914
+ var NcResponseSchema = external_exports.object({
21915
+ id: external_exports.string(),
21916
+ qmsId: external_exports.string(),
21917
+ organizationId: external_exports.string(),
21918
+ ncNumber: external_exports.string(),
21919
+ severity: NcSeveritySchema,
21920
+ sourceType: NcSourceTypeSchema,
21921
+ title: external_exports.string(),
21922
+ description: external_exports.string(),
21923
+ investigationDescription: external_exports.string().optional(),
21924
+ disposition: NcDispositionSchema.optional(),
21925
+ dispositionJustification: external_exports.string().optional(),
21926
+ concessionSignatureId: external_exports.string().optional(),
21927
+ affectedDocumentIds: external_exports.array(external_exports.string()),
21928
+ affectedDeviceIds: external_exports.array(external_exports.string()),
21929
+ linkedCapaId: external_exports.string().optional(),
21930
+ status: NcStatusSchema,
21931
+ createdAt: external_exports.string(),
21932
+ createdBy: external_exports.string(),
21933
+ investigationStartedAt: external_exports.string().optional(),
21934
+ investigationStartedBy: external_exports.string().optional(),
21935
+ dispositionSetAt: external_exports.string().optional(),
21936
+ dispositionSetBy: external_exports.string().optional(),
21937
+ closedAt: external_exports.string().optional(),
21938
+ closedBy: external_exports.string().optional(),
21939
+ cancelledAt: external_exports.string().optional(),
21940
+ cancelledBy: external_exports.string().optional(),
21941
+ dueDate: external_exports.string().optional()
21942
+ });
21943
+ var NcListResponseSchema = external_exports.object({
21944
+ items: external_exports.array(NcResponseSchema),
21945
+ total: external_exports.number(),
21946
+ limit: external_exports.number(),
21947
+ offset: external_exports.number()
21948
+ });
21949
+ var AlertRecipientSchema = external_exports.object({
21950
+ department: external_exports.string().min(1),
21951
+ departmentRole: external_exports.enum(["manager", "member"])
21952
+ });
21953
+ var CreateQualityObjectiveRequestSchema = external_exports.object({
21954
+ title: external_exports.string().min(1).max(200),
21955
+ description: external_exports.string().min(1).max(5e3),
21956
+ type: external_exports.enum(OBJECTIVE_TYPES),
21957
+ metricSource: external_exports.enum(AUTO_METRIC_SOURCES).optional(),
21958
+ unit: external_exports.string().min(1).max(50),
21959
+ target: external_exports.number(),
21960
+ direction: external_exports.enum(OBJECTIVE_DIRECTIONS),
21961
+ warningThreshold: external_exports.number(),
21962
+ ownerDepartment: external_exports.string().min(1),
21963
+ ownerDepartmentRole: external_exports.enum(["manager", "member"]),
21964
+ alertRecipients: external_exports.array(AlertRecipientSchema).default([]),
21965
+ reviewCadence: external_exports.enum(OBJECTIVE_CADENCES),
21966
+ effectiveDate: external_exports.string().datetime(),
21967
+ targetDate: external_exports.string().datetime().optional()
21968
+ });
21969
+ var UpdateQualityObjectiveRequestSchema = external_exports.object({
21970
+ title: external_exports.string().min(1).max(200).optional(),
21971
+ description: external_exports.string().min(1).max(5e3).optional(),
21972
+ unit: external_exports.string().min(1).max(50).optional(),
21973
+ target: external_exports.number().optional(),
21974
+ direction: external_exports.enum(OBJECTIVE_DIRECTIONS).optional(),
21975
+ warningThreshold: external_exports.number().optional(),
21976
+ ownerDepartment: external_exports.string().min(1).optional(),
21977
+ ownerDepartmentRole: external_exports.enum(["manager", "member"]).optional(),
21978
+ alertRecipients: external_exports.array(AlertRecipientSchema).optional(),
21979
+ reviewCadence: external_exports.enum(OBJECTIVE_CADENCES).optional(),
21980
+ targetDate: external_exports.string().datetime().nullable().optional()
21981
+ });
21982
+ var RecordObjectiveValueRequestSchema = external_exports.object({
21983
+ value: external_exports.number(),
21984
+ note: external_exports.string().max(1e3).optional()
21985
+ });
21986
+ var ListQualityObjectivesQuerySchema = external_exports.object({
21987
+ type: external_exports.enum(OBJECTIVE_TYPES).optional(),
21988
+ status: external_exports.enum(OBJECTIVE_STATUSES).optional(),
21989
+ isActive: external_exports.enum(["true", "false"]).transform((v) => v === "true").optional(),
21990
+ page: external_exports.coerce.number().int().positive().default(1),
21991
+ limit: external_exports.coerce.number().int().positive().max(100).default(20)
21992
+ });
21993
+ var QmsObjectiveParamSchema = external_exports.object({
21994
+ orgId: external_exports.string().min(1),
21995
+ qmsId: external_exports.string().min(1)
21996
+ });
21997
+ var ObjectiveIdParamSchema = external_exports.object({
21998
+ orgId: external_exports.string().min(1),
21999
+ qmsId: external_exports.string().min(1),
22000
+ objectiveId: external_exports.string().min(1)
22001
+ });
22002
+ var QualityObjectiveSnapshotResponseSchema = external_exports.object({
22003
+ id: external_exports.string(),
22004
+ value: external_exports.number(),
22005
+ status: external_exports.enum(OBJECTIVE_STATUSES),
22006
+ source: external_exports.enum(["auto", "manual", "review"]),
22007
+ reviewId: external_exports.string().nullable(),
22008
+ capturedAt: external_exports.string(),
22009
+ capturedBy: external_exports.string().nullable()
22010
+ });
22011
+ var QualityObjectiveResponseSchema = external_exports.object({
22012
+ id: external_exports.string(),
22013
+ objectiveNumber: external_exports.string(),
22014
+ title: external_exports.string(),
22015
+ description: external_exports.string(),
22016
+ type: external_exports.enum(OBJECTIVE_TYPES),
22017
+ metricSource: external_exports.enum(AUTO_METRIC_SOURCES).nullable(),
22018
+ unit: external_exports.string(),
22019
+ target: external_exports.number(),
22020
+ direction: external_exports.enum(OBJECTIVE_DIRECTIONS),
22021
+ warningThreshold: external_exports.number(),
22022
+ currentValue: external_exports.number().nullable(),
22023
+ currentValueUpdatedAt: external_exports.string().nullable(),
22024
+ status: external_exports.enum(OBJECTIVE_STATUSES),
22025
+ ownerDepartment: external_exports.string(),
22026
+ ownerDepartmentRole: external_exports.enum(["manager", "member"]),
22027
+ alertRecipients: external_exports.array(
22028
+ external_exports.object({
22029
+ department: external_exports.string(),
22030
+ departmentRole: external_exports.enum(["manager", "member"])
22031
+ })
22032
+ ),
22033
+ reviewCadence: external_exports.enum(OBJECTIVE_CADENCES),
22034
+ effectiveDate: external_exports.string(),
22035
+ targetDate: external_exports.string().nullable(),
22036
+ isActive: external_exports.boolean(),
22037
+ createdAt: external_exports.string(),
22038
+ createdBy: external_exports.string(),
22039
+ updatedAt: external_exports.string(),
22040
+ // Optional: included when fetching detail with snapshots
22041
+ recentSnapshots: external_exports.array(QualityObjectiveSnapshotResponseSchema).optional()
22042
+ });
22043
+ var ListQualityObjectivesResponseSchema = external_exports.object({
22044
+ items: external_exports.array(QualityObjectiveResponseSchema),
22045
+ total: external_exports.number(),
22046
+ page: external_exports.number(),
22047
+ limit: external_exports.number(),
22048
+ hasMore: external_exports.boolean()
22049
+ });
22050
+ var ActionSourceSchema = external_exports.object({
22051
+ type: external_exports.enum(ACTION_SOURCE_TYPES),
22052
+ id: external_exports.string().min(1),
22053
+ displayNumber: external_exports.string().optional()
22054
+ });
22055
+ var CreateActionRequestSchema = external_exports.object({
22056
+ title: external_exports.string().min(1).max(200),
22057
+ description: external_exports.string().min(1).max(5e3),
22058
+ source: ActionSourceSchema,
22059
+ assigneeDepartment: external_exports.string().min(1),
22060
+ assigneeDepartmentRole: external_exports.enum(["manager", "member"]),
22061
+ assigneeId: external_exports.string().optional(),
22062
+ priority: external_exports.enum(ACTION_PRIORITIES),
22063
+ dueDate: external_exports.string().datetime()
22064
+ });
22065
+ var UpdateActionRequestSchema = external_exports.object({
22066
+ title: external_exports.string().min(1).max(200).optional(),
22067
+ description: external_exports.string().min(1).max(5e3).optional(),
22068
+ assigneeDepartment: external_exports.string().min(1).optional(),
22069
+ assigneeDepartmentRole: external_exports.enum(["manager", "member"]).optional(),
22070
+ assigneeId: external_exports.string().nullable().optional(),
22071
+ priority: external_exports.enum(ACTION_PRIORITIES).optional(),
22072
+ dueDate: external_exports.string().datetime().optional(),
22073
+ notes: external_exports.string().max(5e3).optional()
22074
+ });
22075
+ var ListActionsQuerySchema = external_exports.object({
22076
+ sourceType: external_exports.enum(ACTION_SOURCE_TYPES).optional(),
22077
+ sourceId: external_exports.string().optional(),
22078
+ status: external_exports.enum(ACTION_STATUSES).optional(),
22079
+ assigneeDepartment: external_exports.string().optional(),
22080
+ priority: external_exports.enum(ACTION_PRIORITIES).optional(),
22081
+ page: external_exports.coerce.number().int().positive().default(1),
22082
+ limit: external_exports.coerce.number().int().positive().max(100).default(20)
22083
+ });
22084
+ var CompleteActionRequestSchema = external_exports.object({
22085
+ notes: external_exports.string().max(5e3).optional()
22086
+ });
22087
+ var QmsActionParamSchema = external_exports.object({
22088
+ orgId: external_exports.string().min(1),
22089
+ qmsId: external_exports.string().min(1)
22090
+ });
22091
+ var ActionIdParamSchema = external_exports.object({
22092
+ orgId: external_exports.string().min(1),
22093
+ qmsId: external_exports.string().min(1),
22094
+ actionId: external_exports.string().min(1)
22095
+ });
22096
+ var ActionResponseSchema = external_exports.object({
22097
+ id: external_exports.string(),
22098
+ actionNumber: external_exports.string(),
22099
+ title: external_exports.string(),
22100
+ description: external_exports.string(),
22101
+ source: external_exports.object({
22102
+ type: external_exports.enum(ACTION_SOURCE_TYPES),
22103
+ id: external_exports.string(),
22104
+ displayNumber: external_exports.string().optional()
22105
+ }),
22106
+ assigneeDepartment: external_exports.string(),
22107
+ assigneeDepartmentRole: external_exports.enum(["manager", "member"]),
22108
+ assigneeId: external_exports.string().nullable(),
22109
+ priority: external_exports.enum(ACTION_PRIORITIES),
22110
+ dueDate: external_exports.string(),
22111
+ status: external_exports.enum(ACTION_STATUSES),
22112
+ isOverdue: external_exports.boolean(),
22113
+ completedAt: external_exports.string().nullable(),
22114
+ completedBy: external_exports.string().nullable(),
22115
+ notes: external_exports.string().nullable(),
22116
+ createdAt: external_exports.string(),
22117
+ createdBy: external_exports.string(),
22118
+ updatedAt: external_exports.string()
22119
+ });
22120
+ var ListActionsResponseSchema = external_exports.object({
22121
+ items: external_exports.array(ActionResponseSchema),
22122
+ total: external_exports.number(),
22123
+ page: external_exports.number(),
22124
+ limit: external_exports.number(),
22125
+ hasMore: external_exports.boolean()
22126
+ });
22127
+ var CapaStatusSchema = external_exports.enum(CAPA_STATUSES);
22128
+ var CapaClassificationSchema = external_exports.enum(CAPA_CLASSIFICATIONS);
22129
+ var CapaPrioritySchema = external_exports.enum(CAPA_PRIORITIES);
22130
+ var CapaSourceTypeSchema = external_exports.enum(CAPA_SOURCE_TYPES);
22131
+ var CapaActionStatusSchema = external_exports.enum(CAPA_ACTION_STATUSES);
22132
+ var QmsCapaParamSchema = external_exports.object({
22133
+ orgId: external_exports.string().min(1),
22134
+ qmsId: external_exports.string().min(1)
22135
+ });
22136
+ var CapaIdParamSchema = external_exports.object({
22137
+ orgId: external_exports.string().min(1),
22138
+ qmsId: external_exports.string().min(1),
22139
+ capaId: external_exports.string().min(1)
22140
+ });
22141
+ var CapaActionIdParamSchema = external_exports.object({
22142
+ orgId: external_exports.string().min(1),
22143
+ qmsId: external_exports.string().min(1),
22144
+ capaId: external_exports.string().min(1),
22145
+ actionId: external_exports.string().min(1)
22146
+ });
22147
+ var CreateCapaRequestSchema = external_exports.object({
22148
+ classification: CapaClassificationSchema,
22149
+ priority: CapaPrioritySchema,
22150
+ title: external_exports.string().min(1).max(200),
22151
+ description: external_exports.string().min(1).max(5e3),
22152
+ sourceType: CapaSourceTypeSchema,
22153
+ sourceDescription: external_exports.string().min(1).max(2e3),
22154
+ sourceId: external_exports.string().max(200).optional(),
22155
+ dueDate: external_exports.string().datetime().optional(),
22156
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).default([]),
22157
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).default([])
22158
+ });
22159
+ var UpdateCapaRequestSchema = external_exports.object({
22160
+ title: external_exports.string().min(1).max(200).optional(),
22161
+ description: external_exports.string().min(1).max(5e3).optional(),
22162
+ priority: CapaPrioritySchema.optional(),
22163
+ rootCauseDescription: external_exports.string().max(5e3).optional(),
22164
+ verificationDescription: external_exports.string().max(5e3).optional(),
22165
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).optional(),
22166
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).optional(),
22167
+ dueDate: external_exports.string().datetime().nullable().optional()
22168
+ });
22169
+ var CloseCapaRequestSchema = external_exports.object({
22170
+ signatureId: external_exports.string().min(1)
22171
+ });
22172
+ var AddCapaActionRequestSchema = external_exports.object({
22173
+ description: external_exports.string().min(1).max(2e3),
22174
+ assigneeId: external_exports.string().min(1),
22175
+ dueDate: external_exports.string().datetime(),
22176
+ notes: external_exports.string().max(2e3).optional()
22177
+ });
22178
+ var UpdateCapaActionRequestSchema = external_exports.object({
22179
+ description: external_exports.string().min(1).max(2e3).optional(),
22180
+ assigneeId: external_exports.string().min(1).optional(),
22181
+ dueDate: external_exports.string().datetime().optional(),
22182
+ status: CapaActionStatusSchema.optional(),
22183
+ notes: external_exports.string().max(2e3).optional()
22184
+ });
22185
+ var CapaListQuerySchema = PaginationParamsSchema.extend({
22186
+ status: CapaStatusSchema.optional(),
22187
+ classification: CapaClassificationSchema.optional(),
22188
+ priority: CapaPrioritySchema.optional()
22189
+ });
22190
+ var CapaActionResponseSchema = external_exports.object({
22191
+ id: external_exports.string(),
22192
+ description: external_exports.string(),
22193
+ assigneeId: external_exports.string(),
22194
+ assigneeEmail: external_exports.string(),
22195
+ dueDate: external_exports.string(),
22196
+ status: CapaActionStatusSchema,
22197
+ completedAt: external_exports.string().optional(),
22198
+ notes: external_exports.string().optional()
22199
+ });
22200
+ var CapaResponseSchema = external_exports.object({
22201
+ id: external_exports.string(),
22202
+ qmsId: external_exports.string(),
22203
+ organizationId: external_exports.string(),
22204
+ capaNumber: external_exports.string(),
22205
+ classification: CapaClassificationSchema,
22206
+ priority: CapaPrioritySchema,
22207
+ title: external_exports.string(),
22208
+ description: external_exports.string(),
22209
+ sourceType: CapaSourceTypeSchema,
22210
+ sourceId: external_exports.string().optional(),
22211
+ sourceDescription: external_exports.string(),
22212
+ rootCauseDescription: external_exports.string().optional(),
22213
+ verificationDescription: external_exports.string().optional(),
22214
+ affectedDocumentIds: external_exports.array(external_exports.string()),
22215
+ affectedDeviceIds: external_exports.array(external_exports.string()),
22216
+ actions: external_exports.array(CapaActionResponseSchema),
22217
+ status: CapaStatusSchema,
22218
+ createdAt: external_exports.string(),
22219
+ createdBy: external_exports.string(),
22220
+ investigationStartedAt: external_exports.string().optional(),
22221
+ implementationStartedAt: external_exports.string().optional(),
22222
+ verificationStartedAt: external_exports.string().optional(),
22223
+ closedAt: external_exports.string().optional(),
22224
+ closedBy: external_exports.string().optional(),
22225
+ cancelledAt: external_exports.string().optional(),
22226
+ cancelledBy: external_exports.string().optional(),
22227
+ dueDate: external_exports.string().optional()
22228
+ });
22229
+ var CapaListResponseSchema = external_exports.object({
22230
+ items: external_exports.array(CapaResponseSchema),
22231
+ total: external_exports.number(),
22232
+ limit: external_exports.number(),
22233
+ offset: external_exports.number()
22234
+ });
22235
+ var ComplaintStatusSchema = external_exports.enum(COMPLAINT_STATUSES);
22236
+ var ComplaintSeveritySchema = external_exports.enum(COMPLAINT_SEVERITIES);
22237
+ var ComplaintCategorySchema = external_exports.enum(COMPLAINT_CATEGORIES);
22238
+ var ComplaintSourceSchema = external_exports.enum(COMPLAINT_SOURCES);
22239
+ var QmsComplaintParamSchema = external_exports.object({
22240
+ orgId: external_exports.string().min(1),
22241
+ qmsId: external_exports.string().min(1)
22242
+ });
22243
+ var ComplaintIdParamSchema = external_exports.object({
22244
+ orgId: external_exports.string().min(1),
22245
+ qmsId: external_exports.string().min(1),
22246
+ complaintId: external_exports.string().min(1)
22247
+ });
22248
+ var ComplainantSchema = external_exports.object({
22249
+ name: external_exports.string().min(1).max(200),
22250
+ email: external_exports.string().email().optional(),
22251
+ phone: external_exports.string().max(50).optional(),
22252
+ organization: external_exports.string().max(200).optional()
22253
+ });
22254
+ var CreateComplaintRequestSchema = external_exports.object({
22255
+ title: external_exports.string().min(1).max(200),
22256
+ description: external_exports.string().min(1).max(5e3),
22257
+ severity: ComplaintSeveritySchema,
22258
+ category: ComplaintCategorySchema,
22259
+ source: ComplaintSourceSchema,
22260
+ receivedDate: external_exports.string().datetime(),
22261
+ complainant: ComplainantSchema,
22262
+ reportable: external_exports.boolean(),
22263
+ reportabilityJustification: external_exports.string().max(5e3).optional(),
22264
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).default([]),
22265
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).default([]),
22266
+ assigneeId: external_exports.string().min(1).optional(),
22267
+ dueDate: external_exports.string().datetime().optional()
22268
+ });
22269
+ var UpdateComplaintRequestSchema = external_exports.object({
22270
+ title: external_exports.string().min(1).max(200).optional(),
22271
+ description: external_exports.string().min(1).max(5e3).optional(),
22272
+ severity: ComplaintSeveritySchema.optional(),
22273
+ category: ComplaintCategorySchema.optional(),
22274
+ source: ComplaintSourceSchema.optional(),
22275
+ reportable: external_exports.boolean().optional(),
22276
+ reportabilityJustification: external_exports.string().max(5e3).optional(),
22277
+ investigationSummary: external_exports.string().max(5e3).optional(),
22278
+ rootCauseDescription: external_exports.string().max(5e3).optional(),
22279
+ resolutionDescription: external_exports.string().max(5e3).optional(),
22280
+ affectedDeviceIds: external_exports.array(external_exports.string().min(1)).optional(),
22281
+ affectedDocumentIds: external_exports.array(external_exports.string().min(1)).optional(),
22282
+ assigneeId: external_exports.string().min(1).nullable().optional(),
22283
+ dueDate: external_exports.string().datetime().nullable().optional()
22284
+ });
22285
+ var ResolveComplaintRequestSchema = external_exports.object({
22286
+ resolutionDescription: external_exports.string().min(1).max(5e3)
22287
+ });
22288
+ var CloseComplaintRequestSchema = external_exports.object({
22289
+ signatureId: external_exports.string().min(1)
22290
+ });
22291
+ var CancelComplaintRequestSchema = external_exports.object({
22292
+ reason: external_exports.string().min(1).max(5e3)
22293
+ });
22294
+ var ComplaintListQuerySchema = PaginationParamsSchema.extend({
22295
+ status: ComplaintStatusSchema.optional(),
22296
+ severity: ComplaintSeveritySchema.optional(),
22297
+ category: ComplaintCategorySchema.optional(),
22298
+ source: ComplaintSourceSchema.optional()
22299
+ });
22300
+ var ComplaintResponseSchema = external_exports.object({
22301
+ id: external_exports.string(),
22302
+ qmsId: external_exports.string(),
22303
+ organizationId: external_exports.string(),
22304
+ complaintNumber: external_exports.string(),
22305
+ title: external_exports.string(),
22306
+ description: external_exports.string(),
22307
+ status: ComplaintStatusSchema,
22308
+ severity: ComplaintSeveritySchema,
22309
+ category: ComplaintCategorySchema,
22310
+ source: ComplaintSourceSchema,
22311
+ receivedDate: external_exports.string(),
22312
+ complainant: ComplainantSchema,
22313
+ reportable: external_exports.boolean(),
22314
+ reportabilityJustification: external_exports.string().optional(),
22315
+ investigationSummary: external_exports.string().optional(),
22316
+ rootCauseDescription: external_exports.string().optional(),
22317
+ resolutionDescription: external_exports.string().optional(),
22318
+ affectedDeviceIds: external_exports.array(external_exports.string()),
22319
+ affectedDocumentIds: external_exports.array(external_exports.string()),
22320
+ linkedCapaId: external_exports.string().optional(),
22321
+ assigneeId: external_exports.string().optional(),
22322
+ assigneeEmail: external_exports.string().optional(),
22323
+ dueDate: external_exports.string().optional(),
22324
+ createdAt: external_exports.string(),
22325
+ createdBy: external_exports.string(),
22326
+ investigationStartedAt: external_exports.string().optional(),
22327
+ resolvedAt: external_exports.string().optional(),
22328
+ resolvedBy: external_exports.string().optional(),
22329
+ closedAt: external_exports.string().optional(),
22330
+ closedBy: external_exports.string().optional(),
22331
+ cancellationReason: external_exports.string().optional(),
22332
+ cancelledAt: external_exports.string().optional(),
22333
+ cancelledBy: external_exports.string().optional()
22334
+ });
22335
+ var ComplaintListResponseSchema = external_exports.object({
22336
+ items: external_exports.array(ComplaintResponseSchema),
22337
+ total: external_exports.number(),
22338
+ limit: external_exports.number(),
22339
+ offset: external_exports.number()
22340
+ });
22341
+ var EscalateToCapaResponseSchema = external_exports.object({
22342
+ capaId: external_exports.string()
22343
+ });
22344
+ var DCODocumentChangeTypeSchema = external_exports.enum(["new", "revision", "obsolete"]);
22345
+ var DCOStatusSchema = external_exports.enum(["draft", "pending_signatures", "approved", "effective"]);
22346
+ var DCOScopeSchema = external_exports.enum(["release", "documents", "maintenance"]);
22347
+ var DCODocumentEntrySchema = external_exports.object({
22348
+ documentId: external_exports.string().min(1),
22349
+ repositoryId: external_exports.string().min(1),
22350
+ commitSha: external_exports.string().min(1),
22351
+ changeType: DCODocumentChangeTypeSchema,
22352
+ changeDescription: external_exports.string().min(1).max(2e3)
22353
+ });
22354
+ var CreateDCORequestSchema = external_exports.object({
22355
+ title: external_exports.string().min(1).max(200),
22356
+ description: external_exports.string().min(1).max(5e3),
22357
+ scope: DCOScopeSchema,
22358
+ effectiveDate: external_exports.string().datetime(),
22359
+ documents: external_exports.array(DCODocumentEntrySchema).min(1),
22360
+ /** Required when scope='release' */
22361
+ releaseId: external_exports.string().min(1).optional()
22362
+ }).superRefine((data, ctx) => {
22363
+ if (data.scope === "release" && !data.releaseId) {
22364
+ ctx.addIssue({
22365
+ code: external_exports.ZodIssueCode.custom,
22366
+ message: 'releaseId is required when scope is "release"',
22367
+ path: ["releaseId"]
22368
+ });
22369
+ }
22370
+ });
22371
+ var UpdateDCORequestSchema = external_exports.object({
22372
+ title: external_exports.string().min(1).max(200).optional(),
22373
+ description: external_exports.string().min(1).max(5e3).optional(),
22374
+ effectiveDate: external_exports.string().datetime().optional(),
22375
+ documents: external_exports.array(DCODocumentEntrySchema).min(1).optional()
22376
+ });
22377
+ var SubmitDCORequestSchema = external_exports.object({
22378
+ departments: external_exports.array(external_exports.string().min(1)).min(1, "At least one department must be specified")
22379
+ });
22380
+ var FulfillDCOObligationRequestSchema = external_exports.object({
22381
+ obligationId: external_exports.string().min(1),
22382
+ meaning: external_exports.string().min(1).max(500),
22383
+ /** Fresh ID token from re-authentication (Part 11 §11.200 compliance) */
22384
+ idToken: external_exports.string().min(1),
22385
+ /** Part 11: ID of the ERSD version the signer accepted */
22386
+ ersdDisclosureId: external_exports.string().min(1),
22387
+ /** Part 11: ISO date string when the signer accepted the ERSD */
22388
+ ersdAcceptedAt: external_exports.string().datetime()
22389
+ });
22390
+ var DCOIdParamSchema = external_exports.object({
22391
+ orgId: external_exports.string().min(1),
22392
+ qmsId: external_exports.string().min(1),
22393
+ dcoId: external_exports.string().min(1)
22394
+ });
22395
+ var QmsDCOParamSchema = external_exports.object({
22396
+ orgId: external_exports.string().min(1),
22397
+ qmsId: external_exports.string().min(1)
22398
+ });
22399
+ var DCOListQuerySchema = PaginationParamsSchema.extend({
22400
+ status: DCOStatusSchema.optional(),
22401
+ scope: DCOScopeSchema.optional()
22402
+ });
22403
+ var RevisionAssignmentSchema = external_exports.object({
22404
+ documentId: external_exports.string(),
22405
+ revisionNumber: external_exports.number()
22406
+ });
22407
+ var DCOSigningObligationSchema = external_exports.object({
22408
+ obligationId: external_exports.string(),
22409
+ department: external_exports.string(),
22410
+ status: external_exports.enum(["pending", "fulfilled"]),
22411
+ meaning: external_exports.string().optional(),
22412
+ fulfilledBySignatureId: external_exports.string().optional(),
22413
+ fulfilledAt: external_exports.string().optional()
22414
+ });
22415
+ var DCOResponseSchema = external_exports.object({
22416
+ id: external_exports.string(),
22417
+ organizationId: external_exports.string(),
22418
+ qmsId: external_exports.string(),
22419
+ dcoNumber: external_exports.string(),
22420
+ title: external_exports.string(),
22421
+ description: external_exports.string(),
22422
+ scope: DCOScopeSchema,
22423
+ releaseId: external_exports.string().optional(),
22424
+ documents: external_exports.array(DCODocumentEntrySchema),
22425
+ status: DCOStatusSchema,
22426
+ effectiveDate: external_exports.string(),
22427
+ createdAt: external_exports.string(),
22428
+ createdBy: external_exports.string(),
22429
+ approvedAt: external_exports.string().optional(),
22430
+ effectiveAt: external_exports.string().optional(),
22431
+ revisionAssignments: external_exports.array(RevisionAssignmentSchema),
22432
+ signingObligations: external_exports.array(DCOSigningObligationSchema)
22433
+ });
22434
+ var DCOListResponseSchema = external_exports.object({
22435
+ items: external_exports.array(DCOResponseSchema),
22436
+ total: external_exports.number(),
22437
+ limit: external_exports.number(),
22438
+ offset: external_exports.number()
22439
+ });
22440
+ var DocumentRevisionResponseSchema = external_exports.object({
22441
+ id: external_exports.string(),
22442
+ revisionNumber: external_exports.number(),
22443
+ dcoId: external_exports.string(),
22444
+ dcoNumber: external_exports.string(),
22445
+ releaseId: external_exports.string().optional(),
22446
+ releaseName: external_exports.string().optional(),
22447
+ commitSha: external_exports.string(),
22448
+ changeType: DCODocumentChangeTypeSchema,
22449
+ changeDescription: external_exports.string(),
22450
+ effectiveAt: external_exports.string(),
22451
+ effectiveBy: external_exports.string()
22452
+ });
22453
+ var RequestDCOExportResponseSchema = external_exports.object({
22454
+ message: external_exports.string(),
22455
+ estimatedMinutes: external_exports.number()
22456
+ });
21409
22457
  var RegulatoryFrameworkSchema = external_exports.enum([
21410
22458
  "ISO_13485",
21411
22459
  "IEC_62304",
@@ -21498,7 +22546,6 @@ var LinkTypeSchema = external_exports.enum([
21498
22546
  "analyzes"
21499
22547
  ]);
21500
22548
  var AcceptabilityStatusSchema = external_exports.enum(["acceptable", "review_required", "unacceptable"]);
21501
- var DepartmentRoleSchema = external_exports.enum(["manager", "member"]);
21502
22549
  var RiskDocumentStatusSchema = external_exports.enum([
21503
22550
  "draft",
21504
22551
  "in_review",
@@ -21555,15 +22602,20 @@ var RiskEntryFrontmatterSchema = external_exports.object({
21555
22602
  harm_assessments: external_exports.array(HarmAssessmentSchema).min(1),
21556
22603
  mitigations: external_exports.array(MitigationSchema).optional(),
21557
22604
  cvss_score: external_exports.number().min(0).max(10).optional(),
21558
- cvss_vector: external_exports.string().regex(/^CVSS:3\.[01]\/AV:[NALP]\/AC:[LH]\/PR:[NLH]\/UI:[NR]\/S:[UC]\/C:[NLH]\/I:[NLH]\/A:[NLH]$/).optional()
21559
- }).refine((data) => {
21560
- if (data.type === "security_risk") {
21561
- return data.harm_assessments.every((ha) => ha.inherent_exploitability != null);
22605
+ cvss_vector: external_exports.string().regex(
22606
+ /^CVSS:3\.[01]\/AV:[NALP]\/AC:[LH]\/PR:[NLH]\/UI:[NR]\/S:[UC]\/C:[NLH]\/I:[NLH]\/A:[NLH]$/
22607
+ ).optional()
22608
+ }).refine(
22609
+ (data) => {
22610
+ if (data.type === "security_risk") {
22611
+ return data.harm_assessments.every((ha) => ha.inherent_exploitability != null);
22612
+ }
22613
+ return data.harm_assessments.every((ha) => ha.inherent_probability != null);
22614
+ },
22615
+ {
22616
+ message: "Security risks must use inherent_exploitability; software/usability risks must use inherent_probability"
21562
22617
  }
21563
- return data.harm_assessments.every((ha) => ha.inherent_probability != null);
21564
- }, {
21565
- message: "Security risks must use inherent_exploitability; software/usability risks must use inherent_probability"
21566
- });
22618
+ );
21567
22619
  var HazardFrontmatterSchema = external_exports.object({
21568
22620
  type: external_exports.enum(["haz_soe_software", "haz_soe_security"]),
21569
22621
  id: external_exports.string().min(1),
@@ -21613,10 +22665,12 @@ var RiskMatrixConfigSchema = external_exports.object({
21613
22665
  unacceptable: external_exports.array(external_exports.tuple([external_exports.number(), external_exports.number()])),
21614
22666
  review_required: external_exports.array(external_exports.tuple([external_exports.number(), external_exports.number()])).optional()
21615
22667
  }),
21616
- overrides: external_exports.record(external_exports.object({
21617
- unacceptable: external_exports.array(external_exports.tuple([external_exports.number(), external_exports.number()])),
21618
- review_required: external_exports.array(external_exports.tuple([external_exports.number(), external_exports.number()])).optional()
21619
- })).optional()
22668
+ overrides: external_exports.record(
22669
+ external_exports.object({
22670
+ unacceptable: external_exports.array(external_exports.tuple([external_exports.number(), external_exports.number()])),
22671
+ review_required: external_exports.array(external_exports.tuple([external_exports.number(), external_exports.number()])).optional()
22672
+ })
22673
+ ).optional()
21620
22674
  });
21621
22675
  var UsabilityPlanFrontmatterSchema = external_exports.object({
21622
22676
  type: external_exports.literal("usability_plan"),
@@ -22231,11 +23285,6 @@ var EmailAddressSchema = external_exports.object({
22231
23285
  value: external_exports.string().email(),
22232
23286
  verified: external_exports.boolean()
22233
23287
  });
22234
- var ReviewerRuleSchema = external_exports.object({
22235
- documentType: DocumentTypeSchema,
22236
- requiredDepartments: external_exports.array(external_exports.string()),
22237
- finalApproverDepartment: external_exports.string()
22238
- });
22239
23288
  var SyncStatusSchema = external_exports.enum(["active", "paused", "error"]);
22240
23289
  var AuditActionSchema = external_exports.enum([
22241
23290
  // Organization
@@ -22434,186 +23483,1995 @@ var ResourceTypeSchema = external_exports.enum([
22434
23483
  "audit_log",
22435
23484
  "risk_matrix"
22436
23485
  ]);
22437
- var ReleaseTypeSchema = external_exports.enum(["qms", "device", "combined"]);
22438
- var ReleaseStatusSchema = external_exports.enum(["draft", "in_review", "approved", "published"]);
22439
- var SignatureTypeSchema = external_exports.enum(["author", "dept_reviewer", "final_approver", "trainee"]);
22440
- var ChangeTypeSchema = external_exports.enum(["added", "modified", "deleted"]);
22441
- var SigningRequestStatusSchema = external_exports.enum([
22442
- "sent",
22443
- "partially_signed",
22444
- "completed",
22445
- "expired",
22446
- "cancelled"
23486
+ var DocumentSourceTypeSchema = external_exports.enum([
23487
+ "markdown",
23488
+ "pdf"
22447
23489
  ]);
22448
- var SignerStatusSchema = external_exports.enum(["pending", "viewed", "signed", "declined"]);
22449
- var FieldTypeSchema = external_exports.enum(["signature", "initials", "date"]);
22450
- var RISK_DOCUMENT_TYPES = [
22451
- "software_risk",
22452
- "usability_risk",
22453
- "security_risk"
22454
- ];
22455
- var HAZARD_DOCUMENT_TYPES = ["haz_soe_software", "haz_soe_security"];
22456
- var ALL_RISK_RELATED_DOCUMENT_TYPES = [
22457
- ...RISK_DOCUMENT_TYPES,
22458
- ...HAZARD_DOCUMENT_TYPES,
22459
- "hazardous_situation",
22460
- "harm"
22461
- ];
22462
- var QMS_DOCUMENT_TYPES = [
22463
- "sop",
22464
- "policy",
22465
- "work_instruction",
22466
- "supplier",
22467
- // Internal audit management (ISO 13485 §8.2.2)
22468
- "audit_schedule",
22469
- "audit_report",
22470
- // Management review (ISO 13485 §5.6)
22471
- "management_review"
22472
- ];
22473
- var DEVICE_DOCUMENT_TYPES = [
22474
- "user_need",
22475
- "requirement",
22476
- "architecture",
22477
- "detailed_design",
22478
- "test_protocol",
22479
- "test_report",
22480
- "usability_risk",
23490
+ var ChangeTypeSchema = external_exports.enum(["added", "modified", "removed"]);
23491
+ var GetDocumentsQuerySchema = external_exports.object({
23492
+ organizationId: external_exports.string().min(1),
23493
+ repositoryId: external_exports.string().min(1).optional(),
23494
+ docType: DocumentTypeSchema.optional(),
23495
+ status: DocumentStatusSchema.optional(),
23496
+ searchQuery: external_exports.string().optional(),
23497
+ limit: external_exports.coerce.number().int().positive().max(200).default(50),
23498
+ offset: external_exports.coerce.number().int().nonnegative().default(0)
23499
+ });
23500
+ var GetDocumentQuerySchema = external_exports.object({
23501
+ organizationId: external_exports.string().min(1),
23502
+ includeChangelog: external_exports.string().transform((v) => v === "true").pipe(external_exports.boolean()).default("false")
23503
+ });
23504
+ var GetDocumentContentQuerySchema = external_exports.object({
23505
+ organizationId: external_exports.string().min(1),
23506
+ commitSha: external_exports.string().min(1).optional()
23507
+ });
23508
+ var GetTraceabilityMatrixQuerySchema = external_exports.object({
23509
+ organizationId: external_exports.string().min(1),
23510
+ repositoryId: external_exports.string().min(1).optional(),
23511
+ sourceType: DocumentTypeSchema,
23512
+ targetType: DocumentTypeSchema,
23513
+ linkType: LinkTypeSchema,
23514
+ statusFilter: external_exports.string().transform((v) => v.split(",").filter(Boolean)).pipe(external_exports.array(DocumentStatusSchema)).optional()
23515
+ });
23516
+ var GetGapsQuerySchema = external_exports.object({
23517
+ organizationId: external_exports.string().min(1),
23518
+ repositoryId: external_exports.string().min(1).optional(),
23519
+ docTypes: external_exports.string().transform((v) => v.split(",").filter(Boolean)).pipe(external_exports.array(DocumentTypeSchema)).optional()
23520
+ });
23521
+ var GetDeviceTraceabilityMatrixQuerySchema = external_exports.object({
23522
+ sourceType: DocumentTypeSchema,
23523
+ targetType: DocumentTypeSchema,
23524
+ linkType: LinkTypeSchema,
23525
+ statusFilter: external_exports.string().transform((v) => v.split(",").filter(Boolean)).pipe(external_exports.array(DocumentStatusSchema)).optional()
23526
+ });
23527
+ var GetDeviceGapsQuerySchema = external_exports.object({
23528
+ docTypes: external_exports.string().transform((v) => v.split(",").filter(Boolean)).pipe(external_exports.array(DocumentTypeSchema)).optional()
23529
+ });
23530
+ var DocumentIdParamSchema = external_exports.object({
23531
+ documentId: external_exports.string().min(1)
23532
+ });
23533
+ var ChangelogEntryResponseSchema = external_exports.object({
23534
+ id: external_exports.string(),
23535
+ changeType: ChangeTypeSchema,
23536
+ commitSha: external_exports.string(),
23537
+ previousCommitSha: external_exports.string().optional(),
23538
+ changedBy: external_exports.string().optional(),
23539
+ changedByEmail: external_exports.string().optional(),
23540
+ changedAt: external_exports.string(),
23541
+ // ISO datetime
23542
+ pullRequestNumber: external_exports.number().optional(),
23543
+ pullRequestTitle: external_exports.string().optional(),
23544
+ releaseId: external_exports.string().optional(),
23545
+ releaseName: external_exports.string().optional(),
23546
+ changeSummary: external_exports.string().optional()
23547
+ });
23548
+ var LinkResponseSchema = external_exports.object({
23549
+ id: external_exports.string(),
23550
+ sourceDocumentId: external_exports.string(),
23551
+ targetDocumentId: external_exports.string(),
23552
+ linkType: LinkTypeSchema,
23553
+ sourceDocPath: external_exports.string(),
23554
+ targetDocPath: external_exports.string(),
23555
+ sourceRepositoryId: external_exports.string(),
23556
+ targetRepositoryId: external_exports.string().optional(),
23557
+ rationale: external_exports.string().optional()
23558
+ });
23559
+ var DocumentSummaryResponseSchema = external_exports.object({
23560
+ id: external_exports.string(),
23561
+ documentId: external_exports.string(),
23562
+ title: external_exports.string(),
23563
+ docType: DocumentTypeSchema,
23564
+ status: DocumentStatusSchema,
23565
+ sourceType: DocumentSourceTypeSchema,
23566
+ path: external_exports.string(),
23567
+ repositoryId: external_exports.string(),
23568
+ repositoryName: external_exports.string(),
23569
+ repositoryType: external_exports.enum(["qms", "device"]),
23570
+ lastSyncedAt: external_exports.string(),
23571
+ // ISO datetime
23572
+ metadata: external_exports.record(external_exports.string(), external_exports.unknown()).optional()
23573
+ });
23574
+ var DocumentDetailResponseSchema = DocumentSummaryResponseSchema.extend({
23575
+ metadata: external_exports.record(external_exports.string(), external_exports.unknown()),
23576
+ currentCommitSha: external_exports.string(),
23577
+ sourcePath: external_exports.string().nullable(),
23578
+ changelog: external_exports.array(ChangelogEntryResponseSchema).optional(),
23579
+ incomingLinks: external_exports.array(LinkResponseSchema).optional(),
23580
+ outgoingLinks: external_exports.array(LinkResponseSchema).optional()
23581
+ });
23582
+ var DocumentContentResponseSchema = external_exports.object({
23583
+ content: external_exports.string(),
23584
+ commitSha: external_exports.string(),
23585
+ path: external_exports.string(),
23586
+ githubUrl: external_exports.string()
23587
+ });
23588
+ var GetDocumentsResponseSchema = external_exports.object({
23589
+ documents: external_exports.array(DocumentSummaryResponseSchema),
23590
+ total: external_exports.number(),
23591
+ limit: external_exports.number(),
23592
+ offset: external_exports.number()
23593
+ });
23594
+ var TraceabilityRowSchema = external_exports.object({
23595
+ sourceId: external_exports.string(),
23596
+ sourceDocumentId: external_exports.string(),
23597
+ sourceTitle: external_exports.string(),
23598
+ sourcePath: external_exports.string(),
23599
+ linked: external_exports.boolean(),
23600
+ targetIds: external_exports.array(external_exports.string()),
23601
+ targetDocumentIds: external_exports.array(external_exports.string()),
23602
+ targetTitles: external_exports.array(external_exports.string())
23603
+ });
23604
+ var TraceabilityMatrixResponseSchema = external_exports.object({
23605
+ sourceType: DocumentTypeSchema,
23606
+ targetType: DocumentTypeSchema,
23607
+ linkType: LinkTypeSchema,
23608
+ coveragePercent: external_exports.number(),
23609
+ totalSources: external_exports.number(),
23610
+ coveredSources: external_exports.number(),
23611
+ rows: external_exports.array(TraceabilityRowSchema)
23612
+ });
23613
+ var GapItemSchema = external_exports.object({
23614
+ documentId: external_exports.string(),
23615
+ documentTitle: external_exports.string(),
23616
+ documentPath: external_exports.string(),
23617
+ docType: DocumentTypeSchema,
23618
+ missingLinkType: LinkTypeSchema,
23619
+ expectedTargetType: DocumentTypeSchema
23620
+ });
23621
+ var GapsResponseSchema = external_exports.object({
23622
+ totalGaps: external_exports.number(),
23623
+ gaps: external_exports.array(GapItemSchema)
23624
+ });
23625
+ var ComponentResponseSchema = external_exports.object({
23626
+ id: external_exports.string(),
23627
+ componentName: external_exports.string(),
23628
+ version: external_exports.string(),
23629
+ license: external_exports.string().optional(),
23630
+ safetyRiskClass: external_exports.string().optional(),
23631
+ purpose: external_exports.string().optional(),
23632
+ verification: external_exports.string().optional(),
23633
+ cveStatus: external_exports.string().optional(),
23634
+ category: external_exports.string().optional(),
23635
+ supplierId: external_exports.string().optional(),
23636
+ sourceFormat: external_exports.enum(["markdown_table", "cyclonedx", "spdx"]),
23637
+ purl: external_exports.string().optional()
23638
+ });
23639
+ var GetComponentsResponseSchema = external_exports.array(ComponentResponseSchema);
23640
+ var DocumentSignoffObligationSchema = external_exports.object({
23641
+ obligationId: external_exports.string(),
23642
+ role: external_exports.enum(["author", "reviewer", "approver"]),
23643
+ department: external_exports.string(),
23644
+ status: external_exports.enum(["pending", "fulfilled"]),
23645
+ fulfilledByUserId: external_exports.string().optional(),
23646
+ fulfilledByUserEmail: external_exports.string().optional(),
23647
+ fulfilledByUserDisplayName: external_exports.string().optional(),
23648
+ fulfilledAt: external_exports.string().optional(),
23649
+ signatureId: external_exports.string().optional()
23650
+ });
23651
+ var DocumentSignoffStatusResponseSchema = external_exports.object({
23652
+ documentId: external_exports.string(),
23653
+ commitSha: external_exports.string(),
23654
+ obligations: external_exports.array(DocumentSignoffObligationSchema),
23655
+ progress: external_exports.object({
23656
+ total: external_exports.number(),
23657
+ fulfilled: external_exports.number(),
23658
+ isComplete: external_exports.boolean()
23659
+ })
23660
+ });
23661
+ var DocumentExportResponseSchema = external_exports.object({
23662
+ message: external_exports.string()
23663
+ });
23664
+ var CompiledDocumentPresetSchema = external_exports.enum(["srs", "prs", "dmr", "risk"]);
23665
+ var CompiledDocumentQuerySchema = external_exports.object({
23666
+ organizationId: external_exports.string().min(1),
23667
+ repositoryId: external_exports.string().min(1).optional(),
23668
+ docType: DocumentTypeSchema.optional(),
23669
+ category: external_exports.string().optional(),
23670
+ status: DocumentStatusSchema.optional(),
23671
+ preset: CompiledDocumentPresetSchema.optional()
23672
+ }).refine((data) => data.preset || data.docType, {
23673
+ message: "Either preset or docType must be provided"
23674
+ });
23675
+ var CompiledTableOfContentsEntrySchema = external_exports.object({
23676
+ documentId: external_exports.string(),
23677
+ title: external_exports.string(),
23678
+ anchor: external_exports.string()
23679
+ });
23680
+ var CompiledDocumentItemSchema = external_exports.object({
23681
+ documentId: external_exports.string(),
23682
+ title: external_exports.string(),
23683
+ docType: DocumentTypeSchema,
23684
+ status: DocumentStatusSchema,
23685
+ path: external_exports.string(),
23686
+ content: external_exports.string(),
23687
+ anchor: external_exports.string()
23688
+ });
23689
+ var CompiledDocumentResponseSchema = external_exports.object({
23690
+ title: external_exports.string(),
23691
+ generatedAt: external_exports.string(),
23692
+ documentCount: external_exports.number(),
23693
+ tableOfContents: external_exports.array(CompiledTableOfContentsEntrySchema),
23694
+ documents: external_exports.array(CompiledDocumentItemSchema)
23695
+ });
23696
+ var DepartmentRoleSchema = external_exports.enum(["manager", "member"]);
23697
+ var ReviewerRuleSchema = external_exports.object({
23698
+ documentType: external_exports.string(),
23699
+ requiredDepartments: external_exports.array(external_exports.string()),
23700
+ finalApproverDepartment: external_exports.string()
23701
+ });
23702
+ var RoleSchema2 = external_exports.enum(["admin", "member", "auditor"]);
23703
+ var AuditorTypeSchema = external_exports.enum(["internal", "external"]);
23704
+ var CreateOrganizationRequestSchema = external_exports.object({
23705
+ name: external_exports.string().min(3).max(100),
23706
+ frameworks: external_exports.array(RegulatoryFrameworkSchema).min(1),
23707
+ department: external_exports.string().min(1)
23708
+ });
23709
+ var ChecklistTemplateItemSchema = external_exports.object({
23710
+ id: external_exports.string().min(1),
23711
+ label: external_exports.string().min(1).max(500),
23712
+ sortOrder: external_exports.number().int().nonnegative()
23713
+ });
23714
+ var UpdateOrganizationSettingsRequestSchema = external_exports.object({
23715
+ name: external_exports.string().min(1).optional(),
23716
+ frameworks: external_exports.array(RegulatoryFrameworkSchema).optional(),
23717
+ departments: external_exports.array(external_exports.string()).optional(),
23718
+ reviewerRules: external_exports.array(ReviewerRuleSchema).optional(),
23719
+ releaseChecklistTemplate: external_exports.array(ChecklistTemplateItemSchema).max(30).optional()
23720
+ });
23721
+ var UpdateMemberRequestSchema = external_exports.object({
23722
+ department: external_exports.string().optional(),
23723
+ role: RoleSchema2.optional(),
23724
+ departmentRole: DepartmentRoleSchema.optional()
23725
+ });
23726
+ var InviteUserRequestSchema = external_exports.object({
23727
+ email: external_exports.string().email(),
23728
+ department: external_exports.string().min(1),
23729
+ role: RoleSchema2,
23730
+ departmentRole: DepartmentRoleSchema.optional(),
23731
+ auditorType: AuditorTypeSchema.optional(),
23732
+ accessExpiresAt: external_exports.string().datetime().optional()
23733
+ }).superRefine((data, ctx) => {
23734
+ if (data.role === "auditor" && !data.auditorType) {
23735
+ ctx.addIssue({
23736
+ code: external_exports.ZodIssueCode.custom,
23737
+ message: "auditorType is required when role is auditor",
23738
+ path: ["auditorType"]
23739
+ });
23740
+ }
23741
+ if (data.role !== "auditor" && data.auditorType) {
23742
+ ctx.addIssue({
23743
+ code: external_exports.ZodIssueCode.custom,
23744
+ message: "auditorType is only valid for auditor role",
23745
+ path: ["auditorType"]
23746
+ });
23747
+ }
23748
+ if (data.role !== "auditor" && data.accessExpiresAt) {
23749
+ ctx.addIssue({
23750
+ code: external_exports.ZodIssueCode.custom,
23751
+ message: "accessExpiresAt is only valid for auditor role",
23752
+ path: ["accessExpiresAt"]
23753
+ });
23754
+ }
23755
+ });
23756
+ var AcceptInviteRequestSchema = external_exports.object({
23757
+ token: external_exports.string().min(1)
23758
+ });
23759
+ var UpdateProfileRequestSchema = external_exports.object({
23760
+ displayName: external_exports.string().min(1).max(100).optional()
23761
+ });
23762
+ var OrgIdParamSchema = external_exports.object({
23763
+ orgId: external_exports.string().min(1)
23764
+ });
23765
+ var MemberIdParamSchema = external_exports.object({
23766
+ orgId: external_exports.string().min(1),
23767
+ memberId: external_exports.string().min(1)
23768
+ });
23769
+ var InviteIdParamSchema = external_exports.object({
23770
+ orgId: external_exports.string().min(1),
23771
+ inviteId: external_exports.string().min(1)
23772
+ });
23773
+ var SubscriptionStatusSchema = external_exports.enum([
23774
+ "active",
23775
+ "trialing",
23776
+ "past_due",
23777
+ "canceled",
23778
+ "incomplete"
23779
+ ]);
23780
+ var SubscriptionResponseSchema = external_exports.object({
23781
+ status: SubscriptionStatusSchema,
23782
+ currentPeriodEnd: external_exports.string(),
23783
+ cancelAtPeriodEnd: external_exports.boolean()
23784
+ });
23785
+ var CreateCheckoutSessionResponseSchema = external_exports.object({
23786
+ checkoutUrl: external_exports.string().url()
23787
+ });
23788
+ var CreatePortalSessionResponseSchema = external_exports.object({
23789
+ portalUrl: external_exports.string().url()
23790
+ });
23791
+ var InviteStatusSchema = external_exports.enum(["pending", "accepted", "expired", "revoked"]);
23792
+ var MemberResponseSchema = external_exports.object({
23793
+ id: external_exports.string(),
23794
+ email: external_exports.string().email(),
23795
+ emailVerified: external_exports.boolean(),
23796
+ displayName: external_exports.string(),
23797
+ department: external_exports.string(),
23798
+ departmentRole: DepartmentRoleSchema.optional(),
23799
+ role: RoleSchema2,
23800
+ auditorType: AuditorTypeSchema.optional(),
23801
+ accessExpiresAt: external_exports.string().optional(),
23802
+ // ISO date (for external auditors)
23803
+ status: MemberStatusSchema,
23804
+ joinedAt: external_exports.string()
23805
+ // ISO date
23806
+ });
23807
+ var InviteResponseSchema = external_exports.object({
23808
+ id: external_exports.string(),
23809
+ email: external_exports.string().email(),
23810
+ department: external_exports.string(),
23811
+ role: RoleSchema2,
23812
+ status: InviteStatusSchema,
23813
+ expiresAt: external_exports.string(),
23814
+ // ISO date
23815
+ createdAt: external_exports.string()
23816
+ // ISO date
23817
+ });
23818
+ var OrganizationResponseSchema = external_exports.object({
23819
+ id: external_exports.string(),
23820
+ name: external_exports.string(),
23821
+ role: RoleSchema2,
23822
+ department: external_exports.string(),
23823
+ gitHubAppInstallationId: external_exports.number().optional(),
23824
+ gitHubOrgName: external_exports.string().optional(),
23825
+ subscription: SubscriptionResponseSchema.optional()
23826
+ });
23827
+ var OrganizationSettingsResponseSchema = external_exports.object({
23828
+ frameworks: external_exports.array(external_exports.string()),
23829
+ departments: external_exports.array(external_exports.string()),
23830
+ defaultSafetyClass: SafetyClassSchema,
23831
+ reviewerRules: external_exports.array(ReviewerRuleSchema),
23832
+ releaseChecklistTemplate: external_exports.array(ChecklistTemplateItemSchema).optional()
23833
+ });
23834
+ var CreateOrganizationResponseSchema = external_exports.object({
23835
+ organizationId: external_exports.string()
23836
+ });
23837
+ var GetOrganizationsResponseSchema = external_exports.object({
23838
+ organizations: external_exports.array(OrganizationResponseSchema)
23839
+ });
23840
+ var GetMembersResponseSchema = external_exports.object({
23841
+ members: external_exports.array(MemberResponseSchema)
23842
+ });
23843
+ var GetInvitesResponseSchema = external_exports.object({
23844
+ invites: external_exports.array(InviteResponseSchema)
23845
+ });
23846
+ var AcceptInviteResponseSchema = external_exports.object({
23847
+ organizationId: external_exports.string(),
23848
+ organizationName: external_exports.string()
23849
+ });
23850
+ var PendingInviteResponseSchema = external_exports.object({
23851
+ id: external_exports.string(),
23852
+ organizationId: external_exports.string(),
23853
+ organizationName: external_exports.string(),
23854
+ invitedByName: external_exports.string(),
23855
+ role: RoleSchema2,
23856
+ department: external_exports.string(),
23857
+ createdAt: external_exports.string(),
23858
+ expiresAt: external_exports.string()
23859
+ });
23860
+ var GetPendingInvitesResponseSchema = external_exports.object({
23861
+ invites: external_exports.array(PendingInviteResponseSchema)
23862
+ });
23863
+ var SuccessResponseSchema = external_exports.object({
23864
+ success: external_exports.boolean()
23865
+ });
23866
+ var ValidateInviteResponseSchema = external_exports.object({
23867
+ organizationName: external_exports.string(),
23868
+ status: InviteStatusSchema
23869
+ });
23870
+ var CreateInviteResponseSchema = external_exports.object({
23871
+ inviteId: external_exports.string()
23872
+ });
23873
+ var LegalAcceptRequestSchema = external_exports.object({
23874
+ documentType: LegalDocumentTypeSchema,
23875
+ documentVersion: LegalDocumentVersionSchema,
23876
+ organizationId: external_exports.string().optional()
23877
+ }).superRefine((data, ctx) => {
23878
+ if (data.documentType === "billing-terms" && !data.organizationId) {
23879
+ ctx.addIssue({
23880
+ code: external_exports.ZodIssueCode.custom,
23881
+ message: "organizationId is required for billing-terms",
23882
+ path: ["organizationId"]
23883
+ });
23884
+ }
23885
+ });
23886
+ var LegalHistoryQuerySchema = external_exports.object({
23887
+ pageToken: external_exports.string().optional(),
23888
+ limit: external_exports.coerce.number().min(1).max(100).default(20)
23889
+ });
23890
+ var LegalAcceptResponseSchema = external_exports.object({
23891
+ acceptanceId: external_exports.string(),
23892
+ acceptedAt: external_exports.string()
23893
+ });
23894
+ var DocumentStatusSchema2 = external_exports.object({
23895
+ accepted: external_exports.boolean(),
23896
+ acceptedVersion: external_exports.string().optional(),
23897
+ currentVersion: external_exports.string()
23898
+ });
23899
+ var LegalStatusResponseSchema = external_exports.object({
23900
+ tos: DocumentStatusSchema2,
23901
+ privacyPolicy: DocumentStatusSchema2,
23902
+ billingTerms: external_exports.record(external_exports.string(), DocumentStatusSchema2)
23903
+ });
23904
+ var LegalHistoryResponseSchema = external_exports.object({
23905
+ acceptances: external_exports.array(
23906
+ external_exports.object({
23907
+ id: external_exports.string(),
23908
+ documentType: LegalDocumentTypeSchema,
23909
+ documentVersion: external_exports.string(),
23910
+ organizationId: external_exports.string().optional(),
23911
+ acceptedAt: external_exports.string()
23912
+ })
23913
+ ),
23914
+ nextPageToken: external_exports.string().optional()
23915
+ });
23916
+ var RepositoryTypeSchema = external_exports.enum(["qms", "device"]);
23917
+ var ConnectRepositoryRequestSchema = external_exports.object({
23918
+ organizationId: external_exports.string().min(1),
23919
+ gitHubRepoFullName: external_exports.string().min(1),
23920
+ gitHubRepoId: external_exports.number().int().positive()
23921
+ });
23922
+ var RepositoryIdParamSchema = external_exports.object({
23923
+ repositoryId: external_exports.string().min(1)
23924
+ });
23925
+ var OrgRepositoryParamSchema = external_exports.object({
23926
+ orgId: external_exports.string().min(1),
23927
+ repositoryId: external_exports.string().min(1)
23928
+ });
23929
+ var OrgIdQuerySchema = external_exports.object({
23930
+ organizationId: external_exports.string().min(1)
23931
+ });
23932
+ var AssignRepositoryRequestSchema = external_exports.object({
23933
+ ownerType: OwnerTypeSchema,
23934
+ ownerId: external_exports.string().min(1)
23935
+ });
23936
+ var TriggerSyncRequestSchema = external_exports.object({
23937
+ organizationId: external_exports.string().min(1)
23938
+ });
23939
+ var SyncEventParamSchema = external_exports.object({
23940
+ repositoryId: external_exports.string().min(1),
23941
+ syncEventId: external_exports.string().min(1)
23942
+ });
23943
+ var DocumentCountsSchema = external_exports.record(external_exports.string(), external_exports.number());
23944
+ var LinkCountsSchema = external_exports.record(external_exports.string(), external_exports.number());
23945
+ var RepositorySnapshotSchema = external_exports.object({
23946
+ documentCounts: DocumentCountsSchema,
23947
+ linkCounts: LinkCountsSchema,
23948
+ totalDocuments: external_exports.number(),
23949
+ totalLinks: external_exports.number()
23950
+ });
23951
+ var BaseFieldsSchema = external_exports.object({
23952
+ id: external_exports.string(),
23953
+ organizationId: external_exports.string(),
23954
+ ownerType: external_exports.enum(["qms", "device"]).nullable(),
23955
+ ownerId: external_exports.string().nullable(),
23956
+ gitHubRepoFullName: external_exports.string(),
23957
+ gitHubRepoId: external_exports.number(),
23958
+ syncStatus: SyncStatusSchema,
23959
+ lastSyncedAt: external_exports.string().optional(),
23960
+ // ISO date
23961
+ lastSyncCommitSha: external_exports.string().optional(),
23962
+ connectedAt: external_exports.string(),
23963
+ // ISO date
23964
+ connectedBy: external_exports.string(),
23965
+ snapshot: RepositorySnapshotSchema.optional()
23966
+ });
23967
+ var UnassignedRepositoryResponseSchema = BaseFieldsSchema.extend({
23968
+ type: external_exports.literal("unassigned")
23969
+ });
23970
+ var QmsRepositoryResponseSchema = BaseFieldsSchema.extend({
23971
+ type: external_exports.literal("qms")
23972
+ });
23973
+ var DeviceRepositoryResponseSchema = BaseFieldsSchema.extend({
23974
+ type: external_exports.literal("device"),
23975
+ deviceName: external_exports.string(),
23976
+ safetyClass: SafetyClassSchema,
23977
+ configManaged: external_exports.boolean().optional()
23978
+ });
23979
+ var RepositoryResponseSchema = external_exports.discriminatedUnion("type", [
23980
+ UnassignedRepositoryResponseSchema,
23981
+ QmsRepositoryResponseSchema,
23982
+ DeviceRepositoryResponseSchema
23983
+ ]);
23984
+ var BaseRepositoryResponseSchema = BaseFieldsSchema.extend({
23985
+ type: external_exports.enum(["unassigned", "qms", "device"])
23986
+ });
23987
+ var GitHubRepositoryResponseSchema = external_exports.object({
23988
+ id: external_exports.number(),
23989
+ fullName: external_exports.string(),
23990
+ name: external_exports.string(),
23991
+ private: external_exports.boolean(),
23992
+ defaultBranch: external_exports.string()
23993
+ });
23994
+ var ConnectRepositoryResponseSchema = external_exports.object({
23995
+ repositoryId: external_exports.string()
23996
+ });
23997
+ var GetRepositoriesResponseSchema = external_exports.object({
23998
+ repositories: external_exports.array(RepositoryResponseSchema)
23999
+ });
24000
+ var ListGitHubReposResponseSchema = external_exports.object({
24001
+ repositories: external_exports.array(GitHubRepositoryResponseSchema)
24002
+ });
24003
+ var TriggerSyncResponseSchema = external_exports.object({
24004
+ syncEventId: external_exports.string()
24005
+ });
24006
+ var SyncEventStatusSchema = external_exports.enum([
24007
+ "pending",
24008
+ "in_progress",
24009
+ "completed",
24010
+ "completed_with_errors",
24011
+ "failed"
24012
+ ]);
24013
+ var SyncTriggerSchema = external_exports.enum(["manual", "webhook", "scheduled"]);
24014
+ var SyncEventResultSchema = external_exports.object({
24015
+ documentsCreated: external_exports.number(),
24016
+ documentsUpdated: external_exports.number(),
24017
+ documentsRemoved: external_exports.number(),
24018
+ linksCreated: external_exports.number(),
24019
+ linksRemoved: external_exports.number(),
24020
+ errors: external_exports.array(external_exports.string()),
24021
+ commitSha: external_exports.string(),
24022
+ repoConfig: external_exports.object({
24023
+ device: external_exports.object({
24024
+ name: external_exports.string(),
24025
+ safety_class: external_exports.enum(["A", "B", "C"]),
24026
+ classification: external_exports.object({
24027
+ eu: external_exports.string().optional(),
24028
+ us: external_exports.string().optional()
24029
+ }).optional()
24030
+ })
24031
+ }).optional()
24032
+ });
24033
+ var SyncEventResponseSchema = external_exports.object({
24034
+ id: external_exports.string(),
24035
+ status: SyncEventStatusSchema,
24036
+ trigger: SyncTriggerSchema,
24037
+ createdAt: external_exports.string(),
24038
+ // ISO date
24039
+ createdBy: external_exports.string(),
24040
+ startedAt: external_exports.string().optional(),
24041
+ completedAt: external_exports.string().optional(),
24042
+ error: external_exports.string().optional(),
24043
+ result: SyncEventResultSchema.optional()
24044
+ });
24045
+ var GetSyncEventResponseSchema = external_exports.object({
24046
+ syncEvent: SyncEventResponseSchema
24047
+ });
24048
+ var RiskTypeSchema = external_exports.enum(["software_risk", "usability_risk", "security_risk"]);
24049
+ var GetRiskMatrixQuerySchema = external_exports.object({
24050
+ organizationId: external_exports.string().min(1),
24051
+ repositoryId: external_exports.string().optional(),
24052
+ type: RiskTypeSchema.optional()
24053
+ });
24054
+ var GetRiskGapsQuerySchema = external_exports.object({
24055
+ organizationId: external_exports.string().min(1),
24056
+ repositoryId: external_exports.string().optional(),
24057
+ type: RiskTypeSchema.optional()
24058
+ });
24059
+ var GetRiskListQuerySchema = external_exports.object({
24060
+ organizationId: external_exports.string().min(1),
24061
+ repositoryId: external_exports.string().optional(),
24062
+ type: RiskTypeSchema.optional(),
24063
+ limit: external_exports.coerce.number().min(1).max(100).optional().default(50)
24064
+ });
24065
+ var RiskValueSchema = external_exports.number().int().min(1).max(5);
24066
+ var RiskDocumentTypeSchema = external_exports.enum([
22481
24067
  "software_risk",
24068
+ "usability_risk",
22482
24069
  "security_risk",
22483
- "hazardous_situation",
22484
- "harm",
22485
24070
  "haz_soe_software",
22486
24071
  "haz_soe_security",
22487
- "hazard_category",
22488
- // Usability engineering (IEC 62366)
22489
- "usability_plan",
22490
- "use_specification",
22491
- "task_analysis",
22492
- "usability_evaluation",
22493
- "summative_evaluation",
22494
- // Risk management (ISO 14971)
22495
- "risk_management_plan",
22496
- // Software lifecycle (IEC 62304)
22497
- "software_development_plan",
22498
- "software_maintenance_plan",
22499
- "soup_register",
22500
- // Problem resolution (IEC 62304 §9)
22501
- "anomaly",
22502
- // Cybersecurity (IEC 81001-5-1)
22503
- "cybersecurity_plan",
22504
- "sbom",
22505
- // Clinical (MDR / FDA)
22506
- "clinical_evaluation_plan",
22507
- "clinical_evaluation_report",
22508
- // Post-market surveillance (MDR Art. 83)
22509
- "post_market_surveillance_plan",
22510
- "post_market_feedback",
22511
- // Labeling (MDR Annex I)
22512
- "labeling",
22513
- // Product (ISO 13485 §7.3)
22514
- "product_development_plan",
22515
- "intended_use",
22516
- // Release management (IEC 62304 §5.7)
22517
- "release_plan",
22518
- // Change management (ISO 13485 §7.3.5)
22519
- "design_review",
22520
- "release_notes",
22521
- // Software test plan (IEC 62304 §5.7)
22522
- "software_test_plan"
24072
+ "hazardous_situation",
24073
+ "harm",
24074
+ "hazard_category"
24075
+ ]);
24076
+ var HarmAssessmentEntrySchema = external_exports.object({
24077
+ harm: external_exports.string(),
24078
+ harmTitle: external_exports.string().optional(),
24079
+ harmSeverity: RiskValueSchema,
24080
+ inherentProbability: RiskValueSchema,
24081
+ residualProbability: RiskValueSchema,
24082
+ residualSeverityOverride: RiskValueSchema.optional(),
24083
+ residualSeverity: RiskValueSchema,
24084
+ inherentAcceptability: AcceptabilityStatusSchema,
24085
+ residualAcceptability: AcceptabilityStatusSchema
24086
+ });
24087
+ var RiskEntrySchema = external_exports.object({
24088
+ id: external_exports.string(),
24089
+ type: RiskDocumentTypeSchema,
24090
+ harmAssessments: external_exports.array(HarmAssessmentEntrySchema),
24091
+ worstInherentSeverity: RiskValueSchema.optional(),
24092
+ worstInherentProbability: RiskValueSchema.optional(),
24093
+ worstResidualSeverity: RiskValueSchema.optional(),
24094
+ worstResidualProbability: RiskValueSchema.optional(),
24095
+ worstAcceptability: AcceptabilityStatusSchema.optional(),
24096
+ cvssScore: external_exports.number().min(0).max(10).optional(),
24097
+ cvssVector: external_exports.string().optional()
24098
+ });
24099
+ var RiskMatrixResponseSchema = external_exports.object({
24100
+ inherent: external_exports.array(external_exports.array(external_exports.number())),
24101
+ residual: external_exports.array(external_exports.array(external_exports.number())),
24102
+ acceptability: external_exports.array(external_exports.array(AcceptabilityStatusSchema)),
24103
+ summary: external_exports.object({
24104
+ total: external_exports.number(),
24105
+ acceptable: external_exports.number(),
24106
+ reviewRequired: external_exports.number(),
24107
+ unacceptable: external_exports.number()
24108
+ }),
24109
+ labels: external_exports.object({
24110
+ severity: external_exports.array(external_exports.string()),
24111
+ probability: external_exports.array(external_exports.string())
24112
+ })
24113
+ });
24114
+ var RiskGapSchema = external_exports.object({
24115
+ code: external_exports.string(),
24116
+ severity: external_exports.enum(["error", "warning"]),
24117
+ documentId: external_exports.string(),
24118
+ documentTitle: external_exports.string(),
24119
+ message: external_exports.string(),
24120
+ repositoryId: external_exports.string().optional(),
24121
+ repositoryName: external_exports.string().optional()
24122
+ });
24123
+ var RiskGapsResponseSchema = external_exports.object({
24124
+ gaps: external_exports.array(RiskGapSchema),
24125
+ byType: external_exports.record(external_exports.array(RiskGapSchema))
24126
+ });
24127
+ var RiskListItemSchema = external_exports.object({
24128
+ id: external_exports.string(),
24129
+ documentId: external_exports.string(),
24130
+ title: external_exports.string(),
24131
+ type: RiskDocumentTypeSchema,
24132
+ harmAssessmentCount: external_exports.number().int().min(0),
24133
+ worstInherentSeverity: RiskValueSchema.optional(),
24134
+ worstInherentProbability: RiskValueSchema.optional(),
24135
+ worstResidualSeverity: RiskValueSchema.optional(),
24136
+ worstResidualProbability: RiskValueSchema.optional(),
24137
+ worstAcceptability: AcceptabilityStatusSchema.optional(),
24138
+ mitigationsCount: external_exports.number().int().min(0),
24139
+ hasRiskBenefit: external_exports.boolean(),
24140
+ cvssScore: external_exports.number().min(0).max(10).optional(),
24141
+ cvssVector: external_exports.string().optional()
24142
+ });
24143
+ var RiskListResponseSchema = external_exports.object({
24144
+ risks: external_exports.array(RiskListItemSchema),
24145
+ total: external_exports.number()
24146
+ });
24147
+ var ReleaseTypeSchema = external_exports.enum(["qms", "device"]);
24148
+ var ReleaseStatusSchema = external_exports.enum(["draft", "in_review", "approved", "published"]);
24149
+ var SignatureTypeSchema = external_exports.enum([
24150
+ "author",
24151
+ "reviewer",
24152
+ "approver",
24153
+ "dept_reviewer",
24154
+ "final_approver",
24155
+ "trainee",
24156
+ "trainer"
24157
+ ]);
24158
+ var ReleaseChangeTypeSchema = external_exports.enum(["added", "modified", "removed"]);
24159
+ var ListReleasesQuerySchema = external_exports.object({
24160
+ organizationId: external_exports.string().min(1),
24161
+ status: ReleaseStatusSchema.optional(),
24162
+ type: ReleaseTypeSchema.optional(),
24163
+ deviceId: external_exports.string().optional(),
24164
+ limit: external_exports.coerce.number().int().positive().max(100).default(50),
24165
+ offset: external_exports.coerce.number().int().nonnegative().default(0)
24166
+ });
24167
+ var GetReleaseQuerySchema = external_exports.object({
24168
+ organizationId: external_exports.string().min(1),
24169
+ includeSignatures: external_exports.string().transform((v) => v === "true").pipe(external_exports.boolean()).default("false"),
24170
+ includeSnapshot: external_exports.string().transform((v) => v === "true").pipe(external_exports.boolean()).default("false")
24171
+ });
24172
+ var GetSignaturesQuerySchema = external_exports.object({
24173
+ organizationId: external_exports.string().min(1)
24174
+ });
24175
+ var GetChangedDocumentsQuerySchema = external_exports.object({
24176
+ organizationId: external_exports.string().min(1),
24177
+ type: ReleaseTypeSchema,
24178
+ deviceId: external_exports.string().optional()
24179
+ });
24180
+ var ReleaseIdParamSchema = external_exports.object({
24181
+ releaseId: external_exports.string().min(1)
24182
+ });
24183
+ var DHRMarketEntrySchema = external_exports.object({
24184
+ country: external_exports.string().min(1),
24185
+ clinicalEvaluation: external_exports.boolean()
24186
+ });
24187
+ var DHRTestEvidenceEntrySchema = external_exports.object({
24188
+ label: external_exports.string().min(1),
24189
+ url: external_exports.string().url()
24190
+ });
24191
+ var DHRMetadataSchema = external_exports.object({
24192
+ markets: external_exports.array(DHRMarketEntrySchema).default([]),
24193
+ udi: external_exports.string().nullable().default(null),
24194
+ automatedTestEvidence: external_exports.array(DHRTestEvidenceEntrySchema).default([])
24195
+ });
24196
+ var DeploymentReferenceTypeSchema = external_exports.enum([
24197
+ "artifact",
24198
+ "pipeline",
24199
+ "deployment",
24200
+ "other"
24201
+ ]);
24202
+ var DeploymentReferenceSchema = external_exports.object({
24203
+ label: external_exports.string().min(1).max(200),
24204
+ url: external_exports.string().url(),
24205
+ type: DeploymentReferenceTypeSchema
24206
+ });
24207
+ var CreateReleaseRequestSchema = external_exports.object({
24208
+ organizationId: external_exports.string().min(1),
24209
+ name: external_exports.string().min(1).max(200),
24210
+ description: external_exports.string().max(2e3).optional(),
24211
+ type: ReleaseTypeSchema,
24212
+ deviceId: external_exports.string().optional(),
24213
+ releasePlanDocumentId: external_exports.string().min(1).optional(),
24214
+ designReviewId: external_exports.string().min(1).optional(),
24215
+ releaseNotesDocumentId: external_exports.string().min(1).optional(),
24216
+ deviationNotes: external_exports.string().max(5e3).optional(),
24217
+ dhr: DHRMetadataSchema.optional(),
24218
+ reason: external_exports.string().max(500).optional()
24219
+ }).strict();
24220
+ var UpdateReleaseRequestSchema = external_exports.object({
24221
+ organizationId: external_exports.string().min(1),
24222
+ name: external_exports.string().min(1).max(200).optional(),
24223
+ description: external_exports.string().max(2e3).optional(),
24224
+ releasePlanDocumentId: external_exports.string().min(1).nullable().optional(),
24225
+ designReviewId: external_exports.string().min(1).nullable().optional(),
24226
+ releaseNotesDocumentId: external_exports.string().min(1).nullable().optional(),
24227
+ deviationNotes: external_exports.string().max(5e3).optional(),
24228
+ dhr: DHRMetadataSchema.nullable().optional(),
24229
+ deploymentReferences: external_exports.array(DeploymentReferenceSchema).optional(),
24230
+ smokeTestEvidence: external_exports.array(DHRTestEvidenceEntrySchema).optional(),
24231
+ reason: external_exports.string().max(500).optional()
24232
+ }).strict();
24233
+ var AddSignatureRequestSchema = external_exports.object({
24234
+ organizationId: external_exports.string().min(1),
24235
+ obligationId: external_exports.string().min(1),
24236
+ meaning: external_exports.string().min(1).max(500),
24237
+ /** Fresh Firebase ID token for per-signature re-authentication (Part 11 §11.200) */
24238
+ idToken: external_exports.string().min(1).optional(),
24239
+ /** Part 11: ID of the ERSD version the signer accepted */
24240
+ ersdDisclosureId: external_exports.string().min(1),
24241
+ /** Part 11: ISO date string when the signer accepted the ERSD */
24242
+ ersdAcceptedAt: external_exports.string().datetime()
24243
+ }).strict();
24244
+ var SubmitReleaseRequestSchema = external_exports.object({
24245
+ organizationId: external_exports.string().min(1),
24246
+ reason: external_exports.string().max(500).optional()
24247
+ });
24248
+ var WithdrawReleaseRequestSchema = external_exports.object({
24249
+ organizationId: external_exports.string().min(1),
24250
+ reason: external_exports.string().max(500).optional()
24251
+ });
24252
+ var PublishReleaseRequestSchema = external_exports.object({
24253
+ organizationId: external_exports.string().min(1),
24254
+ reason: external_exports.string().max(500).optional()
24255
+ });
24256
+ var DeleteReleaseQuerySchema = external_exports.object({
24257
+ organizationId: external_exports.string().min(1)
24258
+ });
24259
+ var UpdateChecklistItemParamSchema = external_exports.object({
24260
+ releaseId: external_exports.string().min(1),
24261
+ templateItemId: external_exports.string().min(1)
24262
+ });
24263
+ var UpdateChecklistItemRequestSchema = external_exports.object({
24264
+ organizationId: external_exports.string().min(1),
24265
+ checked: external_exports.boolean(),
24266
+ evidence: external_exports.string().max(2e3).optional()
24267
+ }).strict();
24268
+ var GateOverrideCategoryParamSchema = external_exports.object({
24269
+ releaseId: external_exports.string().min(1),
24270
+ category: GateOverrideCategorySchema
24271
+ });
24272
+ var AddGateOverrideRequestSchema = external_exports.object({
24273
+ organizationId: external_exports.string().min(1),
24274
+ category: GateOverrideCategorySchema,
24275
+ justification: external_exports.string().min(20).max(2e3)
24276
+ }).strict();
24277
+ var RemoveGateOverrideQuerySchema = external_exports.object({
24278
+ organizationId: external_exports.string().min(1)
24279
+ });
24280
+ var ReleaseChangeResponseSchema = external_exports.object({
24281
+ repositoryId: external_exports.string(),
24282
+ documentId: external_exports.string(),
24283
+ documentPath: external_exports.string(),
24284
+ documentTitle: external_exports.string(),
24285
+ documentType: external_exports.string(),
24286
+ commitSha: external_exports.string(),
24287
+ changeType: ReleaseChangeTypeSchema
24288
+ });
24289
+ var SignatureResponseSchema = external_exports.object({
24290
+ id: external_exports.string(),
24291
+ releaseId: external_exports.string(),
24292
+ obligationId: external_exports.string(),
24293
+ userId: external_exports.string(),
24294
+ userEmail: external_exports.string(),
24295
+ userDisplayName: external_exports.string(),
24296
+ userDepartment: external_exports.string(),
24297
+ signatureType: SignatureTypeSchema,
24298
+ meaning: external_exports.string(),
24299
+ timestamp: external_exports.string(),
24300
+ // ISO datetime
24301
+ signedCommitShas: external_exports.array(external_exports.string())
24302
+ });
24303
+ var SigningObligationRoleSchema = external_exports.enum(["author", "reviewer", "approver"]);
24304
+ var SigningObligationStatusSchema = external_exports.enum(["pending", "fulfilled"]);
24305
+ var SigningObligationResponseSchema = external_exports.object({
24306
+ obligationId: external_exports.string(),
24307
+ role: SigningObligationRoleSchema,
24308
+ department: external_exports.string(),
24309
+ documentIds: external_exports.array(external_exports.string()),
24310
+ status: SigningObligationStatusSchema,
24311
+ fulfilledBySignatureId: external_exports.string().optional(),
24312
+ fulfilledAt: external_exports.string().optional()
24313
+ });
24314
+ var SigningObligationsSummarySchema = external_exports.object({
24315
+ total: external_exports.number(),
24316
+ fulfilled: external_exports.number(),
24317
+ pending: external_exports.number()
24318
+ });
24319
+ var SnapshotLinkSchema = external_exports.object({
24320
+ sourceDocumentId: external_exports.string(),
24321
+ targetDocumentId: external_exports.string(),
24322
+ linkType: external_exports.string()
24323
+ });
24324
+ var RiskMatrixCellSchema = external_exports.object({
24325
+ count: external_exports.number(),
24326
+ acceptability: external_exports.enum(["acceptable", "review_required", "unacceptable"])
24327
+ });
24328
+ var SnapshotGapSchema = external_exports.object({
24329
+ code: external_exports.string(),
24330
+ severity: external_exports.enum(["error", "warning"]),
24331
+ documentId: external_exports.string(),
24332
+ documentTitle: external_exports.string(),
24333
+ message: external_exports.string()
24334
+ });
24335
+ var SnapshotTraceabilityChainEntrySchema = external_exports.object({
24336
+ hazardId: external_exports.string(),
24337
+ hazardTitle: external_exports.string(),
24338
+ situationId: external_exports.string(),
24339
+ situationTitle: external_exports.string(),
24340
+ harmId: external_exports.string(),
24341
+ harmTitle: external_exports.string(),
24342
+ riskId: external_exports.string(),
24343
+ riskTitle: external_exports.string(),
24344
+ riskType: external_exports.string(),
24345
+ inherentSeverity: external_exports.number(),
24346
+ inherentProbability: external_exports.number(),
24347
+ residualSeverity: external_exports.number(),
24348
+ residualProbability: external_exports.number(),
24349
+ acceptability: external_exports.string(),
24350
+ controls: external_exports.array(external_exports.string()),
24351
+ cvssScore: external_exports.number().optional(),
24352
+ cvssVector: external_exports.string().optional()
24353
+ });
24354
+ var SnapshotPlanReferenceSchema = external_exports.object({
24355
+ documentId: external_exports.string(),
24356
+ title: external_exports.string(),
24357
+ commitSha: external_exports.string(),
24358
+ safetyClass: external_exports.string(),
24359
+ postProductionReference: external_exports.string().optional()
24360
+ });
24361
+ var ComponentSnapshotEntryResponseSchema = external_exports.object({
24362
+ componentName: external_exports.string(),
24363
+ version: external_exports.string(),
24364
+ license: external_exports.string().optional(),
24365
+ safetyRiskClass: external_exports.string().optional(),
24366
+ sourceFormat: external_exports.enum(["markdown_table", "cyclonedx", "spdx"])
24367
+ });
24368
+ var ReleaseSnapshotResponseSchema = external_exports.object({
24369
+ traceabilityLinks: external_exports.array(SnapshotLinkSchema),
24370
+ traceabilityCoverage: external_exports.number(),
24371
+ riskMatrix: external_exports.object({
24372
+ inherent: external_exports.array(external_exports.array(external_exports.number())),
24373
+ residual: external_exports.array(external_exports.array(external_exports.number())),
24374
+ acceptability: external_exports.array(external_exports.array(external_exports.enum(["acceptable", "review_required", "unacceptable"]))),
24375
+ summary: external_exports.object({
24376
+ total: external_exports.number(),
24377
+ acceptable: external_exports.number(),
24378
+ reviewRequired: external_exports.number(),
24379
+ unacceptable: external_exports.number()
24380
+ })
24381
+ }),
24382
+ gaps: external_exports.array(SnapshotGapSchema),
24383
+ gapsSummary: external_exports.object({
24384
+ errorCount: external_exports.number(),
24385
+ warningCount: external_exports.number()
24386
+ }),
24387
+ riskTraceabilityChain: external_exports.array(SnapshotTraceabilityChainEntrySchema).optional(),
24388
+ riskManagementPlan: SnapshotPlanReferenceSchema.optional(),
24389
+ componentSnapshots: external_exports.record(external_exports.array(ComponentSnapshotEntryResponseSchema)).optional()
24390
+ });
24391
+ var DHRMarketEntryResponseSchema = external_exports.object({
24392
+ country: external_exports.string(),
24393
+ clinicalEvaluation: external_exports.boolean()
24394
+ });
24395
+ var DHRTestEvidenceEntryResponseSchema = external_exports.object({
24396
+ label: external_exports.string(),
24397
+ url: external_exports.string()
24398
+ });
24399
+ var DHRMetadataResponseSchema = external_exports.object({
24400
+ markets: external_exports.array(DHRMarketEntryResponseSchema),
24401
+ udi: external_exports.string().nullable(),
24402
+ automatedTestEvidence: external_exports.array(DHRTestEvidenceEntryResponseSchema)
24403
+ });
24404
+ var DeploymentReferenceResponseSchema = external_exports.object({
24405
+ label: external_exports.string(),
24406
+ url: external_exports.string(),
24407
+ type: external_exports.string()
24408
+ });
24409
+ var GateOverrideResponseSchema = external_exports.object({
24410
+ category: external_exports.string(),
24411
+ justification: external_exports.string(),
24412
+ gapDocumentIds: external_exports.array(external_exports.string()),
24413
+ gapCount: external_exports.number(),
24414
+ createdBy: external_exports.string(),
24415
+ createdByEmail: external_exports.string(),
24416
+ createdByDepartment: external_exports.string(),
24417
+ createdAt: external_exports.string()
24418
+ });
24419
+ var ReleaseChecklistItemResponseSchema = external_exports.object({
24420
+ templateItemId: external_exports.string(),
24421
+ label: external_exports.string(),
24422
+ checked: external_exports.boolean(),
24423
+ evidence: external_exports.string().optional(),
24424
+ updatedBy: external_exports.string().optional(),
24425
+ updatedAt: external_exports.string().optional()
24426
+ });
24427
+ var ReleaseDocumentManifestEntrySchema = external_exports.object({
24428
+ documentId: external_exports.string(),
24429
+ title: external_exports.string(),
24430
+ type: external_exports.string(),
24431
+ path: external_exports.string(),
24432
+ commitSha: external_exports.string()
24433
+ });
24434
+ var ReleaseSummaryResponseSchema = external_exports.object({
24435
+ id: external_exports.string(),
24436
+ name: external_exports.string(),
24437
+ description: external_exports.string().optional(),
24438
+ type: ReleaseTypeSchema,
24439
+ deviceId: external_exports.string().optional(),
24440
+ status: ReleaseStatusSchema,
24441
+ changesCount: external_exports.number(),
24442
+ signaturesCount: external_exports.number(),
24443
+ obligationsSummary: SigningObligationsSummarySchema,
24444
+ createdBy: external_exports.string(),
24445
+ createdAt: external_exports.string(),
24446
+ // ISO datetime
24447
+ submittedForReviewAt: external_exports.string().optional(),
24448
+ approvedAt: external_exports.string().optional(),
24449
+ publishedAt: external_exports.string().optional(),
24450
+ obligationsDerivedAt: external_exports.string().optional(),
24451
+ obligationsDerivationVersion: external_exports.number().optional(),
24452
+ obligationsInputHash: external_exports.string().optional(),
24453
+ releasePlanDocumentId: external_exports.string().optional(),
24454
+ designReviewId: external_exports.string().optional(),
24455
+ releaseNotesDocumentId: external_exports.string().optional(),
24456
+ deviationNotes: external_exports.string().optional(),
24457
+ dhr: DHRMetadataResponseSchema.optional(),
24458
+ version: external_exports.string().optional()
24459
+ });
24460
+ var ReleaseDetailResponseSchema = ReleaseSummaryResponseSchema.extend({
24461
+ changes: external_exports.array(ReleaseChangeResponseSchema),
24462
+ signingObligations: external_exports.array(SigningObligationResponseSchema),
24463
+ signatures: external_exports.array(SignatureResponseSchema).optional(),
24464
+ snapshot: ReleaseSnapshotResponseSchema.optional(),
24465
+ checklist: external_exports.array(ReleaseChecklistItemResponseSchema).optional(),
24466
+ releaseCommitSha: external_exports.string().optional(),
24467
+ previousReleaseId: external_exports.string().optional(),
24468
+ previousReleaseCommitSha: external_exports.string().optional(),
24469
+ deploymentReferences: external_exports.array(DeploymentReferenceResponseSchema).optional(),
24470
+ smokeTestEvidence: external_exports.array(external_exports.object({ label: external_exports.string(), url: external_exports.string() })).optional(),
24471
+ gateOverrides: external_exports.array(GateOverrideResponseSchema).default([]),
24472
+ documentManifest: external_exports.array(ReleaseDocumentManifestEntrySchema).optional()
24473
+ });
24474
+ var ListReleasesResponseSchema = external_exports.object({
24475
+ releases: external_exports.array(ReleaseSummaryResponseSchema),
24476
+ total: external_exports.number(),
24477
+ limit: external_exports.number(),
24478
+ offset: external_exports.number()
24479
+ });
24480
+ var GetSignaturesResponseSchema = external_exports.object({
24481
+ signatures: external_exports.array(SignatureResponseSchema)
24482
+ });
24483
+ var ChangedDocumentResponseSchema = external_exports.object({
24484
+ documentId: external_exports.string(),
24485
+ repositoryId: external_exports.string(),
24486
+ documentPath: external_exports.string(),
24487
+ documentTitle: external_exports.string(),
24488
+ documentType: external_exports.string(),
24489
+ currentCommitSha: external_exports.string(),
24490
+ previousCommitSha: external_exports.string().optional(),
24491
+ changeType: ReleaseChangeTypeSchema
24492
+ });
24493
+ var GetChangedDocumentsResponseSchema = external_exports.object({
24494
+ changes: external_exports.array(ChangedDocumentResponseSchema),
24495
+ previousReleaseId: external_exports.string().optional(),
24496
+ previousReleaseName: external_exports.string().optional()
24497
+ });
24498
+ var CreateReleaseResponseSchema = external_exports.object({
24499
+ id: external_exports.string(),
24500
+ release: ReleaseDetailResponseSchema
24501
+ });
24502
+ var ReleaseStatusChangeResponseSchema = external_exports.object({
24503
+ success: external_exports.boolean(),
24504
+ release: ReleaseDetailResponseSchema
24505
+ });
24506
+ var AddSignatureResponseSchema = external_exports.object({
24507
+ signature: SignatureResponseSchema,
24508
+ releaseStatus: ReleaseStatusSchema,
24509
+ isAutoApproved: external_exports.boolean()
24510
+ });
24511
+ var ComparisonChangeTypeSchema = external_exports.enum(["added", "modified", "removed", "unchanged"]);
24512
+ var GetReleaseComparisonQuerySchema = external_exports.object({
24513
+ organizationId: external_exports.string().min(1),
24514
+ baseReleaseId: external_exports.string().min(1).optional()
24515
+ });
24516
+ var ComparisonReleaseInfoSchema = external_exports.object({
24517
+ id: external_exports.string(),
24518
+ name: external_exports.string(),
24519
+ publishedAt: external_exports.string().nullable()
24520
+ });
24521
+ var ComparisonCommitRefSchema = external_exports.object({
24522
+ commitSha: external_exports.string()
24523
+ });
24524
+ var ReleaseComparisonChangeSchema = external_exports.object({
24525
+ documentId: external_exports.string(),
24526
+ documentTitle: external_exports.string(),
24527
+ documentType: external_exports.string(),
24528
+ documentPath: external_exports.string(),
24529
+ changeType: ComparisonChangeTypeSchema,
24530
+ target: ComparisonCommitRefSchema.nullable(),
24531
+ base: ComparisonCommitRefSchema.nullable()
24532
+ });
24533
+ var ComparisonSummarySchema = external_exports.object({
24534
+ added: external_exports.number(),
24535
+ modified: external_exports.number(),
24536
+ removed: external_exports.number(),
24537
+ unchanged: external_exports.number()
24538
+ });
24539
+ var BaselineOptionSchema = external_exports.object({
24540
+ id: external_exports.string(),
24541
+ name: external_exports.string(),
24542
+ publishedAt: external_exports.string()
24543
+ });
24544
+ var ReleaseComparisonResponseSchema = external_exports.object({
24545
+ targetRelease: ComparisonReleaseInfoSchema,
24546
+ baseRelease: ComparisonReleaseInfoSchema.nullable(),
24547
+ changes: external_exports.array(ReleaseComparisonChangeSchema),
24548
+ summary: ComparisonSummarySchema,
24549
+ fallback: external_exports.boolean(),
24550
+ baselineOptions: external_exports.array(BaselineOptionSchema)
24551
+ });
24552
+ var CreateQmsRequestSchema = external_exports.object({
24553
+ organizationId: external_exports.string().min(1),
24554
+ repositoryId: external_exports.string().min(1),
24555
+ name: external_exports.string().min(1).max(100)
24556
+ });
24557
+ var UpdateQmsRequestSchema = external_exports.object({
24558
+ name: external_exports.string().min(1).max(100).optional()
24559
+ });
24560
+ var QmsIdParamSchema = external_exports.object({
24561
+ orgId: external_exports.string().min(1),
24562
+ qmsId: external_exports.string().min(1)
24563
+ });
24564
+ var QmsResponseSchema = external_exports.object({
24565
+ id: external_exports.string(),
24566
+ organizationId: external_exports.string(),
24567
+ repositoryId: external_exports.string(),
24568
+ name: external_exports.string(),
24569
+ createdAt: external_exports.string(),
24570
+ createdBy: external_exports.string()
24571
+ });
24572
+ var CreateDeviceRequestSchema = external_exports.object({
24573
+ organizationId: external_exports.string().min(1),
24574
+ repositoryId: external_exports.string().min(1),
24575
+ name: external_exports.string().min(1).max(100),
24576
+ safetyClass: SafetyClassSchema
24577
+ });
24578
+ var UpdateDeviceRequestSchema = external_exports.object({
24579
+ name: external_exports.string().min(1).max(100).optional(),
24580
+ safetyClass: SafetyClassSchema.optional()
24581
+ });
24582
+ var DeviceIdParamSchema = external_exports.object({
24583
+ orgId: external_exports.string().min(1),
24584
+ deviceId: external_exports.string().min(1)
24585
+ });
24586
+ var DeviceListQuerySchema = external_exports.object({
24587
+ organizationId: external_exports.string().min(1)
24588
+ });
24589
+ var DeviceResponseSchema = external_exports.object({
24590
+ id: external_exports.string(),
24591
+ organizationId: external_exports.string(),
24592
+ repositoryId: external_exports.string(),
24593
+ name: external_exports.string(),
24594
+ safetyClass: SafetyClassSchema,
24595
+ createdAt: external_exports.string(),
24596
+ createdBy: external_exports.string()
24597
+ });
24598
+ var DocumentSignatureTypeSchema = external_exports.enum([
24599
+ "author",
24600
+ "reviewer",
24601
+ "approver",
24602
+ "dept_reviewer",
24603
+ "final_approver",
24604
+ "trainee",
24605
+ "trainer"
24606
+ ]);
24607
+ var SignatureCaptureContextSchema = external_exports.discriminatedUnion("type", [
24608
+ external_exports.object({
24609
+ type: external_exports.literal("release"),
24610
+ id: external_exports.string().min(1)
24611
+ }),
24612
+ external_exports.object({
24613
+ type: external_exports.literal("design_review"),
24614
+ id: external_exports.string().min(1)
24615
+ }),
24616
+ external_exports.object({
24617
+ type: external_exports.literal("dco"),
24618
+ id: external_exports.string().min(1)
24619
+ }),
24620
+ external_exports.object({
24621
+ type: external_exports.literal("document_signoff"),
24622
+ id: external_exports.string().min(1)
24623
+ }),
24624
+ external_exports.object({
24625
+ type: external_exports.literal("nonconformance"),
24626
+ id: external_exports.string().min(1)
24627
+ }),
24628
+ external_exports.object({
24629
+ type: external_exports.literal("complaint"),
24630
+ id: external_exports.string().min(1)
24631
+ }),
24632
+ external_exports.object({
24633
+ type: external_exports.literal("training_completion"),
24634
+ id: external_exports.string().min(1)
24635
+ }),
24636
+ external_exports.object({
24637
+ type: external_exports.literal("training_signoff"),
24638
+ id: external_exports.string().min(1)
24639
+ })
24640
+ ]);
24641
+ var CreateDocumentSignatureRequestSchema = external_exports.object({
24642
+ signatureType: DocumentSignatureTypeSchema,
24643
+ meaning: external_exports.string().min(1).max(500),
24644
+ capturedDuring: SignatureCaptureContextSchema,
24645
+ reason: external_exports.string().max(500).optional(),
24646
+ /** Fresh Firebase ID token for per-signature re-authentication (Part 11 §11.200) */
24647
+ idToken: external_exports.string().min(1).optional(),
24648
+ /** Part 11: ID of the ERSD version the signer accepted */
24649
+ ersdDisclosureId: external_exports.string().min(1),
24650
+ /** Part 11: ISO date string when the signer accepted the ERSD */
24651
+ ersdAcceptedAt: external_exports.string().datetime()
24652
+ });
24653
+ var SignatureDocumentCommitParamSchema = external_exports.object({
24654
+ orgId: external_exports.string().min(1),
24655
+ docId: external_exports.string().min(1),
24656
+ commitSha: external_exports.string().min(1)
24657
+ });
24658
+ var SignatureDocumentIdParamSchema = external_exports.object({
24659
+ orgId: external_exports.string().min(1),
24660
+ docId: external_exports.string().min(1)
24661
+ });
24662
+ var DocumentSignatureResponseSchema = external_exports.object({
24663
+ id: external_exports.string(),
24664
+ organizationId: external_exports.string(),
24665
+ documentId: external_exports.string(),
24666
+ commitSha: external_exports.string(),
24667
+ userId: external_exports.string(),
24668
+ userEmail: external_exports.string(),
24669
+ userDisplayName: external_exports.string(),
24670
+ userDepartment: external_exports.string(),
24671
+ signatureType: DocumentSignatureTypeSchema,
24672
+ meaning: external_exports.string(),
24673
+ contentHash: external_exports.string().optional(),
24674
+ timestamp: external_exports.string(),
24675
+ capturedDuring: SignatureCaptureContextSchema
24676
+ });
24677
+ var DocumentSignaturesListResponseSchema = external_exports.object({
24678
+ signatures: external_exports.array(DocumentSignatureResponseSchema)
24679
+ });
24680
+ var DocumentSignatureHistoryItemSchema = external_exports.object({
24681
+ commitSha: external_exports.string(),
24682
+ signatures: external_exports.array(DocumentSignatureResponseSchema)
24683
+ });
24684
+ var DocumentSignatureHistoryResponseSchema = external_exports.object({
24685
+ documentId: external_exports.string(),
24686
+ history: external_exports.array(DocumentSignatureHistoryItemSchema)
24687
+ });
24688
+ var CreateDocumentSignatureResponseSchema = external_exports.object({
24689
+ signatureId: external_exports.string()
24690
+ });
24691
+ var GitHubCommitAuthorSchema = external_exports.object({
24692
+ email: external_exports.string(),
24693
+ name: external_exports.string()
24694
+ });
24695
+ var GitHubPushCommitSchema = external_exports.object({
24696
+ id: external_exports.string(),
24697
+ message: external_exports.string(),
24698
+ author: GitHubCommitAuthorSchema,
24699
+ added: external_exports.array(external_exports.string()),
24700
+ modified: external_exports.array(external_exports.string()),
24701
+ removed: external_exports.array(external_exports.string())
24702
+ });
24703
+ var GitHubWebhookRepositorySchema = external_exports.object({
24704
+ id: external_exports.number(),
24705
+ full_name: external_exports.string()
24706
+ });
24707
+ var GitHubInstallationSchema = external_exports.object({
24708
+ id: external_exports.number()
24709
+ });
24710
+ var GitHubAccountSchema = external_exports.object({
24711
+ login: external_exports.string(),
24712
+ type: external_exports.string()
24713
+ });
24714
+ var GitHubPushEventSchema = external_exports.object({
24715
+ ref: external_exports.string(),
24716
+ before: external_exports.string(),
24717
+ after: external_exports.string(),
24718
+ repository: GitHubWebhookRepositorySchema,
24719
+ installation: GitHubInstallationSchema.optional(),
24720
+ commits: external_exports.array(GitHubPushCommitSchema)
24721
+ });
24722
+ var GitHubInstallationEventSchema = external_exports.object({
24723
+ action: external_exports.enum(["created", "deleted", "suspend", "unsuspend"]),
24724
+ installation: external_exports.object({
24725
+ id: external_exports.number(),
24726
+ account: GitHubAccountSchema
24727
+ }),
24728
+ repositories: external_exports.array(
24729
+ external_exports.object({
24730
+ id: external_exports.number(),
24731
+ full_name: external_exports.string()
24732
+ })
24733
+ ).optional()
24734
+ });
24735
+ var GitHubInstallationRepositoriesEventSchema = external_exports.object({
24736
+ action: external_exports.enum(["added", "removed"]),
24737
+ installation: external_exports.object({
24738
+ id: external_exports.number(),
24739
+ account: GitHubAccountSchema
24740
+ }),
24741
+ repositories_added: external_exports.array(
24742
+ external_exports.object({
24743
+ id: external_exports.number(),
24744
+ full_name: external_exports.string()
24745
+ })
24746
+ ),
24747
+ repositories_removed: external_exports.array(
24748
+ external_exports.object({
24749
+ id: external_exports.number(),
24750
+ full_name: external_exports.string()
24751
+ })
24752
+ )
24753
+ });
24754
+ var GitHubWebhookHeadersSchema = external_exports.object({
24755
+ "x-github-event": external_exports.string(),
24756
+ "x-github-delivery": external_exports.string(),
24757
+ "x-hub-signature-256": external_exports.string().optional()
24758
+ });
24759
+ var CompleteGitHubInstallationRequestSchema = external_exports.object({
24760
+ organizationId: external_exports.string().min(1),
24761
+ installationId: external_exports.number().int().positive()
24762
+ });
24763
+ var ListGitHubRepositoriesRequestSchema = external_exports.object({
24764
+ organizationId: external_exports.string().min(1)
24765
+ });
24766
+ var GitHubInstallationRepoSchema = external_exports.object({
24767
+ id: external_exports.number(),
24768
+ full_name: external_exports.string(),
24769
+ name: external_exports.string(),
24770
+ owner: external_exports.string(),
24771
+ default_branch: external_exports.string()
24772
+ });
24773
+ var ListGitHubRepositoriesResponseSchema = external_exports.object({
24774
+ repositories: external_exports.array(GitHubInstallationRepoSchema),
24775
+ installed: external_exports.boolean(),
24776
+ gitHubOrgName: external_exports.string().optional()
24777
+ });
24778
+ var CompleteGitHubInstallationResponseSchema = external_exports.object({
24779
+ success: external_exports.boolean()
24780
+ });
24781
+ var TrainingTypeSchema = external_exports.enum(["quiz", "acknowledge", "instructor_led"]);
24782
+ var TrainingStatusSchema = external_exports.enum(["pending", "in_progress", "completed", "overdue"]);
24783
+ var TrainingOrgParamSchema = external_exports.object({
24784
+ orgId: external_exports.string().min(1)
24785
+ });
24786
+ var TrainingTaskParamSchema = external_exports.object({
24787
+ orgId: external_exports.string().min(1),
24788
+ taskId: external_exports.string().min(1)
24789
+ });
24790
+ var MyTrainingQuerySchema = external_exports.object({
24791
+ status: TrainingStatusSchema.optional(),
24792
+ documentId: external_exports.string().optional()
24793
+ });
24794
+ var TrainingDashboardQuerySchema = external_exports.object({
24795
+ status: TrainingStatusSchema.optional(),
24796
+ memberId: external_exports.string().optional(),
24797
+ documentId: external_exports.string().optional()
24798
+ });
24799
+ var StartTrainingRequestSchema = external_exports.object({});
24800
+ var SubmitQuizRequestSchema = external_exports.object({
24801
+ sessionId: external_exports.string().min(1),
24802
+ answers: external_exports.record(external_exports.string(), external_exports.union([external_exports.number(), external_exports.array(external_exports.number()), external_exports.boolean()]))
24803
+ });
24804
+ var AcknowledgeTrainingRequestSchema = external_exports.object({
24805
+ meaning: external_exports.string().min(1).max(500)
24806
+ });
24807
+ var BatchSignoffRequestSchema = external_exports.object({
24808
+ taskIds: external_exports.array(external_exports.string().min(1)).min(1),
24809
+ evidenceUrl: external_exports.string().url(),
24810
+ evidenceHash: external_exports.string().min(1),
24811
+ meaning: external_exports.string().min(1).max(500)
24812
+ });
24813
+ var QuizOptionSchema = external_exports.object({
24814
+ text: external_exports.string().min(1),
24815
+ correct: external_exports.boolean().optional(),
24816
+ explanation: external_exports.string().optional()
24817
+ });
24818
+ var QuizQuestionSchema = external_exports.object({
24819
+ type: external_exports.enum(["single-choice", "multi-choice", "true-false"]),
24820
+ text: external_exports.string().min(1),
24821
+ options: external_exports.array(QuizOptionSchema).optional(),
24822
+ correct: external_exports.boolean().optional(),
24823
+ explanation: external_exports.string().optional()
24824
+ });
24825
+ var QuizDefinitionSchema = external_exports.object({
24826
+ passingScore: external_exports.number().min(0).max(100).optional(),
24827
+ questions: external_exports.array(QuizQuestionSchema).min(1)
24828
+ });
24829
+ var CreateTrainingTaskRequestSchema = external_exports.object({
24830
+ memberId: external_exports.string().min(1),
24831
+ documentId: external_exports.string().min(1),
24832
+ documentVersion: external_exports.string().min(1),
24833
+ trainingType: TrainingTypeSchema,
24834
+ dueDays: external_exports.number().int().positive().optional(),
24835
+ /** Required for quiz-type training. Stored server-side for scoring. */
24836
+ quizDefinition: QuizDefinitionSchema.optional()
24837
+ });
24838
+ var UpdateTrainingSettingsRequestSchema = external_exports.object({
24839
+ defaultDueDays: external_exports.number().int().positive().optional(),
24840
+ passingScorePercent: external_exports.number().int().min(0).max(100).optional()
24841
+ });
24842
+ var BulkAssignTrainingRequestSchema = external_exports.object({
24843
+ department: external_exports.string().min(1),
24844
+ documentId: external_exports.string().min(1),
24845
+ documentVersion: external_exports.string().min(1),
24846
+ trainingType: TrainingTypeSchema,
24847
+ dueDays: external_exports.number().int().positive().optional()
24848
+ });
24849
+ var TrainingTaskResponseSchema = external_exports.object({
24850
+ id: external_exports.string(),
24851
+ organizationId: external_exports.string(),
24852
+ memberId: external_exports.string(),
24853
+ memberName: external_exports.string(),
24854
+ memberEmail: external_exports.string(),
24855
+ documentId: external_exports.string(),
24856
+ documentTitle: external_exports.string(),
24857
+ documentVersion: external_exports.string(),
24858
+ trainingType: TrainingTypeSchema,
24859
+ status: TrainingStatusSchema,
24860
+ dueDate: external_exports.string(),
24861
+ createdAt: external_exports.string(),
24862
+ startedAt: external_exports.string().optional(),
24863
+ completedAt: external_exports.string().optional(),
24864
+ quizScore: external_exports.number().optional(),
24865
+ signatureId: external_exports.string().optional(),
24866
+ evidenceUrl: external_exports.string().optional()
24867
+ });
24868
+ var QuizOptionResponseSchema = external_exports.object({
24869
+ text: external_exports.string()
24870
+ });
24871
+ var QuizQuestionTypeSchema = external_exports.enum(["single_choice", "multiple_choice", "true_false"]);
24872
+ var QuizQuestionResponseSchema = external_exports.object({
24873
+ type: QuizQuestionTypeSchema,
24874
+ text: external_exports.string(),
24875
+ options: external_exports.array(QuizOptionResponseSchema).optional()
24876
+ });
24877
+ var QuizSessionResponseSchema = external_exports.object({
24878
+ sessionId: external_exports.string(),
24879
+ questions: external_exports.array(QuizQuestionResponseSchema),
24880
+ questionCount: external_exports.number(),
24881
+ passingScore: external_exports.number(),
24882
+ savedAnswers: external_exports.record(external_exports.string(), external_exports.union([external_exports.number(), external_exports.array(external_exports.number()), external_exports.boolean()])).optional()
24883
+ });
24884
+ var QuizResultResponseSchema = external_exports.object({
24885
+ passed: external_exports.boolean(),
24886
+ score: external_exports.number(),
24887
+ passingScore: external_exports.number(),
24888
+ correctCount: external_exports.number(),
24889
+ totalCount: external_exports.number(),
24890
+ explanations: external_exports.record(external_exports.string(), external_exports.string()),
24891
+ signatureRequired: external_exports.boolean()
24892
+ });
24893
+ var TrainingStatsResponseSchema = external_exports.object({
24894
+ pending: external_exports.number(),
24895
+ inProgress: external_exports.number(),
24896
+ completed: external_exports.number(),
24897
+ overdue: external_exports.number(),
24898
+ completionRate: external_exports.number()
24899
+ });
24900
+ var TrainingDashboardResponseSchema = external_exports.object({
24901
+ stats: TrainingStatsResponseSchema,
24902
+ tasks: external_exports.array(TrainingTaskResponseSchema)
24903
+ });
24904
+ var TrainingSettingsResponseSchema = external_exports.object({
24905
+ defaultDueDays: external_exports.number(),
24906
+ passingScorePercent: external_exports.number()
24907
+ });
24908
+ var BulkAssignTrainingResponseSchema = external_exports.object({
24909
+ createdCount: external_exports.number(),
24910
+ skippedCount: external_exports.number(),
24911
+ memberNames: external_exports.array(external_exports.string())
24912
+ });
24913
+ var SigningEligibilityResponseSchema = external_exports.object({
24914
+ eligible: external_exports.boolean(),
24915
+ hasIncompleteTraining: external_exports.boolean()
24916
+ });
24917
+ var SigningRequestStatusSchema = external_exports.enum([
24918
+ "sent",
24919
+ "partially_signed",
24920
+ "completed",
24921
+ "expired",
24922
+ "cancelled"
24923
+ ]);
24924
+ var SignerStatusSchema = external_exports.enum(["pending", "viewed", "signed", "declined"]);
24925
+ var FieldTypeSchema = external_exports.enum(["signature", "initials", "date"]);
24926
+ var SigningFieldSchema = external_exports.object({
24927
+ id: external_exports.string().min(1),
24928
+ type: FieldTypeSchema,
24929
+ assignedSignerEmail: external_exports.string().email(),
24930
+ /** 1-based page index within the PDF document. */
24931
+ page: external_exports.number().int().positive(),
24932
+ /** Field left edge as a percentage of the page width (0–100). */
24933
+ x: external_exports.number().min(0).max(100),
24934
+ /** Field top edge as a percentage of the page height (0–100). */
24935
+ y: external_exports.number().min(0).max(100),
24936
+ /** Field width as a percentage of the page width (0–100). */
24937
+ width: external_exports.number().min(0).max(100),
24938
+ /** Field height as a percentage of the page height (0–100). */
24939
+ height: external_exports.number().min(0).max(100)
24940
+ });
24941
+ var SigningDocumentInputSchema = external_exports.object({
24942
+ fileName: external_exports.string().min(1),
24943
+ storagePath: external_exports.string().startsWith("signing-uploads/"),
24944
+ fileHash: external_exports.string().min(1),
24945
+ pageCount: external_exports.number().int().positive(),
24946
+ fields: external_exports.array(SigningFieldSchema).min(1)
24947
+ });
24948
+ var SignerInputSchema = external_exports.object({
24949
+ name: external_exports.string().min(1).max(200),
24950
+ email: external_exports.string().email(),
24951
+ meaning: external_exports.string().min(1).max(500)
24952
+ });
24953
+ var SigningRequestIdParamSchema = external_exports.object({
24954
+ signingRequestId: external_exports.string().min(1)
24955
+ });
24956
+ var ListSigningRequestsQuerySchema = external_exports.object({
24957
+ organizationId: external_exports.string().min(1),
24958
+ status: SigningRequestStatusSchema.optional(),
24959
+ limit: external_exports.coerce.number().int().positive().max(100).default(50),
24960
+ offset: external_exports.coerce.number().int().nonnegative().default(0)
24961
+ });
24962
+ var GetSigningRequestQuerySchema = external_exports.object({
24963
+ organizationId: external_exports.string().min(1)
24964
+ });
24965
+ var CreateSigningRequestSchema = external_exports.object({
24966
+ organizationId: external_exports.string().min(1),
24967
+ title: external_exports.string().min(1).max(200),
24968
+ description: external_exports.string().max(2e3).optional(),
24969
+ meaning: external_exports.string().min(1).max(500),
24970
+ expiresAt: external_exports.string().datetime(),
24971
+ signingDocuments: external_exports.array(SigningDocumentInputSchema).min(1),
24972
+ signers: external_exports.array(SignerInputSchema).min(1)
24973
+ });
24974
+ var CancelSigningRequestSchema = external_exports.object({
24975
+ organizationId: external_exports.string().min(1)
24976
+ });
24977
+ var RemindSignersSchema = external_exports.object({
24978
+ organizationId: external_exports.string().min(1)
24979
+ });
24980
+ var GetSigningCeremonyParamSchema = external_exports.object({
24981
+ token: external_exports.string().min(1)
24982
+ });
24983
+ var RequestVerificationCodeSchema = external_exports.object({
24984
+ token: external_exports.string().min(1)
24985
+ });
24986
+ var CompleteSigningCeremonySchema = external_exports.object({
24987
+ token: external_exports.string().min(1),
24988
+ verificationCode: external_exports.string().length(6),
24989
+ signatureImagePath: external_exports.string().startsWith("data:"),
24990
+ initialsImagePath: external_exports.string().startsWith("data:").optional(),
24991
+ fieldValues: external_exports.array(
24992
+ external_exports.object({
24993
+ fieldId: external_exports.string().min(1),
24994
+ type: FieldTypeSchema,
24995
+ value: external_exports.string().min(1).refine((v) => v.startsWith("data:") || /^\d{4}-\d{2}-\d{2}/.test(v), {
24996
+ message: "Value must be a data URL or a date string"
24997
+ })
24998
+ })
24999
+ ).min(1),
25000
+ /** Part 11: ID of the ERSD version the signer accepted — required, 400 if missing */
25001
+ ersdDisclosureId: external_exports.string().min(1),
25002
+ /** Part 11: ISO timestamp when the signer accepted the ERSD — required, 400 if missing */
25003
+ ersdAcceptedAt: external_exports.string().datetime()
25004
+ });
25005
+ var SigningFieldResponseSchema = external_exports.object({
25006
+ id: external_exports.string(),
25007
+ type: FieldTypeSchema,
25008
+ assignedSignerEmail: external_exports.string(),
25009
+ page: external_exports.number(),
25010
+ x: external_exports.number(),
25011
+ y: external_exports.number(),
25012
+ width: external_exports.number(),
25013
+ height: external_exports.number()
25014
+ });
25015
+ var SigningDocumentResponseSchema = external_exports.object({
25016
+ fileName: external_exports.string(),
25017
+ storagePath: external_exports.string(),
25018
+ fileHash: external_exports.string(),
25019
+ pageCount: external_exports.number(),
25020
+ uploadedAt: external_exports.string(),
25021
+ fields: external_exports.array(SigningFieldResponseSchema)
25022
+ });
25023
+ var SignerResponseSchema = external_exports.object({
25024
+ name: external_exports.string(),
25025
+ email: external_exports.string(),
25026
+ meaning: external_exports.string(),
25027
+ status: SignerStatusSchema,
25028
+ signedAt: external_exports.string().optional()
25029
+ });
25030
+ var SigningAuditEntryResponseSchema = external_exports.object({
25031
+ id: external_exports.string(),
25032
+ eventType: external_exports.string(),
25033
+ actor: external_exports.string(),
25034
+ timestamp: external_exports.string(),
25035
+ details: external_exports.record(external_exports.unknown()).optional()
25036
+ });
25037
+ var SigningRequestSummaryResponseSchema = external_exports.object({
25038
+ id: external_exports.string(),
25039
+ title: external_exports.string(),
25040
+ status: SigningRequestStatusSchema,
25041
+ meaning: external_exports.string(),
25042
+ signerCount: external_exports.number(),
25043
+ signedCount: external_exports.number(),
25044
+ createdAt: external_exports.string(),
25045
+ expiresAt: external_exports.string()
25046
+ });
25047
+ var SigningRequestDetailResponseSchema = SigningRequestSummaryResponseSchema.extend({
25048
+ description: external_exports.string().optional(),
25049
+ createdBy: external_exports.string(),
25050
+ createdByEmail: external_exports.string(),
25051
+ signingDocuments: external_exports.array(SigningDocumentResponseSchema),
25052
+ signers: external_exports.array(SignerResponseSchema),
25053
+ auditTrail: external_exports.array(SigningAuditEntryResponseSchema)
25054
+ });
25055
+ var ListSigningRequestsResponseSchema = external_exports.object({
25056
+ signingRequests: external_exports.array(SigningRequestSummaryResponseSchema),
25057
+ total: external_exports.number()
25058
+ });
25059
+ var CeremonyDocumentResponseSchema = SigningDocumentResponseSchema.omit({
25060
+ storagePath: true
25061
+ });
25062
+ var CeremonyERSDResponseSchema = external_exports.object({
25063
+ id: external_exports.string(),
25064
+ content: external_exports.string(),
25065
+ version: external_exports.string()
25066
+ });
25067
+ var SigningCeremonyResponseSchema = external_exports.object({
25068
+ organizationName: external_exports.string(),
25069
+ title: external_exports.string(),
25070
+ description: external_exports.string().optional(),
25071
+ meaning: external_exports.string(),
25072
+ signerName: external_exports.string(),
25073
+ signerEmail: external_exports.string(),
25074
+ status: external_exports.enum(["ready", "already_signed", "expired", "cancelled"]),
25075
+ signingDocuments: external_exports.array(CeremonyDocumentResponseSchema),
25076
+ /** Only fields assigned to this signer */
25077
+ fields: external_exports.array(SigningFieldResponseSchema),
25078
+ /** Part 11: Electronic Record and Signature Disclosure — must be accepted before signing */
25079
+ ersd: CeremonyERSDResponseSchema
25080
+ });
25081
+ var DownloadSignedPdfResponseSchema = external_exports.object({
25082
+ downloadUrl: external_exports.string().url()
25083
+ });
25084
+ var NotificationTypeSchema = external_exports.enum([
25085
+ "training_assigned",
25086
+ "training_overdue",
25087
+ "release_submitted_for_review",
25088
+ "release_published",
25089
+ "signature_requested",
25090
+ "capa_overdue",
25091
+ "nc_overdue",
25092
+ "complaint_overdue",
25093
+ "action_overdue",
25094
+ "objective_threshold_breach",
25095
+ "review_due_soon",
25096
+ "review_auto_drafted",
25097
+ "review_overdue"
25098
+ ]);
25099
+ var NotificationOrgParamSchema = external_exports.object({
25100
+ orgId: external_exports.string().min(1)
25101
+ });
25102
+ var NotificationIdParamSchema = external_exports.object({
25103
+ orgId: external_exports.string().min(1),
25104
+ notificationId: external_exports.string().min(1)
25105
+ });
25106
+ var NotificationQuerySchema = external_exports.object({
25107
+ unreadOnly: external_exports.enum(["true", "false"]).optional(),
25108
+ type: NotificationTypeSchema.optional(),
25109
+ limit: external_exports.coerce.number().int().positive().max(100).optional()
25110
+ });
25111
+ var NotificationResponseSchema = external_exports.object({
25112
+ id: external_exports.string(),
25113
+ type: NotificationTypeSchema,
25114
+ title: external_exports.string(),
25115
+ body: external_exports.string(),
25116
+ resourceType: external_exports.string(),
25117
+ resourceId: external_exports.string(),
25118
+ deepLink: external_exports.string(),
25119
+ read: external_exports.boolean(),
25120
+ createdAt: external_exports.string()
25121
+ });
25122
+ var NotificationListResponseSchema = external_exports.object({
25123
+ notifications: external_exports.array(NotificationResponseSchema),
25124
+ unreadCount: external_exports.number()
25125
+ });
25126
+ var CreateCheckoutSessionRequestSchema = external_exports.object({
25127
+ organizationId: external_exports.string().min(1)
25128
+ });
25129
+ var CreatePortalSessionRequestSchema = external_exports.object({
25130
+ organizationId: external_exports.string().min(1)
25131
+ });
25132
+ var MonthlyCountSchema = external_exports.object({
25133
+ month: external_exports.string(),
25134
+ // 'YYYY-MM'
25135
+ opened: external_exports.number(),
25136
+ closed: external_exports.number()
25137
+ });
25138
+ var CapaMetricsSchema = external_exports.object({
25139
+ total: external_exports.number(),
25140
+ byStatus: external_exports.record(external_exports.string(), external_exports.number()),
25141
+ overdue: external_exports.number(),
25142
+ avgCycleTimeDays: external_exports.number().nullable(),
25143
+ trend: external_exports.array(MonthlyCountSchema)
25144
+ });
25145
+ var NcMetricsSchema = external_exports.object({
25146
+ total: external_exports.number(),
25147
+ byStatus: external_exports.record(external_exports.string(), external_exports.number()),
25148
+ bySeverity: external_exports.record(external_exports.string(), external_exports.number()),
25149
+ overdue: external_exports.number(),
25150
+ avgCycleTimeDays: external_exports.number().nullable(),
25151
+ trend: external_exports.array(MonthlyCountSchema)
25152
+ });
25153
+ var ComplaintMetricsSchema = external_exports.object({
25154
+ total: external_exports.number(),
25155
+ byStatus: external_exports.record(external_exports.string(), external_exports.number()),
25156
+ bySeverity: external_exports.record(external_exports.string(), external_exports.number()),
25157
+ overdue: external_exports.number(),
25158
+ reportableCount: external_exports.number(),
25159
+ avgCycleTimeDays: external_exports.number().nullable(),
25160
+ trend: external_exports.array(MonthlyCountSchema)
25161
+ });
25162
+ var TrainingMetricsSchema = external_exports.object({
25163
+ totalTasks: external_exports.number(),
25164
+ complianceRate: external_exports.number(),
25165
+ // 0-100
25166
+ byStatus: external_exports.record(external_exports.string(), external_exports.number()),
25167
+ overdue: external_exports.number()
25168
+ });
25169
+ var ReleaseMetricsSchema = external_exports.object({
25170
+ total: external_exports.number(),
25171
+ byStatus: external_exports.record(external_exports.string(), external_exports.number()),
25172
+ avgCycleTimeDays: external_exports.number().nullable()
25173
+ });
25174
+ var AuditMetricsSchema = external_exports.object({
25175
+ totalSchedules: external_exports.number(),
25176
+ totalReports: external_exports.number(),
25177
+ findingsMajor: external_exports.number(),
25178
+ findingsMinor: external_exports.number(),
25179
+ findingsObservations: external_exports.number()
25180
+ });
25181
+ var QualityMetricsResponseSchema = external_exports.object({
25182
+ generatedAt: external_exports.string(),
25183
+ period: external_exports.object({
25184
+ from: external_exports.string(),
25185
+ to: external_exports.string()
25186
+ }),
25187
+ capas: CapaMetricsSchema,
25188
+ nonconformances: NcMetricsSchema,
25189
+ complaints: ComplaintMetricsSchema,
25190
+ training: TrainingMetricsSchema,
25191
+ releases: ReleaseMetricsSchema,
25192
+ audits: AuditMetricsSchema
25193
+ });
25194
+ var QualityMetricsQuerySchema = external_exports.object({
25195
+ period: external_exports.enum(["30d", "90d", "365d"]).optional().default("90d")
25196
+ });
25197
+ var ApiKeyOrgParamSchema = external_exports.object({
25198
+ orgId: external_exports.string().min(1)
25199
+ });
25200
+ var ApiKeyIdParamSchema = external_exports.object({
25201
+ orgId: external_exports.string().min(1),
25202
+ apiKeyId: external_exports.string().min(1)
25203
+ });
25204
+ var CreateApiKeyRequestSchema = external_exports.object({
25205
+ name: external_exports.string().min(1).max(100)
25206
+ });
25207
+ var ApiKeyResponseSchema = external_exports.object({
25208
+ id: external_exports.string(),
25209
+ name: external_exports.string(),
25210
+ prefix: external_exports.string(),
25211
+ createdAt: external_exports.string(),
25212
+ lastUsedAt: external_exports.string().nullable(),
25213
+ createdBy: external_exports.string(),
25214
+ createdByEmail: external_exports.string()
25215
+ });
25216
+ var CreateApiKeyResponseSchema = external_exports.object({
25217
+ id: external_exports.string(),
25218
+ name: external_exports.string(),
25219
+ key: external_exports.string(),
25220
+ prefix: external_exports.string(),
25221
+ createdAt: external_exports.string()
25222
+ });
25223
+ var ApiKeyListResponseSchema = external_exports.object({
25224
+ keys: external_exports.array(ApiKeyResponseSchema)
25225
+ });
25226
+ var CompliancePackageStatusEnum = external_exports.enum([
25227
+ "pending",
25228
+ "in_progress",
25229
+ "completed",
25230
+ "failed"
25231
+ ]);
25232
+ var CompliancePackageSectionEnum = external_exports.enum([
25233
+ "system_description",
25234
+ "electronic_signatures",
25235
+ "audit_trails",
25236
+ "access_controls",
25237
+ "change_control",
25238
+ "dhr_attestation",
25239
+ "compiled_documents"
25240
+ ]);
25241
+ var ComplianceOrgParamSchema = external_exports.object({
25242
+ orgId: external_exports.string().min(1)
25243
+ });
25244
+ var CompliancePackageParamSchema = external_exports.object({
25245
+ orgId: external_exports.string().min(1),
25246
+ packageId: external_exports.string().min(1)
25247
+ });
25248
+ var GenerateCompliancePackageRequestSchema = external_exports.object({
25249
+ /** Safety class determines which sections and depth of evidence to include */
25250
+ safetyClass: SafetyClassSchema,
25251
+ /** Sections to include; defaults to all if omitted */
25252
+ sections: external_exports.array(CompliancePackageSectionEnum).min(1).optional(),
25253
+ /** Optional date range filter for audit trail entries */
25254
+ auditTrailFrom: external_exports.string().datetime().optional(),
25255
+ auditTrailTo: external_exports.string().datetime().optional(),
25256
+ /** Optional release ID to scope signatures and change control to a specific release */
25257
+ releaseId: external_exports.string().optional()
25258
+ });
25259
+ var CompliancePackageResponseSchema = external_exports.object({
25260
+ id: external_exports.string(),
25261
+ organizationId: external_exports.string(),
25262
+ status: CompliancePackageStatusEnum,
25263
+ safetyClass: SafetyClassSchema,
25264
+ sections: external_exports.array(CompliancePackageSectionEnum),
25265
+ /** Requesting member info */
25266
+ requestedById: external_exports.string(),
25267
+ requestedByName: external_exports.string(),
25268
+ requestedAt: external_exports.string(),
25269
+ /** Completion timestamps */
25270
+ completedAt: external_exports.string().optional(),
25271
+ /** Expiry for the download URL */
25272
+ downloadExpiresAt: external_exports.string().optional(),
25273
+ /** Error message — only present when status is 'failed' */
25274
+ errorMessage: external_exports.string().optional(),
25275
+ /** Optional scoping filters used during generation */
25276
+ releaseId: external_exports.string().optional(),
25277
+ auditTrailFrom: external_exports.string().optional(),
25278
+ auditTrailTo: external_exports.string().optional()
25279
+ });
25280
+ var CompliancePackageListResponseSchema = external_exports.object({
25281
+ packages: external_exports.array(CompliancePackageResponseSchema)
25282
+ });
25283
+ var ValidationPackageResponseSchema = external_exports.object({
25284
+ downloadUrl: external_exports.string().url(),
25285
+ version: external_exports.string(),
25286
+ lastUpdated: external_exports.string()
25287
+ });
25288
+ var ReadinessSeveritySchema = external_exports.enum(["error", "warning", "info"]);
25289
+ var ReadinessItemSchema = external_exports.object({
25290
+ severity: ReadinessSeveritySchema,
25291
+ message: external_exports.string(),
25292
+ documentId: external_exports.string().optional(),
25293
+ releaseId: external_exports.string().optional(),
25294
+ action: external_exports.string()
25295
+ });
25296
+ var ReadinessDimensionSchema = external_exports.object({
25297
+ name: external_exports.string(),
25298
+ score: external_exports.number().min(0).max(100),
25299
+ weight: external_exports.number().min(0).max(1),
25300
+ details: external_exports.string(),
25301
+ items: external_exports.array(ReadinessItemSchema)
25302
+ });
25303
+ var ComplianceReadinessResponseSchema = external_exports.object({
25304
+ overallScore: external_exports.number().min(0).max(100),
25305
+ calculatedAt: external_exports.string(),
25306
+ dimensions: external_exports.array(ReadinessDimensionSchema)
25307
+ });
25308
+ var QUALITY_FINDING_CODES = [
25309
+ "review_overdue",
25310
+ "action_overdue",
25311
+ "objective_off_target",
25312
+ "review_actions_incomplete"
22523
25313
  ];
22524
- var DOCUMENT_TYPES = {
22525
- user_need: "User Need",
22526
- requirement: "Requirement",
22527
- architecture: "Architecture",
22528
- detailed_design: "Detailed Design",
22529
- test_protocol: "Test Protocol",
22530
- test_report: "Test Report",
22531
- sop: "SOP",
22532
- work_instruction: "Work Instruction",
22533
- policy: "Policy",
22534
- usability_risk: "Usability Risk",
22535
- software_risk: "Software Risk",
22536
- security_risk: "Security Risk",
22537
- // Risk document types
22538
- haz_soe_software: "Hazard (Software)",
22539
- haz_soe_security: "Hazard (Security)",
22540
- hazardous_situation: "Hazardous Situation",
22541
- harm: "Harm",
22542
- hazard_category: "Hazard Category",
22543
- // Usability engineering (IEC 62366)
22544
- usability_plan: "Usability Plan",
22545
- use_specification: "Use Specification",
22546
- task_analysis: "Task Analysis",
22547
- usability_evaluation: "Usability Evaluation",
22548
- summative_evaluation: "Summative Evaluation",
22549
- // Risk management (ISO 14971)
22550
- risk_management_plan: "Risk Management Plan",
22551
- // Software lifecycle (IEC 62304)
22552
- software_development_plan: "Software Development Plan",
22553
- software_maintenance_plan: "Software Maintenance Plan",
22554
- soup_register: "SOUP Register",
22555
- // Problem resolution (IEC 62304 §9)
22556
- anomaly: "Anomaly",
22557
- // Cybersecurity (IEC 81001-5-1)
22558
- cybersecurity_plan: "Cybersecurity Plan",
22559
- sbom: "SBOM",
22560
- // Clinical (MDR / FDA)
22561
- clinical_evaluation_plan: "Clinical Evaluation Plan",
22562
- clinical_evaluation_report: "Clinical Evaluation Report",
22563
- // Post-market surveillance (MDR Art. 83)
22564
- post_market_surveillance_plan: "Post-Market Surveillance Plan",
22565
- post_market_feedback: "Post-Market Feedback",
22566
- // Labeling (MDR Annex I)
22567
- labeling: "Labeling",
22568
- // Product (ISO 13485 §7.3)
22569
- product_development_plan: "Product Development Plan",
22570
- intended_use: "Intended Use",
22571
- // Release management (IEC 62304 §5.7)
22572
- release_plan: "Release Plan",
22573
- // Change management (ISO 13485 §7.3.5)
22574
- design_review: "Design Review",
22575
- release_notes: "Release Notes",
22576
- // Supplier management (ISO 13485 §7.4)
22577
- supplier: "Supplier",
22578
- // Internal audit management (ISO 13485 §8.2.2)
22579
- audit_schedule: "Audit Schedule",
22580
- audit_report: "Audit Report",
22581
- // Management review (ISO 13485 §5.6)
22582
- management_review: "Management Review",
22583
- // Software test plan (IEC 62304 §5.7)
22584
- software_test_plan: "Software Test Plan"
22585
- };
22586
- var LINK_TYPES = {
22587
- derives_from: "Derives From",
22588
- implements: "Implements",
22589
- verified_by: "Verified By",
22590
- mitigates: "Mitigates",
22591
- parent_of: "Parent Of",
22592
- related_to: "Related To",
22593
- // New risk link types
22594
- leads_to: "Leads To",
22595
- results_in: "Results In",
22596
- analyzes: "Analyzes"
22597
- };
22598
- var REQUIRED_SECTIONS = {
22599
- user_need: ["Purpose", "Stakeholder", "User Needs"],
22600
- architecture: ["Purpose"],
22601
- release_plan: ["Scope", "Applicable Plans", "Release-Specific Criteria", "Known Anomalies"],
22602
- design_review: ["Review Scope", "Attendees", "Findings", "Actions", "Conclusion"],
22603
- release_notes: ["Changes", "Known Issues"],
22604
- audit_schedule: ["Scope", "Audit Criteria"],
22605
- audit_report: ["Scope", "Methodology", "Findings", "Conclusion"],
22606
- management_review: ["Review Inputs", "Review Outputs", "Action Items", "Decisions"],
22607
- hazard_category: ["Description", "Examples", "Applicable Standards"]
22608
- };
22609
- var MemberPermissionsSchema = external_exports.object({
22610
- canSign: external_exports.boolean(),
22611
- canApprove: external_exports.boolean(),
22612
- canCreateRelease: external_exports.boolean(),
22613
- canPublishRelease: external_exports.boolean(),
22614
- canManageMembers: external_exports.boolean(),
22615
- canViewAuditLog: external_exports.boolean(),
22616
- canExport: external_exports.boolean()
25314
+ var QUALITY_FINDING_SEVERITIES = ["error", "warning"];
25315
+ var QualityFindingSchema = external_exports.object({
25316
+ code: external_exports.enum(QUALITY_FINDING_CODES),
25317
+ severity: external_exports.enum(QUALITY_FINDING_SEVERITIES),
25318
+ entityId: external_exports.string(),
25319
+ entityTitle: external_exports.string(),
25320
+ message: external_exports.string(),
25321
+ metadata: external_exports.record(external_exports.unknown()).optional()
25322
+ });
25323
+ var QualityFindingsResponseSchema = external_exports.object({
25324
+ findings: external_exports.array(QualityFindingSchema),
25325
+ summary: external_exports.object({
25326
+ errorCount: external_exports.number(),
25327
+ warningCount: external_exports.number(),
25328
+ overdueActions: external_exports.number(),
25329
+ overdueReviews: external_exports.number(),
25330
+ offTargetObjectives: external_exports.number(),
25331
+ incompleteReviewActions: external_exports.number()
25332
+ })
25333
+ });
25334
+ var GetFrameworksQuerySchema = external_exports.object({
25335
+ scope: FrameworkScopeSchema.optional()
25336
+ });
25337
+ var GetFrameworkParamsSchema = external_exports.object({
25338
+ frameworkId: RegulatoryFrameworkSchema
25339
+ });
25340
+ var GetClauseMappingsParamsSchema = external_exports.object({
25341
+ frameworkId: RegulatoryFrameworkSchema,
25342
+ clauseId: external_exports.string().min(1)
25343
+ });
25344
+ var GetCrosswalkQuerySchema = external_exports.object({
25345
+ targetFrameworkId: RegulatoryFrameworkSchema
25346
+ });
25347
+ var GetQmsComplianceParamsSchema = external_exports.object({
25348
+ orgId: external_exports.string().min(1)
25349
+ });
25350
+ var GetQmsComplianceQuerySchema = external_exports.object({
25351
+ repositoryId: external_exports.string().min(1)
25352
+ });
25353
+ var GetDeviceComplianceParamsSchema = external_exports.object({
25354
+ orgId: external_exports.string().min(1),
25355
+ deviceId: external_exports.string().min(1)
25356
+ });
25357
+ var GetDeviceFrameworkComplianceParamsSchema = external_exports.object({
25358
+ orgId: external_exports.string().min(1),
25359
+ deviceId: external_exports.string().min(1),
25360
+ frameworkId: RegulatoryFrameworkSchema
25361
+ });
25362
+ var FrameworkSummarySchema = external_exports.object({
25363
+ id: RegulatoryFrameworkSchema,
25364
+ name: external_exports.string(),
25365
+ version: external_exports.string(),
25366
+ scope: FrameworkScopeSchema,
25367
+ url: external_exports.string().nullable(),
25368
+ active: external_exports.boolean(),
25369
+ clauseCount: external_exports.number().int().nonnegative()
25370
+ });
25371
+ var FrameworksListResponseSchema = external_exports.object({
25372
+ frameworks: external_exports.array(FrameworkSummarySchema)
25373
+ });
25374
+ var ClauseNodeSchema = external_exports.lazy(
25375
+ () => external_exports.object({
25376
+ id: external_exports.string(),
25377
+ frameworkId: RegulatoryFrameworkSchema,
25378
+ clauseNumber: external_exports.string(),
25379
+ title: external_exports.string(),
25380
+ parentClauseId: external_exports.string().nullable(),
25381
+ depth: external_exports.number().int().nonnegative(),
25382
+ sortOrder: external_exports.number().int().nonnegative(),
25383
+ children: external_exports.array(ClauseNodeSchema)
25384
+ })
25385
+ );
25386
+ var FrameworkDetailResponseSchema = external_exports.object({
25387
+ id: RegulatoryFrameworkSchema,
25388
+ name: external_exports.string(),
25389
+ version: external_exports.string(),
25390
+ scope: FrameworkScopeSchema,
25391
+ url: external_exports.string().nullable(),
25392
+ active: external_exports.boolean(),
25393
+ clauses: external_exports.array(ClauseNodeSchema)
25394
+ });
25395
+ var ClauseMappingSchema = external_exports.object({
25396
+ clauseId: external_exports.string(),
25397
+ mappedFrameworkId: RegulatoryFrameworkSchema,
25398
+ mappedFrameworkName: external_exports.string(),
25399
+ mappedClauseId: external_exports.string(),
25400
+ mappedClauseTitle: external_exports.string(),
25401
+ relationship: MappingRelationshipSchema,
25402
+ notes: external_exports.string().nullable()
25403
+ });
25404
+ var ClauseMappingsResponseSchema = external_exports.object({
25405
+ clauseId: external_exports.string(),
25406
+ frameworkId: RegulatoryFrameworkSchema,
25407
+ mappings: external_exports.array(ClauseMappingSchema)
25408
+ });
25409
+ var CrosswalkResponseSchema = external_exports.object({
25410
+ sourceFrameworkId: RegulatoryFrameworkSchema,
25411
+ targetFrameworkId: RegulatoryFrameworkSchema,
25412
+ mappings: external_exports.array(ClauseMappingSchema)
25413
+ });
25414
+ var FrameworkCoverageSchema = external_exports.object({
25415
+ frameworkId: RegulatoryFrameworkSchema,
25416
+ frameworkName: external_exports.string(),
25417
+ totalClauses: external_exports.number().int().nonnegative(),
25418
+ coveredClauses: external_exports.number().int().nonnegative(),
25419
+ coveragePercent: external_exports.number().min(0).max(100),
25420
+ scope: FrameworkScopeSchema
25421
+ });
25422
+ var ComplianceSummaryResponseSchema = external_exports.object({
25423
+ organizationId: external_exports.string(),
25424
+ frameworks: external_exports.array(FrameworkCoverageSchema),
25425
+ overallCoveragePercent: external_exports.number().min(0).max(100)
25426
+ });
25427
+ var EvidenceItemSchema = external_exports.object({
25428
+ documentId: external_exports.string(),
25429
+ documentTitle: external_exports.string(),
25430
+ /** Document type. Optional — omitted for non-document evidence (e.g. training records). */
25431
+ docType: DocumentTypeSchema.optional(),
25432
+ linkType: LinkTypeSchema.optional(),
25433
+ status: external_exports.string()
25434
+ });
25435
+ var ClauseComplianceSchema = external_exports.object({
25436
+ clauseId: external_exports.string(),
25437
+ clauseNumber: external_exports.string(),
25438
+ clauseTitle: external_exports.string(),
25439
+ covered: external_exports.boolean(),
25440
+ /** Compliance score 0..1 based on weighted evidence rules */
25441
+ score: external_exports.number().min(0).max(1),
25442
+ evidence: external_exports.array(EvidenceItemSchema)
25443
+ });
25444
+ var FrameworkComplianceResponseSchema = external_exports.object({
25445
+ frameworkId: RegulatoryFrameworkSchema,
25446
+ frameworkName: external_exports.string(),
25447
+ totalClauses: external_exports.number().int().nonnegative(),
25448
+ coveredClauses: external_exports.number().int().nonnegative(),
25449
+ coveragePercent: external_exports.number().min(0).max(100),
25450
+ clauses: external_exports.array(ClauseComplianceSchema)
25451
+ });
25452
+ var ClauseEvidenceStatusSchema = external_exports.enum(["covered", "partial", "missing"]);
25453
+ var ClauseEvidenceItemSchema = external_exports.object({
25454
+ type: external_exports.string(),
25455
+ label: external_exports.string(),
25456
+ count: external_exports.number().int().nonnegative(),
25457
+ status: ClauseEvidenceStatusSchema
25458
+ });
25459
+ var ClauseEvidenceNodeSchema = external_exports.object({
25460
+ clauseId: external_exports.string(),
25461
+ clauseNumber: external_exports.string(),
25462
+ clauseTitle: external_exports.string(),
25463
+ status: ClauseEvidenceStatusSchema,
25464
+ evidenceCount: external_exports.number().int().nonnegative(),
25465
+ evidence: external_exports.array(ClauseEvidenceItemSchema)
25466
+ });
25467
+ var FrameworkEvidenceResponseSchema = external_exports.object({
25468
+ frameworkId: RegulatoryFrameworkSchema,
25469
+ frameworkName: external_exports.string(),
25470
+ totalClauses: external_exports.number().int().nonnegative(),
25471
+ coveredClauses: external_exports.number().int().nonnegative(),
25472
+ partialClauses: external_exports.number().int().nonnegative(),
25473
+ missingClauses: external_exports.number().int().nonnegative(),
25474
+ clauses: external_exports.array(ClauseEvidenceNodeSchema)
22617
25475
  });
22618
25476
  var SCHEMA_MAP = {
22619
25477
  // Risk entries
@@ -22919,7 +25777,7 @@ var client = new PactoSignaApiClient({
22919
25777
  apiKey: PACTOSIGNA_API_KEY
22920
25778
  });
22921
25779
  var server = new Server(
22922
- { name: "pactosigna", version: "0.1.8" },
25780
+ { name: "pactosigna", version: "0.1.9" },
22923
25781
  { capabilities: { tools: {} } }
22924
25782
  );
22925
25783
  server.setRequestHandler(ListToolsRequestSchema, async () => ({