@pactosigna/trace 0.1.0 → 0.1.1

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 (3) hide show
  1. package/dist/cli.js +135 -131
  2. package/dist/index.js +2 -0
  3. package/package.json +13 -13
package/dist/cli.js CHANGED
@@ -32,6 +32,7 @@ import { z as z28 } from "zod";
32
32
  import { z as z29 } from "zod";
33
33
  import { z as z30 } from "zod";
34
34
  import { z as z31 } from "zod";
35
+ import { z as z32 } from "zod";
35
36
  var REQUIRED_SECTIONS = {
36
37
  user_need: ["User Story", "Validation Criteria"],
37
38
  architecture: ["Purpose", "Architecture Overview", "Interfaces"],
@@ -2426,6 +2427,7 @@ var ResourceTypeSchema = z31.enum([
2426
2427
  "component",
2427
2428
  "compiled_record_export"
2428
2429
  ]);
2430
+ var ExportSignatureModeSchema = z32.enum(["live", "frozen"]);
2429
2431
 
2430
2432
  // src/loaders/filesystem-document-loader.ts
2431
2433
  import { readdirSync, readFileSync, statSync } from "fs";
@@ -4005,8 +4007,8 @@ import { relative as relative3, resolve } from "path";
4005
4007
 
4006
4008
  // ../schemas/dist/index.js
4007
4009
  import { z as z210 } from "zod";
4008
- import { z as z32 } from "zod";
4009
4010
  import { z as z33 } from "zod";
4011
+ import { z as z34 } from "zod";
4010
4012
  import { z as z42 } from "zod";
4011
4013
  import { z as z52 } from "zod";
4012
4014
  import { z as z72 } from "zod";
@@ -4035,6 +4037,7 @@ import { z as z282 } from "zod";
4035
4037
  import { z as z292 } from "zod";
4036
4038
  import { z as z302 } from "zod";
4037
4039
  import { z as z312 } from "zod";
4040
+ import { z as z322 } from "zod";
4038
4041
  import matter2 from "gray-matter";
4039
4042
  import path from "path";
4040
4043
  import fs from "fs";
@@ -4067,7 +4070,7 @@ var REQUIRED_SECTIONS2 = {
4067
4070
  "Training Requirements"
4068
4071
  ]
4069
4072
  };
