monora-ai 2.1.0 → 2.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +339 -158
- package/dist/aims_governance.d.ts +238 -0
- package/dist/aims_governance.d.ts.map +1 -0
- package/dist/aims_governance.js +922 -0
- package/dist/alerts.d.ts +16 -0
- package/dist/alerts.d.ts.map +1 -1
- package/dist/alerts.js +16 -0
- package/dist/api.d.ts +6 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +6 -0
- package/dist/assessment.d.ts +85 -0
- package/dist/assessment.d.ts.map +1 -1
- package/dist/assessment.js +525 -13
- package/dist/attribution.d.ts +44 -3
- package/dist/attribution.d.ts.map +1 -1
- package/dist/attribution.js +197 -10
- package/dist/autodetect.d.ts +68 -0
- package/dist/autodetect.d.ts.map +1 -1
- package/dist/autodetect.js +639 -0
- package/dist/bias.d.ts +130 -0
- package/dist/bias.d.ts.map +1 -0
- package/dist/bias.js +223 -0
- package/dist/cli/diagnostics.d.ts +5 -1
- package/dist/cli/diagnostics.d.ts.map +1 -1
- package/dist/cli/diagnostics.js +23 -6
- package/dist/cli/doctor.d.ts +25 -0
- package/dist/cli/doctor.d.ts.map +1 -0
- package/dist/cli/doctor.js +381 -0
- package/dist/cli/fix.d.ts +16 -0
- package/dist/cli/fix.d.ts.map +1 -0
- package/dist/cli/fix.js +284 -0
- package/dist/cli/init.d.ts +57 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +205 -0
- package/dist/cli.js +1564 -177
- package/dist/complianceConsolidation.d.ts +17 -0
- package/dist/complianceConsolidation.d.ts.map +1 -0
- package/dist/complianceConsolidation.js +68 -0
- package/dist/complianceTargets.d.ts +111 -0
- package/dist/complianceTargets.d.ts.map +1 -0
- package/dist/complianceTargets.js +521 -0
- package/dist/config.d.ts +261 -16
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +381 -32
- package/dist/config_migrations.d.ts.map +1 -1
- package/dist/config_migrations.js +38 -1
- package/dist/config_schema.d.ts +2490 -1035
- package/dist/config_schema.d.ts.map +1 -1
- package/dist/config_schema.js +233 -64
- package/dist/context.d.ts +34 -0
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +118 -7
- package/dist/control_backbone.d.ts +128 -0
- package/dist/control_backbone.d.ts.map +1 -0
- package/dist/control_backbone.js +826 -0
- package/dist/data-governance.d.ts +187 -0
- package/dist/data-governance.d.ts.map +1 -0
- package/dist/data-governance.js +424 -0
- package/dist/dataResidency.d.ts +44 -0
- package/dist/dataResidency.d.ts.map +1 -0
- package/dist/dataResidency.js +203 -0
- package/dist/dispatcher.d.ts.map +1 -1
- package/dist/dispatcher.js +17 -5
- package/dist/evidence_store.d.ts +103 -0
- package/dist/evidence_store.d.ts.map +1 -0
- package/dist/evidence_store.js +459 -0
- package/dist/executiveSummary.d.ts +15 -0
- package/dist/executiveSummary.d.ts.map +1 -1
- package/dist/executiveSummary.js +135 -22
- package/dist/identity.d.ts +143 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/impact-assessment.d.ts +350 -0
- package/dist/impact-assessment.d.ts.map +1 -0
- package/dist/impact-assessment.js +580 -0
- package/dist/index.d.ts +21 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +254 -5
- package/dist/instrumentation.d.ts +1 -1
- package/dist/instrumentation.d.ts.map +1 -1
- package/dist/instrumentation.js +123 -22
- package/dist/integrations/anthropic.d.ts +3 -0
- package/dist/integrations/anthropic.d.ts.map +1 -1
- package/dist/integrations/anthropic.js +282 -80
- package/dist/integrations/governance.d.ts +33 -0
- package/dist/integrations/governance.d.ts.map +1 -0
- package/dist/integrations/governance.js +208 -0
- package/dist/integrations/langchain.d.ts +4 -0
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +362 -142
- package/dist/integrations/openai.d.ts +9 -0
- package/dist/integrations/openai.d.ts.map +1 -1
- package/dist/integrations/openai.js +673 -73
- package/dist/iso42001_consolidation.d.ts +16 -0
- package/dist/iso42001_consolidation.d.ts.map +1 -0
- package/dist/iso42001_consolidation.js +413 -0
- package/dist/iso42001_workflows.d.ts +263 -0
- package/dist/iso42001_workflows.d.ts.map +1 -0
- package/dist/iso42001_workflows.js +781 -0
- package/dist/lifecycle.d.ts +299 -0
- package/dist/lifecycle.d.ts.map +1 -0
- package/dist/lifecycle.js +624 -0
- package/dist/lineage.d.ts +2 -2
- package/dist/lineage.d.ts.map +1 -1
- package/dist/lineage.js +9 -16
- package/dist/middleware/express.d.ts.map +1 -1
- package/dist/middleware/express.js +18 -3
- package/dist/middleware/nextjs.js +2 -2
- package/dist/model.d.ts +143 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +371 -0
- package/dist/onboarding.d.ts +42 -0
- package/dist/onboarding.d.ts.map +1 -0
- package/dist/onboarding.js +1075 -0
- package/dist/oversight.d.ts +264 -0
- package/dist/oversight.d.ts.map +1 -0
- package/dist/oversight.js +497 -0
- package/dist/presets.js +7 -7
- package/dist/quotas.d.ts +171 -0
- package/dist/quotas.d.ts.map +1 -0
- package/dist/quotas.js +259 -0
- package/dist/register.d.ts +13 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +99 -0
- package/dist/registry.d.ts +1 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +7 -0
- package/dist/registryData.json +43 -6
- package/dist/report.d.ts +2 -1
- package/dist/report.d.ts.map +1 -1
- package/dist/report.js +189 -2
- package/dist/reporting.d.ts +125 -0
- package/dist/reporting.d.ts.map +1 -1
- package/dist/reporting.js +192 -2
- package/dist/resources.d.ts +285 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +643 -0
- package/dist/risk.d.ts +120 -0
- package/dist/risk.d.ts.map +1 -0
- package/dist/risk.js +220 -0
- package/dist/runtime.d.ts +74 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +416 -18
- package/dist/schemaInference.d.ts +92 -0
- package/dist/schemaInference.d.ts.map +1 -0
- package/dist/schemaInference.js +466 -0
- package/dist/schema_validation.js +2 -2
- package/dist/schemas/config.schema.json +118 -4
- package/dist/security_report.js +4 -4
- package/dist/signing.d.ts +1 -1
- package/dist/signing.d.ts.map +1 -1
- package/dist/signing.js +4 -0
- package/dist/sinks/file.d.ts +19 -1
- package/dist/sinks/file.d.ts.map +1 -1
- package/dist/sinks/file.js +82 -13
- package/dist/sinks/https.d.ts +10 -0
- package/dist/sinks/https.d.ts.map +1 -1
- package/dist/sinks/https.js +76 -16
- package/dist/sinks/stdout.d.ts +1 -0
- package/dist/sinks/stdout.d.ts.map +1 -1
- package/dist/sinks/stdout.js +12 -1
- package/dist/spec.d.ts +159 -0
- package/dist/spec.d.ts.map +1 -0
- package/dist/spec.js +391 -0
- package/dist/stakeholders.d.ts +199 -0
- package/dist/stakeholders.d.ts.map +1 -0
- package/dist/stakeholders.js +398 -0
- package/dist/standards.d.ts.map +1 -1
- package/dist/standards.js +160 -2
- package/dist/standards_ingest.d.ts.map +1 -1
- package/dist/standards_ingest.js +1 -4
- package/dist/telemetry.d.ts +16 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +77 -14
- package/dist/templates/controls/gdpr_control_catalog.json +261 -0
- package/dist/templates/controls/iso42001_control_catalog.json +1443 -0
- package/dist/templates/controls/soc2_control_catalog.json +163 -0
- package/dist/templates/standards/iso42001_claims.json +72 -0
- package/dist/traced_emitter.d.ts.map +1 -1
- package/dist/traced_emitter.js +19 -9
- package/dist/trust_package.d.ts +20 -1
- package/dist/trust_package.d.ts.map +1 -1
- package/dist/trust_package.js +90 -2
- package/dist/verify.d.ts.map +1 -1
- package/dist/verify.js +9 -2
- package/dist/wal.d.ts.map +1 -1
- package/dist/wal.js +2 -1
- package/package.json +14 -1
- package/scripts/postinstall.js +105 -210
- package/templates/controls/gdpr_control_catalog.json +261 -0
- package/templates/controls/iso42001_control_catalog.json +1443 -0
- package/templates/controls/soc2_control_catalog.json +163 -0
- package/templates/standards/iso42001_claims.json +72 -0
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
{
|
|
2
|
+
"catalog_id": "soc2_gap_catalog_monora",
|
|
3
|
+
"standard": "SOC2",
|
|
4
|
+
"version": "0.1.0",
|
|
5
|
+
"generated_at": "2026-02-16T00:00:00+00:00",
|
|
6
|
+
"notes": "Default SOC 2 Trust Services Criteria control catalog for workflow coverage and gap prioritization.",
|
|
7
|
+
"controls": [
|
|
8
|
+
{
|
|
9
|
+
"control_id": "CC1",
|
|
10
|
+
"clause": "CC",
|
|
11
|
+
"title": "Control Environment",
|
|
12
|
+
"requirement": "Establish integrity and ethical values.",
|
|
13
|
+
"guidance": "Document governance and accountability structure.",
|
|
14
|
+
"evidence_types": ["governance_charter", "policy_document"],
|
|
15
|
+
"frequency": "annual",
|
|
16
|
+
"owner": "Compliance Lead",
|
|
17
|
+
"system": "governance",
|
|
18
|
+
"collection_method": "manual",
|
|
19
|
+
"status": "gap",
|
|
20
|
+
"priority": "high"
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"control_id": "CC2",
|
|
24
|
+
"clause": "CC",
|
|
25
|
+
"title": "Communication and Information",
|
|
26
|
+
"requirement": "Maintain internal/external communication for controls.",
|
|
27
|
+
"guidance": "Document control communication channels.",
|
|
28
|
+
"evidence_types": ["communication_plan", "review_minutes"],
|
|
29
|
+
"frequency": "quarterly",
|
|
30
|
+
"owner": "Compliance Lead",
|
|
31
|
+
"system": "governance",
|
|
32
|
+
"collection_method": "manual",
|
|
33
|
+
"status": "gap",
|
|
34
|
+
"priority": "medium"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"control_id": "CC3",
|
|
38
|
+
"clause": "CC",
|
|
39
|
+
"title": "Risk Assessment",
|
|
40
|
+
"requirement": "Identify and analyze risks.",
|
|
41
|
+
"guidance": "Maintain risk register and periodic reviews.",
|
|
42
|
+
"evidence_types": ["risk_register", "risk_review_minutes"],
|
|
43
|
+
"frequency": "quarterly",
|
|
44
|
+
"owner": "Risk Lead",
|
|
45
|
+
"system": "risk_management",
|
|
46
|
+
"collection_method": "hybrid",
|
|
47
|
+
"status": "gap",
|
|
48
|
+
"priority": "high"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"control_id": "CC4",
|
|
52
|
+
"clause": "CC",
|
|
53
|
+
"title": "Monitoring Activities",
|
|
54
|
+
"requirement": "Monitor controls and remediate deficiencies.",
|
|
55
|
+
"guidance": "Track monitoring outcomes and corrective actions.",
|
|
56
|
+
"evidence_types": ["monitoring_report", "corrective_action_log"],
|
|
57
|
+
"frequency": "monthly",
|
|
58
|
+
"owner": "Internal Audit Lead",
|
|
59
|
+
"system": "monitoring",
|
|
60
|
+
"collection_method": "hybrid",
|
|
61
|
+
"status": "gap",
|
|
62
|
+
"priority": "high"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"control_id": "CC5",
|
|
66
|
+
"clause": "CC",
|
|
67
|
+
"title": "Control Activities",
|
|
68
|
+
"requirement": "Implement and enforce control procedures.",
|
|
69
|
+
"guidance": "Enforce policies and document exceptions.",
|
|
70
|
+
"evidence_types": ["policy_configuration", "exception_log"],
|
|
71
|
+
"frequency": "monthly",
|
|
72
|
+
"owner": "Security Lead",
|
|
73
|
+
"system": "policy_enforcement",
|
|
74
|
+
"collection_method": "hybrid",
|
|
75
|
+
"status": "gap",
|
|
76
|
+
"priority": "high"
|
|
77
|
+
},
|
|
78
|
+
{
|
|
79
|
+
"control_id": "CC6",
|
|
80
|
+
"clause": "CC",
|
|
81
|
+
"title": "Logical and Physical Access Controls",
|
|
82
|
+
"requirement": "Restrict system access to authorized users.",
|
|
83
|
+
"guidance": "Track identity controls and least-privilege access.",
|
|
84
|
+
"evidence_types": ["identity_and_mfa_report", "access_review"],
|
|
85
|
+
"frequency": "monthly",
|
|
86
|
+
"owner": "Security Lead",
|
|
87
|
+
"system": "access_control",
|
|
88
|
+
"collection_method": "hybrid",
|
|
89
|
+
"status": "gap",
|
|
90
|
+
"priority": "critical"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"control_id": "CC7",
|
|
94
|
+
"clause": "CC",
|
|
95
|
+
"title": "System Operations",
|
|
96
|
+
"requirement": "Detect and respond to operational anomalies.",
|
|
97
|
+
"guidance": "Track runtime integrity and incident response.",
|
|
98
|
+
"evidence_types": ["runtime_observability_report", "incident_response_record"],
|
|
99
|
+
"frequency": "monthly",
|
|
100
|
+
"owner": "Operations Lead",
|
|
101
|
+
"system": "operations",
|
|
102
|
+
"collection_method": "hybrid",
|
|
103
|
+
"status": "gap",
|
|
104
|
+
"priority": "high"
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
"control_id": "CC8",
|
|
108
|
+
"clause": "CC",
|
|
109
|
+
"title": "Change Management",
|
|
110
|
+
"requirement": "Manage changes through controlled workflow.",
|
|
111
|
+
"guidance": "Document approvals and deployment controls.",
|
|
112
|
+
"evidence_types": ["change_approval_record", "deployment_approval_records"],
|
|
113
|
+
"frequency": "monthly",
|
|
114
|
+
"owner": "Engineering Lead",
|
|
115
|
+
"system": "change_management",
|
|
116
|
+
"collection_method": "manual",
|
|
117
|
+
"status": "gap",
|
|
118
|
+
"priority": "medium"
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"control_id": "CC9",
|
|
122
|
+
"clause": "CC",
|
|
123
|
+
"title": "Risk Mitigation",
|
|
124
|
+
"requirement": "Mitigate identified risks with documented actions.",
|
|
125
|
+
"guidance": "Track mitigation plans and completion.",
|
|
126
|
+
"evidence_types": ["risk_register", "mitigation_plan"],
|
|
127
|
+
"frequency": "quarterly",
|
|
128
|
+
"owner": "Risk Lead",
|
|
129
|
+
"system": "risk_management",
|
|
130
|
+
"collection_method": "hybrid",
|
|
131
|
+
"status": "gap",
|
|
132
|
+
"priority": "high"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"control_id": "P_SERIES",
|
|
136
|
+
"clause": "P",
|
|
137
|
+
"title": "Privacy",
|
|
138
|
+
"requirement": "Operate in accordance with privacy commitments.",
|
|
139
|
+
"guidance": "Document notices, consent, and subject rights handling.",
|
|
140
|
+
"evidence_types": ["privacy_notice", "data_subject_request_log"],
|
|
141
|
+
"frequency": "quarterly",
|
|
142
|
+
"owner": "Privacy Officer",
|
|
143
|
+
"system": "privacy_program",
|
|
144
|
+
"collection_method": "manual",
|
|
145
|
+
"status": "gap",
|
|
146
|
+
"priority": "high"
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
"control_id": "PI_SERIES",
|
|
150
|
+
"clause": "PI",
|
|
151
|
+
"title": "Processing Integrity",
|
|
152
|
+
"requirement": "Ensure complete, valid, and accurate processing.",
|
|
153
|
+
"guidance": "Track processing controls and integrity validation.",
|
|
154
|
+
"evidence_types": ["processing_integrity_report", "integrity_validation_log"],
|
|
155
|
+
"frequency": "monthly",
|
|
156
|
+
"owner": "Operations Lead",
|
|
157
|
+
"system": "processing_integrity",
|
|
158
|
+
"collection_method": "hybrid",
|
|
159
|
+
"status": "gap",
|
|
160
|
+
"priority": "high"
|
|
161
|
+
}
|
|
162
|
+
]
|
|
163
|
+
}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
{
|
|
2
|
+
"report": {
|
|
3
|
+
"standard": "ISO42001",
|
|
4
|
+
"title": "ISO/IEC 42001 AIMS Claims Report",
|
|
5
|
+
"version": "2026-01",
|
|
6
|
+
"source": "Customer-provided report"
|
|
7
|
+
},
|
|
8
|
+
"excerpts": [],
|
|
9
|
+
"claims": [
|
|
10
|
+
{
|
|
11
|
+
"id": "ISO42001-A5",
|
|
12
|
+
"standard": "ISO42001",
|
|
13
|
+
"section": "A.5",
|
|
14
|
+
"statement": "AI risk and impact assessment workflows are enabled.",
|
|
15
|
+
"requires_excerpts": true,
|
|
16
|
+
"evidence_excerpts": [],
|
|
17
|
+
"checks": [
|
|
18
|
+
{ "type": "config_required", "path": "risk_register.enabled", "equals": true },
|
|
19
|
+
{ "type": "config_required", "path": "bias.enabled", "equals": true }
|
|
20
|
+
]
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"id": "ISO42001-A6",
|
|
24
|
+
"standard": "ISO42001",
|
|
25
|
+
"section": "A.6",
|
|
26
|
+
"statement": "Lifecycle and operational controls are tracked with immutable evidence.",
|
|
27
|
+
"requires_excerpts": true,
|
|
28
|
+
"evidence_excerpts": [],
|
|
29
|
+
"checks": [
|
|
30
|
+
{ "type": "config_required", "path": "lifecycle.enabled", "equals": true },
|
|
31
|
+
{ "type": "hash_chain_status", "status": "verified" },
|
|
32
|
+
{ "type": "sequence_gaps_max", "max": 0 }
|
|
33
|
+
]
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
"id": "ISO42001-A7",
|
|
37
|
+
"standard": "ISO42001",
|
|
38
|
+
"section": "A.7",
|
|
39
|
+
"statement": "Data governance controls are enabled for AI system data.",
|
|
40
|
+
"requires_excerpts": true,
|
|
41
|
+
"evidence_excerpts": [],
|
|
42
|
+
"checks": [
|
|
43
|
+
{ "type": "config_required", "path": "data_governance.enabled", "equals": true },
|
|
44
|
+
{ "type": "config_required", "path": "data_handling.enabled", "equals": true }
|
|
45
|
+
]
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"id": "ISO42001-A8",
|
|
49
|
+
"standard": "ISO42001",
|
|
50
|
+
"section": "A.8",
|
|
51
|
+
"statement": "Human oversight and policy governance are documented.",
|
|
52
|
+
"requires_excerpts": true,
|
|
53
|
+
"evidence_excerpts": [],
|
|
54
|
+
"checks": [
|
|
55
|
+
{ "type": "config_required", "path": "human_oversight.enabled", "equals": true },
|
|
56
|
+
{ "type": "config_required", "path": "policies.enforce", "equals": true }
|
|
57
|
+
]
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
"id": "ISO42001-AIMS-INTEGRITY",
|
|
61
|
+
"standard": "ISO42001",
|
|
62
|
+
"section": "Clause 9/10",
|
|
63
|
+
"statement": "Governance evidence supports verifiable integrity for audit reporting.",
|
|
64
|
+
"requires_excerpts": true,
|
|
65
|
+
"evidence_excerpts": [],
|
|
66
|
+
"checks": [
|
|
67
|
+
{ "type": "signatures_status", "status": "verified" },
|
|
68
|
+
{ "type": "errors_max", "max": 0 }
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"traced_emitter.d.ts","sourceRoot":"","sources":["../src/traced_emitter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,gBAAgB,CAAuE;IAC/F,OAAO,CAAC,gBAAgB,CAAuD;IAE/E,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWpE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI7E;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAatE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWrE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAIhF;;OAEG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWjD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWjF;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;CAWtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"traced_emitter.d.ts","sourceRoot":"","sources":["../src/traced_emitter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAQtC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,kBAAmB,SAAQ,YAAY;IAClD,OAAO,CAAC,gBAAgB,CAAuE;IAC/F,OAAO,CAAC,gBAAgB,CAAuD;IAE/E,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,eAAe;IAiBvB;;OAEG;IACH,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWpE;;OAEG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAI7E;;OAEG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAatE;;OAEG;IACH,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWrE;;OAEG;IACH,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAIhF;;OAEG;IACH,kBAAkB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAWjD;;OAEG;IACH,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;IAWjF;;OAEG;IACH,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,GAAG,IAAI;CAWtF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,SAAS,YAAY,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,CAuJ5E"}
|
package/dist/traced_emitter.js
CHANGED
|
@@ -187,10 +187,8 @@ exports.TracedEventEmitter = TracedEventEmitter;
|
|
|
187
187
|
*/
|
|
188
188
|
function wrapEmitterWithContext(emitter) {
|
|
189
189
|
const originalOn = emitter.on.bind(emitter);
|
|
190
|
-
const originalOnce = emitter.once.bind(emitter);
|
|
191
190
|
const originalAddListener = emitter.addListener.bind(emitter);
|
|
192
191
|
const originalPrependListener = emitter.prependListener.bind(emitter);
|
|
193
|
-
const originalPrependOnceListener = emitter.prependOnceListener.bind(emitter);
|
|
194
192
|
const originalRemoveListener = emitter.removeListener.bind(emitter);
|
|
195
193
|
const originalOff = emitter.off ? emitter.off.bind(emitter) : undefined;
|
|
196
194
|
const originalRemoveAllListeners = emitter.removeAllListeners.bind(emitter);
|
|
@@ -223,6 +221,12 @@ function wrapEmitterWithContext(emitter) {
|
|
|
223
221
|
return bound(...args);
|
|
224
222
|
}
|
|
225
223
|
finally {
|
|
224
|
+
if (originalOff) {
|
|
225
|
+
originalOff(event, wrapped);
|
|
226
|
+
}
|
|
227
|
+
else {
|
|
228
|
+
originalRemoveListener(event, wrapped);
|
|
229
|
+
}
|
|
226
230
|
untrackListener(event, listener);
|
|
227
231
|
}
|
|
228
232
|
};
|
|
@@ -239,13 +243,13 @@ function wrapEmitterWithContext(emitter) {
|
|
|
239
243
|
return originalAddListener(event, bindListener(event, listener, false));
|
|
240
244
|
};
|
|
241
245
|
emitter.once = function (event, listener) {
|
|
242
|
-
return
|
|
246
|
+
return originalOn(event, bindListener(event, listener, true));
|
|
243
247
|
};
|
|
244
248
|
emitter.prependListener = function (event, listener) {
|
|
245
249
|
return originalPrependListener(event, bindListener(event, listener, false));
|
|
246
250
|
};
|
|
247
251
|
emitter.prependOnceListener = function (event, listener) {
|
|
248
|
-
return
|
|
252
|
+
return originalPrependListener(event, bindListener(event, listener, true));
|
|
249
253
|
};
|
|
250
254
|
emitter.removeListener = function (event, listener) {
|
|
251
255
|
const bound = boundListeners.get(listener);
|
|
@@ -258,12 +262,18 @@ function wrapEmitterWithContext(emitter) {
|
|
|
258
262
|
};
|
|
259
263
|
emitter.off = function (event, listener) {
|
|
260
264
|
const bound = boundListeners.get(listener);
|
|
261
|
-
const
|
|
262
|
-
|
|
263
|
-
|
|
265
|
+
const targets = new Set();
|
|
266
|
+
targets.add(listener);
|
|
267
|
+
if (bound) {
|
|
268
|
+
targets.add(bound);
|
|
264
269
|
}
|
|
265
|
-
|
|
266
|
-
|
|
270
|
+
for (const target of targets) {
|
|
271
|
+
if (originalOff) {
|
|
272
|
+
originalOff(event, target);
|
|
273
|
+
}
|
|
274
|
+
else {
|
|
275
|
+
originalRemoveListener(event, target);
|
|
276
|
+
}
|
|
267
277
|
}
|
|
268
278
|
if (bound) {
|
|
269
279
|
untrackListener(event, listener);
|
package/dist/trust_package.d.ts
CHANGED
|
@@ -10,12 +10,31 @@ export interface TrustPackage {
|
|
|
10
10
|
hash_chain_proof: Record<string, any>;
|
|
11
11
|
config_snapshot: Record<string, any>;
|
|
12
12
|
export_manifest: Record<string, any>;
|
|
13
|
+
evidence_manifest?: Record<string, any>;
|
|
14
|
+
control_coverage?: Record<string, any>;
|
|
13
15
|
audit_metadata?: Record<string, any>;
|
|
14
16
|
project_registration?: Record<string, any>;
|
|
15
17
|
gpg_signature: string | null;
|
|
16
18
|
gpg_signature_metadata?: Record<string, any>;
|
|
17
19
|
}
|
|
18
|
-
export
|
|
20
|
+
export interface TrustPackageBuildOptions {
|
|
21
|
+
evidenceManifest?: Record<string, any>;
|
|
22
|
+
evidenceManifestPath?: string;
|
|
23
|
+
evidenceManifestAuto?: boolean;
|
|
24
|
+
evidenceManifestStandard?: string;
|
|
25
|
+
evidenceManifestIncludeLineage?: boolean;
|
|
26
|
+
evidenceManifestIncludeHashChain?: boolean;
|
|
27
|
+
evidenceManifestIncludeWorkflowState?: boolean;
|
|
28
|
+
evidenceManifestIncludeAimsState?: boolean;
|
|
29
|
+
controlCatalog?: Record<string, any>;
|
|
30
|
+
controlCatalogPath?: string;
|
|
31
|
+
controlCatalogStandard?: string;
|
|
32
|
+
controlWorkflowState?: Record<string, any>;
|
|
33
|
+
controlWorkflowStatePath?: string;
|
|
34
|
+
controlCoverageTarget?: number;
|
|
35
|
+
controlCoveragePath?: string;
|
|
36
|
+
}
|
|
37
|
+
export declare function buildTrustPackage(traceId: string, events: Array<Record<string, any>>, config: MonoraConfig, options?: TrustPackageBuildOptions): TrustPackage;
|
|
19
38
|
export declare function applyGpgSignature(trustPackage: TrustPackage, options?: {
|
|
20
39
|
gpgKey?: string;
|
|
21
40
|
gpgHome?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"trust_package.d.ts","sourceRoot":"","sources":["../src/trust_package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"trust_package.d.ts","sourceRoot":"","sources":["../src/trust_package.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAQxC,MAAM,WAAW,YAAY;IAC3B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACtC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACxC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,sBAAsB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9C;AAED,MAAM,WAAW,wBAAwB;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,oCAAoC,CAAC,EAAE,OAAO,CAAC;IAC/C,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,oBAAoB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC3C,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,MAAM,EAAE,YAAY,EACpB,OAAO,CAAC,EAAE,wBAAwB,GACjC,YAAY,CA4Fd;AAED,wBAAgB,iBAAiB,CAC/B,YAAY,EAAE,YAAY,EAC1B,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9C,YAAY,CAQd;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAOtF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAS5B"}
|
package/dist/trust_package.js
CHANGED
|
@@ -44,13 +44,15 @@ const fs = __importStar(require("fs"));
|
|
|
44
44
|
const path = __importStar(require("path"));
|
|
45
45
|
const attestation_1 = require("./attestation");
|
|
46
46
|
const attribution_1 = require("./attribution");
|
|
47
|
+
const control_backbone_1 = require("./control_backbone");
|
|
48
|
+
const evidence_store_1 = require("./evidence_store");
|
|
47
49
|
const report_1 = require("./report");
|
|
48
50
|
const security_report_1 = require("./security_report");
|
|
49
51
|
const verify_1 = require("./verify");
|
|
50
52
|
const reporting_1 = require("./reporting");
|
|
51
|
-
function buildTrustPackage(traceId, events, config) {
|
|
53
|
+
function buildTrustPackage(traceId, events, config, options) {
|
|
52
54
|
const traceEvents = filterTraceEvents(events, traceId);
|
|
53
|
-
const complianceReport = (0, report_1.buildReport)(traceEvents, config.policies || {});
|
|
55
|
+
const complianceReport = (0, report_1.buildReport)(traceEvents, config.policies || {}, config.registry);
|
|
54
56
|
const configSnapshot = (0, security_report_1.buildConfigSnapshot)(config || {});
|
|
55
57
|
const hashChainProof = buildHashChainProof(traceEvents, config || {}, traceId);
|
|
56
58
|
const exportManifest = buildExportManifest(traceEvents, config || {}, traceId);
|
|
@@ -72,6 +74,62 @@ function buildTrustPackage(traceId, events, config) {
|
|
|
72
74
|
if (registration) {
|
|
73
75
|
trustPackage.project_registration = { ...registration };
|
|
74
76
|
}
|
|
77
|
+
let evidenceManifest = loadEvidenceManifest(options);
|
|
78
|
+
if (!evidenceManifest && options?.evidenceManifestAuto) {
|
|
79
|
+
evidenceManifest = (0, evidence_store_1.buildRuntimeEvidenceManifest)({
|
|
80
|
+
standard: options.evidenceManifestStandard || 'ISO42001',
|
|
81
|
+
includeLineage: options.evidenceManifestIncludeLineage !== false,
|
|
82
|
+
includeHashChain: options.evidenceManifestIncludeHashChain !== false,
|
|
83
|
+
includeControlWorkflowState: options.evidenceManifestIncludeWorkflowState !== false,
|
|
84
|
+
includeAimsGovernanceState: options.evidenceManifestIncludeAimsState !== false,
|
|
85
|
+
controlCatalog: options.controlCatalog || null,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
const workflowState = loadWorkflowState(options);
|
|
89
|
+
const shouldGenerateCoverage = Boolean(options?.controlCatalog) ||
|
|
90
|
+
Boolean(options?.controlCatalogPath) ||
|
|
91
|
+
Boolean(workflowState) ||
|
|
92
|
+
Boolean(evidenceManifest) ||
|
|
93
|
+
Boolean(options?.controlCoveragePath);
|
|
94
|
+
if (shouldGenerateCoverage) {
|
|
95
|
+
let catalog = options?.controlCatalog || null;
|
|
96
|
+
if (!catalog && options?.controlCatalogPath) {
|
|
97
|
+
try {
|
|
98
|
+
catalog = JSON.parse(fs.readFileSync(options.controlCatalogPath, 'utf-8'));
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
catalog = null;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
if (!catalog) {
|
|
105
|
+
try {
|
|
106
|
+
catalog = (0, control_backbone_1.loadDefaultControlCatalog)(options?.controlCatalogStandard || 'ISO42001');
|
|
107
|
+
}
|
|
108
|
+
catch (_err) {
|
|
109
|
+
catalog = null;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
if (catalog) {
|
|
113
|
+
const coverage = (0, control_backbone_1.generateControlCoverageReport)({
|
|
114
|
+
catalog,
|
|
115
|
+
evidenceItems: evidenceManifest?.evidence_items
|
|
116
|
+
|| workflowState?.evidence_items,
|
|
117
|
+
workflows: workflowState?.workflows,
|
|
118
|
+
targetCoverage: typeof options?.controlCoverageTarget === 'number'
|
|
119
|
+
? options.controlCoverageTarget
|
|
120
|
+
: 0.9,
|
|
121
|
+
standard: options?.controlCatalogStandard,
|
|
122
|
+
});
|
|
123
|
+
trustPackage.control_coverage = coverage;
|
|
124
|
+
if (options?.controlCoveragePath) {
|
|
125
|
+
fs.mkdirSync(path.dirname(options.controlCoveragePath), { recursive: true });
|
|
126
|
+
fs.writeFileSync(options.controlCoveragePath, JSON.stringify(coverage, null, 2), 'utf-8');
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
if (evidenceManifest) {
|
|
131
|
+
trustPackage.evidence_manifest = evidenceManifest;
|
|
132
|
+
}
|
|
75
133
|
return trustPackage;
|
|
76
134
|
}
|
|
77
135
|
function applyGpgSignature(trustPackage, options) {
|
|
@@ -166,3 +224,33 @@ function attachSignature(trustPackage, signature) {
|
|
|
166
224
|
},
|
|
167
225
|
};
|
|
168
226
|
}
|
|
227
|
+
function loadEvidenceManifest(options) {
|
|
228
|
+
if (options?.evidenceManifest && typeof options.evidenceManifest === 'object') {
|
|
229
|
+
return options.evidenceManifest;
|
|
230
|
+
}
|
|
231
|
+
if (options?.evidenceManifestPath) {
|
|
232
|
+
try {
|
|
233
|
+
return JSON.parse(fs.readFileSync(options.evidenceManifestPath, 'utf-8'));
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
237
|
+
throw new Error(`loadEvidenceManifest failed to parse ${options.evidenceManifestPath}: ${message}`);
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return null;
|
|
241
|
+
}
|
|
242
|
+
function loadWorkflowState(options) {
|
|
243
|
+
if (options?.controlWorkflowState && typeof options.controlWorkflowState === 'object') {
|
|
244
|
+
return options.controlWorkflowState;
|
|
245
|
+
}
|
|
246
|
+
if (options?.controlWorkflowStatePath) {
|
|
247
|
+
try {
|
|
248
|
+
return JSON.parse(fs.readFileSync(options.controlWorkflowStatePath, 'utf-8'));
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
252
|
+
throw new Error(`loadWorkflowState failed to parse ${options.controlWorkflowStatePath}: ${message}`);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return null;
|
|
256
|
+
}
|
package/dist/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CA2DnE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CA4C1B;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAgB1B;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CA+C5B;AA0BD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkD5B;AAgBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../src/verify.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAID,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CA2DnE;AAED,wBAAgB,WAAW,CACzB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CA4C1B;AAED,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,EAClC,OAAO,EAAE,MAAM,GACd,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC,CAgB1B;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CA+C5B;AA0BD,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAkD5B;AAgBD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,mBAAmB,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC3C,mBAAmB,EAAE,MAAM,EAAE,CAAC;IAC9B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GACjC,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,CAAC,CA6BtC;AAED;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,MAAM,CAO9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,CAEhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAkC1D"}
|
package/dist/verify.js
CHANGED
|
@@ -288,8 +288,15 @@ function verifyChainWithProof(events) {
|
|
|
288
288
|
};
|
|
289
289
|
// Always compute Merkle root for chains with > 1 event
|
|
290
290
|
if (events.length > 1) {
|
|
291
|
-
const hashes = events
|
|
292
|
-
|
|
291
|
+
const hashes = events
|
|
292
|
+
.map((event) => event.event_hash)
|
|
293
|
+
.filter((hash) => typeof hash === 'string' && hash.length > 0);
|
|
294
|
+
if (hashes.length !== events.length) {
|
|
295
|
+
throw new ChainVerificationError('Missing event_hash values; cannot compute Merkle root.');
|
|
296
|
+
}
|
|
297
|
+
if (hashes.length > 1) {
|
|
298
|
+
proofData.merkle_root = computeMerkleRoot(hashes);
|
|
299
|
+
}
|
|
293
300
|
}
|
|
294
301
|
return [isValid, error, proofData];
|
|
295
302
|
}
|
package/dist/wal.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"wal.d.ts","sourceRoot":"","sources":["../src/wal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAK;gBAEhB,MAAM,GAAE,SAAc;IAgBlC,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,kBAAkB;
|
|
1
|
+
{"version":3,"file":"wal.d.ts","sourceRoot":"","sources":["../src/wal.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B;AAED,MAAM,WAAW,SAAS;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;IACvC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,EAAE,CAAuB;IACjC,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,eAAe,CAAK;gBAEhB,MAAM,GAAE,SAAc;IAgBlC,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,kBAAkB;IAa1B,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,iBAAiB;IAyBzB;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM;IAgBzC;;;;OAIG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAazB,OAAO,CAAC,WAAW;IAcnB;;;;OAIG;IACH,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IA4BrC,OAAO,CAAE,cAAc;IAgCvB;;;;OAIG;IACH,eAAe,IAAI,MAAM;IA4CzB;;OAEG;IACH,KAAK,IAAI,IAAI;IAOb,OAAO,CAAC,qBAAqB;CAkC9B;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAAE,GAAG,CAAC,EAAE,SAAS,CAAA;CAAE,GAAG,aAAa,CAE9E"}
|
package/dist/wal.js
CHANGED
|
@@ -96,7 +96,8 @@ class WriteAheadLog {
|
|
|
96
96
|
if (this.currentFilePath === null) {
|
|
97
97
|
const timestamp = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
98
98
|
const serviceName = process.env.MONORA_SERVICE_NAME || 'monora';
|
|
99
|
-
|
|
99
|
+
const uniqueSuffix = `${process.pid}_${process.hrtime.bigint().toString()}`;
|
|
100
|
+
this.currentFilePath = path.join(this.config.path, `${serviceName}_${timestamp}_${uniqueSuffix}.wal`);
|
|
100
101
|
}
|
|
101
102
|
return this.currentFilePath;
|
|
102
103
|
}
|
package/package.json
CHANGED
|
@@ -1,9 +1,21 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "monora-ai",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.4",
|
|
4
4
|
"description": "Lightweight governance and trace SDK for AI systems",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"import": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./register": {
|
|
14
|
+
"types": "./dist/register.d.ts",
|
|
15
|
+
"require": "./dist/register.js",
|
|
16
|
+
"import": "./dist/register.js"
|
|
17
|
+
}
|
|
18
|
+
},
|
|
7
19
|
"bin": {
|
|
8
20
|
"monora": "dist/cli.js"
|
|
9
21
|
},
|
|
@@ -54,6 +66,7 @@
|
|
|
54
66
|
"ajv": "^8.12.0",
|
|
55
67
|
"axios": "^1.7.9",
|
|
56
68
|
"js-yaml": "^4.1.1",
|
|
69
|
+
"minimatch": "^9.0.0",
|
|
57
70
|
"zod": "^3.23.0"
|
|
58
71
|
}
|
|
59
72
|
}
|