4070
- var RiskDocumentStatusSchema2 = z32.enum([
4073
+ var RiskDocumentStatusSchema2 = z33.enum([
4071
4074
  "draft",
4072
4075
  "in_review",
4073
4076
  "approved",
@@ -4075,13 +4078,13 @@ var RiskDocumentStatusSchema2 = z32.enum([
4075
4078
  "archived",
4076
4079
  "example"
4077
4080
  ]);
4078
- var IsoCategorySchema2 = z32.enum([
4081
+ var IsoCategorySchema2 = z33.enum([
4079
4082
  "safe_design",
4080
4083
  "protective_measure",
4081
4084
  "safety_information"
4082
4085
  ]);
4083
- var ReducesTargetSchema2 = z32.enum(["p1_sequence", "p2_harm", "severity"]);
4084
- var RiskGapCodeSchema2 = z32.enum([
4086
+ var ReducesTargetSchema2 = z33.enum(["p1_sequence", "p2_harm", "severity"]);
4087
+ var RiskGapCodeSchema2 = z33.enum([
4085
4088
  "hazard_no_situation",
4086
4089
  "situation_no_harm",
4087
4090
  "hazard_not_analyzed",
@@ -4114,40 +4117,40 @@ var RiskGapCodeSchema2 = z32.enum([
4114
4117
  "risk_control_no_verification",
4115
4118
  "architecture_no_asset_types"
4116
4119
  ]);
4117
- var RiskGapSeveritySchema2 = z32.enum(["error", "warning"]);
4118
- var MitigationSchema2 = z32.object({
4119
- control: z32.string().min(1),
4120
+ var RiskGapSeveritySchema2 = z33.enum(["error", "warning"]);
4121
+ var MitigationSchema2 = z33.object({
4122
+ control: z33.string().min(1),
4120
4123
  iso_category: IsoCategorySchema2,
4121
4124
  reduces: ReducesTargetSchema2
4122
4125
  });
4123
- var HarmAssessmentSchema2 = z32.object({
4124
- harm: z32.string().min(1),
4125
- inherent_probability: z32.number().int().min(1).max(5).optional(),
4126
- inherent_exploitability: z32.number().int().min(1).max(5).optional(),
4127
- residual_probability: z32.number().int().min(1).max(5).optional(),
4128
- residual_exploitability: z32.number().int().min(1).max(5).optional(),
4129
- harm_severity_override: z32.number().int().min(1).max(5).optional(),
4130
- risk_acceptable: z32.boolean(),
4131
- benefit_outweighs_risk: z32.boolean().optional()
4132
- });
4133
- var HazardousSituationAssessmentSchema2 = z32.object({
4134
- hazardous_situation: z32.string().min(1),
4135
- mitigations: z32.array(MitigationSchema2).optional(),
4136
- harms: z32.array(HarmAssessmentSchema2).min(1)
4137
- });
4138
- var RiskEntryFrontmatterSchema2 = z32.object({
4139
- type: z32.enum(["software_risk", "usability_risk", "security_risk"]),
4140
- id: z32.string().min(1),
4141
- title: z32.string().min(1),
4126
+ var HarmAssessmentSchema2 = z33.object({
4127
+ harm: z33.string().min(1),
4128
+ inherent_probability: z33.number().int().min(1).max(5).optional(),
4129
+ inherent_exploitability: z33.number().int().min(1).max(5).optional(),
4130
+ residual_probability: z33.number().int().min(1).max(5).optional(),
4131
+ residual_exploitability: z33.number().int().min(1).max(5).optional(),
4132
+ harm_severity_override: z33.number().int().min(1).max(5).optional(),
4133
+ risk_acceptable: z33.boolean(),
4134
+ benefit_outweighs_risk: z33.boolean().optional()
4135
+ });
4136
+ var HazardousSituationAssessmentSchema2 = z33.object({
4137
+ hazardous_situation: z33.string().min(1),
4138
+ mitigations: z33.array(MitigationSchema2).optional(),
4139
+ harms: z33.array(HarmAssessmentSchema2).min(1)
4140
+ });
4141
+ var RiskEntryFrontmatterSchema2 = z33.object({
4142
+ type: z33.enum(["software_risk", "usability_risk", "security_risk"]),
4143
+ id: z33.string().min(1),
4144
+ title: z33.string().min(1),
4142
4145
  status: RiskDocumentStatusSchema2,
4143
- author: z32.string().min(1),
4144
- reviewers: z32.array(z32.string()).optional(),
4145
- approvers: z32.array(z32.string()).optional(),
4146
- analyzes: z32.string().min(1),
4147
- mitigations: z32.array(MitigationSchema2).optional(),
4148
- hazardous_situation_assessments: z32.array(HazardousSituationAssessmentSchema2).min(1),
4149
- cvss_score: z32.number().min(0).max(10).optional(),
4150
- cvss_vector: z32.string().regex(
4146
+ author: z33.string().min(1),
4147
+ reviewers: z33.array(z33.string()).optional(),
4148
+ approvers: z33.array(z33.string()).optional(),
4149
+ analyzes: z33.string().min(1),
4150
+ mitigations: z33.array(MitigationSchema2).optional(),
4151
+ hazardous_situation_assessments: z33.array(HazardousSituationAssessmentSchema2).min(1),
4152
+ cvss_score: z33.number().min(0).max(10).optional(),
4153
+ cvss_vector: z33.string().regex(
4151
4154
  /^CVSS:3\.[01]\/AV:[NALP]\/AC:[LH]\/PR:[NLH]\/UI:[NR]\/S:[UC]\/C:[NLH]\/I:[NLH]\/A:[NLH]$/
4152
4155
  ).optional()
4153
4156
  }).refine(
@@ -4170,77 +4173,77 @@ var RiskEntryFrontmatterSchema2 = z32.object({
4170
4173
  message: "benefit_outweighs_risk required when risk_acceptable is false"
4171
4174
  }
4172
4175
  );
4173
- var HazardSoftwareFrontmatterSchema2 = z32.object({
4174
- type: z32.literal("haz_soe_software"),
4175
- id: z32.string().min(1),
4176
- title: z32.string().min(1),
4176
+ var HazardSoftwareFrontmatterSchema2 = z33.object({
4177
+ type: z33.literal("haz_soe_software"),
4178
+ id: z33.string().min(1),
4179
+ title: z33.string().min(1),
4177
4180
  status: RiskDocumentStatusSchema2,
4178
- author: z32.string().min(1),
4179
- reviewers: z32.array(z32.string()).optional(),
4180
- approvers: z32.array(z32.string()).optional(),
4181
- preliminary: z32.boolean().default(false),
4182
- leads_to: z32.array(z32.string()).optional(),
4183
- hazard_category: z32.string().optional(),
4184
- detection_score: z32.number().int().min(1).max(5).optional(),
4185
- detection_method: z32.string().optional(),
4181
+ author: z33.string().min(1),
4182
+ reviewers: z33.array(z33.string()).optional(),
4183
+ approvers: z33.array(z33.string()).optional(),
4184
+ preliminary: z33.boolean().default(false),
4185
+ leads_to: z33.array(z33.string()).optional(),
4186
+ hazard_category: z33.string().optional(),
4187
+ detection_score: z33.number().int().min(1).max(5).optional(),
4188
+ detection_method: z33.string().optional(),
4186
4189
  /** Reference to the HLD/SDD software item this hazard applies to (IEC 62304 §7.1) */
4187
- software_item: z32.string().min(1).optional()
4190
+ software_item: z33.string().min(1).optional()
4188
4191
  });
4189
- var HazardSecurityFrontmatterSchema2 = z32.object({
4190
- type: z32.literal("haz_soe_security"),
4191
- id: z32.string().min(1),
4192
- title: z32.string().min(1),
4192
+ var HazardSecurityFrontmatterSchema2 = z33.object({
4193
+ type: z33.literal("haz_soe_security"),
4194
+ id: z33.string().min(1),
4195
+ title: z33.string().min(1),
4193
4196
  status: RiskDocumentStatusSchema2,
4194
- author: z32.string().min(1),
4195
- reviewers: z32.array(z32.string()).optional(),
4196
- approvers: z32.array(z32.string()).optional(),
4197
- preliminary: z32.boolean().default(false),
4198
- leads_to: z32.array(z32.string()).optional(),
4199
- hazard_category: z32.string().optional(),
4197
+ author: z33.string().min(1),
4198
+ reviewers: z33.array(z33.string()).optional(),
4199
+ approvers: z33.array(z33.string()).optional(),
4200
+ preliminary: z33.boolean().default(false),
4201
+ leads_to: z33.array(z33.string()).optional(),
4202
+ hazard_category: z33.string().optional(),
4200
4203
  /** Reference to the HLD/SDD software item this security hazard applies to (IEC 62304 §7.1, IEC 81001-5-1) */
4201
- software_item: z32.string().min(1).optional()
4204
+ software_item: z33.string().min(1).optional()
4202
4205
  });
4203
- var HazardFrontmatterSchema2 = z32.discriminatedUnion("type", [
4206
+ var HazardFrontmatterSchema2 = z33.discriminatedUnion("type", [
4204
4207
  HazardSoftwareFrontmatterSchema2,
4205
4208
  HazardSecurityFrontmatterSchema2
4206
4209
  ]);
4207
- var HazardCategoryFrontmatterSchema2 = z32.object({
4208
- type: z32.literal("hazard_category"),
4209
- id: z32.string().min(1),
4210
- title: z32.string().min(1),
4210
+ var HazardCategoryFrontmatterSchema2 = z33.object({
4211
+ type: z33.literal("hazard_category"),
4212
+ id: z33.string().min(1),
4213
+ title: z33.string().min(1),
4211
4214
  status: RiskDocumentStatusSchema2,
4212
- source: z32.string().optional()
4215
+ source: z33.string().optional()
4213
4216
  });
4214
- var HazardousSituationFrontmatterSchema2 = z32.object({
4215
- type: z32.literal("hazardous_situation"),
4216
- id: z32.string().min(1),
4217
- title: z32.string().min(1),
4217
+ var HazardousSituationFrontmatterSchema2 = z33.object({
4218
+ type: z33.literal("hazardous_situation"),
4219
+ id: z33.string().min(1),
4220
+ title: z33.string().min(1),
4218
4221
  status: RiskDocumentStatusSchema2,
4219
- results_in: z32.array(z32.string()).optional()
4222
+ results_in: z33.array(z33.string()).optional()
4220
4223
  });
4221
- var HarmFrontmatterSchema2 = z32.object({
4222
- type: z32.literal("harm"),
4223
- id: z32.string().min(1),
4224
- title: z32.string().min(1),
4224
+ var HarmFrontmatterSchema2 = z33.object({
4225
+ type: z33.literal("harm"),
4226
+ id: z33.string().min(1),
4227
+ title: z33.string().min(1),
4225
4228
  status: RiskDocumentStatusSchema2,
4226
- severity: z32.number().int().min(1).max(5),
4227
- category: z32.string().optional()
4228
- });
4229
- var RiskMatrixConfigSchema2 = z32.object({
4230
- version: z32.number(),
4231
- labels: z32.object({
4232
- severity: z32.array(z32.string()).length(5),
4233
- probability: z32.array(z32.string()).length(5),
4234
- exploitability: z32.array(z32.string()).length(5).optional()
4229
+ severity: z33.number().int().min(1).max(5),
4230
+ category: z33.string().optional()
4231
+ });
4232
+ var RiskMatrixConfigSchema2 = z33.object({
4233
+ version: z33.number(),
4234
+ labels: z33.object({
4235
+ severity: z33.array(z33.string()).length(5),
4236
+ probability: z33.array(z33.string()).length(5),
4237
+ exploitability: z33.array(z33.string()).length(5).optional()
4235
4238
  }),
4236
- acceptability: z32.object({
4237
- unacceptable: z32.array(z32.tuple([z32.number(), z32.number()])),
4238
- review_required: z32.array(z32.tuple([z32.number(), z32.number()])).optional()
4239
+ acceptability: z33.object({
4240
+ unacceptable: z33.array(z33.tuple([z33.number(), z33.number()])),
4241
+ review_required: z33.array(z33.tuple([z33.number(), z33.number()])).optional()
4239
4242
  }),
4240
- overrides: z32.record(
4241
- z32.object({
4242
- unacceptable: z32.array(z32.tuple([z32.number(), z32.number()])),
4243
- review_required: z32.array(z32.tuple([z32.number(), z32.number()])).optional()
4243
+ overrides: z33.record(
4244
+ z33.object({
4245
+ unacceptable: z33.array(z33.tuple([z33.number(), z33.number()])),
4246
+ review_required: z33.array(z33.tuple([z33.number(), z33.number()])).optional()
4244
4247
  })
4245
4248
  ).optional()
4246
4249
  });
@@ -4271,50 +4274,50 @@ var AnomalyFrontmatterSchema2 = z210.object({
4271
4274
  reviewers: z210.array(z210.string()).optional(),
4272
4275
  approvers: z210.array(z210.string()).optional()
4273
4276
  });
4274
- var AuditFindingClassificationSchema2 = z33.enum(["observation", "minor_nc", "major_nc"]);
4275
- var AuditStatusSchema2 = z33.enum(["planned", "in_progress", "completed", "cancelled"]);
4276
- var PlannedAuditEntrySchema2 = z33.object({
4277
- audit_id: z33.string().min(1),
4278
- process_area: z33.string().min(1),
4279
- clause: z33.string().optional(),
4280
- planned_date: z33.string().min(1),
4281
- auditor: z33.string().min(1),
4277
+ var AuditFindingClassificationSchema2 = z34.enum(["observation", "minor_nc", "major_nc"]);
4278
+ var AuditStatusSchema2 = z34.enum(["planned", "in_progress", "completed", "cancelled"]);
4279
+ var PlannedAuditEntrySchema2 = z34.object({
4280
+ audit_id: z34.string().min(1),
4281
+ process_area: z34.string().min(1),
4282
+ clause: z34.string().optional(),
4283
+ planned_date: z34.string().min(1),
4284
+ auditor: z34.string().min(1),
4282
4285
  status: AuditStatusSchema2
4283
4286
  });
4284
- var AuditScheduleFrontmatterSchema2 = z33.object({
4285
- id: z33.string().min(1),
4286
- title: z33.string().min(1),
4287
- type: z33.literal("audit_schedule").optional(),
4288
- status: z33.string().optional(),
4289
- author: z33.string().optional(),
4290
- reviewers: z33.array(z33.string()).optional(),
4291
- approvers: z33.array(z33.string()).optional(),
4292
- cycle_year: z33.number().int().min(2e3).max(2100),
4293
- audits: z33.array(PlannedAuditEntrySchema2).min(1)
4294
- });
4295
- var AuditFindingSchema2 = z33.object({
4296
- finding_id: z33.string().min(1),
4287
+ var AuditScheduleFrontmatterSchema2 = z34.object({
4288
+ id: z34.string().min(1),
4289
+ title: z34.string().min(1),
4290
+ type: z34.literal("audit_schedule").optional(),
4291
+ status: z34.string().optional(),
4292
+ author: z34.string().optional(),
4293
+ reviewers: z34.array(z34.string()).optional(),
4294
+ approvers: z34.array(z34.string()).optional(),
4295
+ cycle_year: z34.number().int().min(2e3).max(2100),
4296
+ audits: z34.array(PlannedAuditEntrySchema2).min(1)
4297
+ });
4298
+ var AuditFindingSchema2 = z34.object({
4299
+ finding_id: z34.string().min(1),
4297
4300
  classification: AuditFindingClassificationSchema2,
4298
- description: z33.string().min(1),
4299
- capa_id: z33.string().optional()
4300
- });
4301
- var AuditReportFrontmatterSchema2 = z33.object({
4302
- id: z33.string().min(1),
4303
- title: z33.string().min(1),
4304
- type: z33.literal("audit_report").optional(),
4305
- status: z33.string().optional(),
4306
- author: z33.string().optional(),
4307
- reviewers: z33.array(z33.string()).optional(),
4308
- approvers: z33.array(z33.string()).optional(),
4309
- audit_date: z33.string().min(1),
4310
- audit_id: z33.string().optional(),
4311
- process_area: z33.string().min(1),
4312
- clause: z33.string().optional(),
4313
- auditor: z33.string().min(1),
4314
- findings: z33.array(AuditFindingSchema2),
4315
- findings_major: z33.number().int().min(0).optional(),
4316
- findings_minor: z33.number().int().min(0).optional(),
4317
- findings_observations: z33.number().int().min(0).optional()
4301
+ description: z34.string().min(1),
4302
+ capa_id: z34.string().optional()
4303
+ });
4304
+ var AuditReportFrontmatterSchema2 = z34.object({
4305
+ id: z34.string().min(1),
4306
+ title: z34.string().min(1),
4307
+ type: z34.literal("audit_report").optional(),
4308
+ status: z34.string().optional(),
4309
+ author: z34.string().optional(),
4310
+ reviewers: z34.array(z34.string()).optional(),
4311
+ approvers: z34.array(z34.string()).optional(),
4312
+ audit_date: z34.string().min(1),
4313
+ audit_id: z34.string().optional(),
4314
+ process_area: z34.string().min(1),
4315
+ clause: z34.string().optional(),
4316
+ auditor: z34.string().min(1),
4317
+ findings: z34.array(AuditFindingSchema2),
4318
+ findings_major: z34.number().int().min(0).optional(),
4319
+ findings_minor: z34.number().int().min(0).optional(),
4320
+ findings_observations: z34.number().int().min(0).optional()
4318
4321
  });
4319
4322
  var ClinicalEvaluationPlanFrontmatterSchema2 = z42.object({
4320
4323
  type: z42.literal("clinical_evaluation_plan"),
@@ -5431,6 +5434,7 @@ var ResourceTypeSchema2 = z312.enum([
5431
5434
  "component",
5432
5435
  "compiled_record_export"
5433
5436
  ]);
5437
+ var ExportSignatureModeSchema2 = z322.enum(["live", "frozen"]);
5434
5438
  var SCHEMA_MAP = {
5435
5439
  // Risk entries
5436
5440
  software_risk: RiskEntryFrontmatterSchema2,
package/dist/index.js CHANGED
@@ -998,6 +998,7 @@ import { z as z28 } from "zod";
998
998
  import { z as z29 } from "zod";
999
999
  import { z as z30 } from "zod";
1000
1000
  import { z as z31 } from "zod";
1001
+ import { z as z32 } from "zod";
1001
1002
  var REQUIRED_SECTIONS = {
1002
1003
  user_need: ["User Story", "Validation Criteria"],
1003
1004
  architecture: ["Purpose", "Architecture Overview", "Interfaces"],
@@ -3343,6 +3344,7 @@ var ResourceTypeSchema = z31.enum([
3343
3344
  "component",
3344
3345
  "compiled_record_export"
3345
3346
  ]);
3347
+ var ExportSignatureModeSchema = z32.enum(["live", "frozen"]);
3346
3348
 
3347
3349
  // src/impact/baseline-scan.ts
3348
3350
  function scanBaselineGaps(rootDir, baseBranch, config) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pactosigna/trace",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "type": "module",
5
5
  "description": "QMS traceability engine — gap detection, risk analysis, impact analysis (IEC 62304, ISO 14971)",
6
6
  "publishConfig": {
@@ -21,13 +21,6 @@
21
21
  "types": "./dist/index.d.ts"
22
22
  }
23
23
  },
24
- "scripts": {
25
- "build": "tsup && tsc -p tsconfig.build.json",
26
- "test": "vitest run",
27
- "test:coverage": "vitest run --coverage",
28
- "typecheck": "tsc --noEmit",
29
- "clean": "rm -rf dist"
30
- },
31
24
  "dependencies": {
32
25
  "gray-matter": "^4.0.3",
33
26
  "js-yaml": "^4.1.1",
@@ -35,14 +28,21 @@
35
28
  "zod": "^3.24.1"
36
29
  },
37
30
  "devDependencies": {
38
- "@pactosigna/domain": "workspace:*",
39
- "@pactosigna/schemas": "workspace:*",
40
31
  "@types/js-yaml": "^4.0.9",
41
32
  "@types/minimatch": "^6.0.0",
42
33
  "@vitest/coverage-v8": "^3.0.0",
43
34
  "tsup": "^8.0.0",
44
35
  "typescript": "^5.7.2",
45
- "vitest": "^3.0.0"
36
+ "vitest": "^3.0.0",
37
+ "@pactosigna/domain": "0.1.0",
38
+ "@pactosigna/schemas": "0.1.0"
46
39
  },
47
- "license": "MIT"
48
- }
40
+ "license": "MIT",
41
+ "scripts": {
42
+ "build": "tsup && tsc -p tsconfig.build.json",
43
+ "test": "vitest run",
44
+ "test:coverage": "vitest run --coverage",
45
+ "typecheck": "tsc --noEmit",
46
+ "clean": "rm -rf dist"
47
+ }
48
+ }