monora-ai 2.0.0 → 2.1.3
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 +441 -150
- 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 +269 -0
- package/dist/assessment.d.ts.map +1 -0
- package/dist/assessment.js +1232 -0
- package/dist/attestation.js +23 -1
- package/dist/attribution.d.ts +349 -0
- package/dist/attribution.d.ts.map +1 -0
- package/dist/attribution.js +987 -0
- package/dist/autodetect.d.ts +69 -1
- package/dist/autodetect.d.ts.map +1 -1
- package/dist/autodetect.js +644 -1
- package/dist/bias.d.ts +130 -0
- package/dist/bias.d.ts.map +1 -0
- package/dist/bias.js +223 -0
- package/dist/circuit_breaker.js +3 -3
- package/dist/cli/diagnostics.d.ts +5 -1
- package/dist/cli/diagnostics.d.ts.map +1 -1
- package/dist/cli/diagnostics.js +31 -8
- 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 +1611 -126
- 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 +301 -17
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +428 -36
- package/dist/config_migrations.d.ts +41 -0
- package/dist/config_migrations.d.ts.map +1 -1
- package/dist/config_migrations.js +205 -0
- package/dist/config_schema.d.ts +2900 -731
- package/dist/config_schema.d.ts.map +1 -1
- package/dist/config_schema.js +257 -55
- 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 +122 -0
- package/dist/control_backbone.d.ts.map +1 -0
- package/dist/control_backbone.js +698 -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 +32 -0
- package/dist/dispatcher.d.ts.map +1 -1
- package/dist/dispatcher.js +91 -4
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +38 -0
- 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 +65 -8
- package/dist/executiveSummary.d.ts.map +1 -1
- package/dist/executiveSummary.js +289 -26
- 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 +25 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +300 -4
- package/dist/instrumentation.d.ts +1 -1
- package/dist/instrumentation.d.ts.map +1 -1
- package/dist/instrumentation.js +243 -27
- package/dist/integrations/anthropic.d.ts +3 -0
- package/dist/integrations/anthropic.d.ts.map +1 -1
- package/dist/integrations/anthropic.js +284 -79
- 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 +7 -0
- package/dist/integrations/langchain.d.ts.map +1 -1
- package/dist/integrations/langchain.js +387 -143
- 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 +12 -17
- package/dist/middleware/express.d.ts.map +1 -1
- package/dist/middleware/express.js +33 -3
- package/dist/middleware/nextjs.d.ts.map +1 -1
- package/dist/middleware/nextjs.js +42 -68
- 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 +1022 -0
- package/dist/oversight.d.ts +264 -0
- package/dist/oversight.d.ts.map +1 -0
- package/dist/oversight.js +497 -0
- package/dist/pdf_report.d.ts.map +1 -1
- package/dist/pdf_report.js +42 -21
- package/dist/presets.d.ts +88 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +520 -0
- package/dist/propagation.d.ts.map +1 -1
- package/dist/propagation.js +34 -2
- 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 +196 -5
- 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 -1
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +598 -22
- 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 +169 -6
- package/dist/schemas/event.schema.json +4 -0
- 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 +2 -2
- package/dist/standards_ingest.d.ts.map +1 -1
- package/dist/standards_ingest.js +105 -23
- package/dist/streaming.d.ts.map +1 -1
- package/dist/streaming.js +7 -2
- package/dist/telemetry.d.ts +16 -2
- package/dist/telemetry.d.ts.map +1 -1
- package/dist/telemetry.js +79 -14
- package/dist/templates/controls/iso42001_control_catalog.json +1443 -0
- package/dist/traced_emitter.d.ts +3 -0
- package/dist/traced_emitter.d.ts.map +1 -1
- package/dist/traced_emitter.js +142 -25
- package/dist/trust_package.d.ts +21 -1
- package/dist/trust_package.d.ts.map +1 -1
- package/dist/trust_package.js +101 -4
- 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 +119 -97
- package/templates/controls/iso42001_control_catalog.json +1443 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enterprise compliance presets and environment-aware configuration.
|
|
3
|
+
*
|
|
4
|
+
* This module provides pre-configured settings for different deployment
|
|
5
|
+
* scenarios and compliance requirements.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```typescript
|
|
9
|
+
* import { init, getPreset, PRESETS } from 'monora-ai';
|
|
10
|
+
*
|
|
11
|
+
* // Use a preset
|
|
12
|
+
* init({ preset: 'strict_enterprise' });
|
|
13
|
+
*
|
|
14
|
+
* // Or get preset config directly
|
|
15
|
+
* const config = getPreset('default_secure');
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { MonoraConfig } from './config';
|
|
19
|
+
/**
|
|
20
|
+
* Configuration preset definition.
|
|
21
|
+
*/
|
|
22
|
+
export interface PresetConfig {
|
|
23
|
+
/** Preset name */
|
|
24
|
+
name: string;
|
|
25
|
+
/** Description of the preset */
|
|
26
|
+
description: string;
|
|
27
|
+
/** Target environment */
|
|
28
|
+
environment: 'development' | 'poc' | 'staging' | 'production';
|
|
29
|
+
/** Configuration object */
|
|
30
|
+
config: Partial<MonoraConfig>;
|
|
31
|
+
/** Whether this preset is compliance-ready */
|
|
32
|
+
complianceReady?: boolean;
|
|
33
|
+
/** Applicable compliance frameworks */
|
|
34
|
+
frameworks?: string[];
|
|
35
|
+
}
|
|
36
|
+
export declare const DEVELOPMENT: PresetConfig;
|
|
37
|
+
export declare const POC: PresetConfig;
|
|
38
|
+
export declare const STAGING: PresetConfig;
|
|
39
|
+
export declare const PRODUCTION: PresetConfig;
|
|
40
|
+
export declare const STRICT_ENTERPRISE: PresetConfig;
|
|
41
|
+
export declare const DEFAULT_SECURE: PresetConfig;
|
|
42
|
+
export declare const EXPERIMENTAL: PresetConfig;
|
|
43
|
+
export declare const AUDIT_FIRST: PresetConfig;
|
|
44
|
+
export declare const LOW_LATENCY: PresetConfig;
|
|
45
|
+
export declare const PRESETS: Record<string, PresetConfig>;
|
|
46
|
+
/**
|
|
47
|
+
* Get a preset configuration by name.
|
|
48
|
+
*
|
|
49
|
+
* @param name - Preset name (e.g., "strict_enterprise", "development").
|
|
50
|
+
* @returns PresetConfig object.
|
|
51
|
+
* @throws Error if preset name is not recognized.
|
|
52
|
+
*
|
|
53
|
+
* @example
|
|
54
|
+
* ```typescript
|
|
55
|
+
* const config = getPreset('strict_enterprise');
|
|
56
|
+
* console.log(config.description);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
export declare function getPreset(name: string): PresetConfig;
|
|
60
|
+
/**
|
|
61
|
+
* List all available preset names.
|
|
62
|
+
*
|
|
63
|
+
* @returns Array of unique preset names.
|
|
64
|
+
*/
|
|
65
|
+
export declare function listPresets(): string[];
|
|
66
|
+
/**
|
|
67
|
+
* Get preset configuration dictionary.
|
|
68
|
+
*
|
|
69
|
+
* @param name - Preset name.
|
|
70
|
+
* @returns Configuration object.
|
|
71
|
+
*/
|
|
72
|
+
export declare function getPresetConfig(name: string): Partial<MonoraConfig>;
|
|
73
|
+
/**
|
|
74
|
+
* Merge preset config with custom overrides.
|
|
75
|
+
*
|
|
76
|
+
* @param presetName - Base preset name.
|
|
77
|
+
* @param overrides - Custom configuration to merge.
|
|
78
|
+
* @returns Merged configuration object.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* ```typescript
|
|
82
|
+
* const config = mergeWithPreset('production', {
|
|
83
|
+
* sinks: [{ type: 'https', endpoint: 'https://api.example.com' }],
|
|
84
|
+
* });
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
export declare function mergeWithPreset(presetName: string, overrides?: Partial<MonoraConfig>): Partial<MonoraConfig>;
|
|
88
|
+
//# sourceMappingURL=presets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presets.d.ts","sourceRoot":"","sources":["../src/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,kBAAkB;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,WAAW,EAAE,MAAM,CAAC;IACpB,yBAAyB;IACzB,WAAW,EAAE,aAAa,GAAG,KAAK,GAAG,SAAS,GAAG,YAAY,CAAC;IAC9D,2BAA2B;IAC3B,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,8CAA8C;IAC9C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,uCAAuC;IACvC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAMD,eAAO,MAAM,WAAW,EAAE,YA0CzB,CAAC;AAEF,eAAO,MAAM,GAAG,EAAE,YA8CjB,CAAC;AAEF,eAAO,MAAM,OAAO,EAAE,YAoCrB,CAAC;AAEF,eAAO,MAAM,UAAU,EAAE,YAqCxB,CAAC;AAMF,eAAO,MAAM,iBAAiB,EAAE,YAmD/B,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,YA2C5B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,YA6B1B,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,YAkDzB,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,YAsCzB,CAAC;AAMF,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,YAAY,CAkBhD,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,CAOpD;AAED;;;;GAIG;AACH,wBAAgB,WAAW,IAAI,MAAM,EAAE,CAGtC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAEnE;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAC7B,UAAU,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,CAQvB"}
|
package/dist/presets.js
ADDED
|
@@ -0,0 +1,520 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Enterprise compliance presets and environment-aware configuration.
|
|
4
|
+
*
|
|
5
|
+
* This module provides pre-configured settings for different deployment
|
|
6
|
+
* scenarios and compliance requirements.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* import { init, getPreset, PRESETS } from 'monora-ai';
|
|
11
|
+
*
|
|
12
|
+
* // Use a preset
|
|
13
|
+
* init({ preset: 'strict_enterprise' });
|
|
14
|
+
*
|
|
15
|
+
* // Or get preset config directly
|
|
16
|
+
* const config = getPreset('default_secure');
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
+
exports.PRESETS = exports.LOW_LATENCY = exports.AUDIT_FIRST = exports.EXPERIMENTAL = exports.DEFAULT_SECURE = exports.STRICT_ENTERPRISE = exports.PRODUCTION = exports.STAGING = exports.POC = exports.DEVELOPMENT = void 0;
|
|
21
|
+
exports.getPreset = getPreset;
|
|
22
|
+
exports.listPresets = listPresets;
|
|
23
|
+
exports.getPresetConfig = getPresetConfig;
|
|
24
|
+
exports.mergeWithPreset = mergeWithPreset;
|
|
25
|
+
// ============================================================================
|
|
26
|
+
// ENVIRONMENT PRESETS
|
|
27
|
+
// ============================================================================
|
|
28
|
+
exports.DEVELOPMENT = {
|
|
29
|
+
name: 'development',
|
|
30
|
+
description: 'Development mode with minimal friction and verbose logging',
|
|
31
|
+
environment: 'development',
|
|
32
|
+
config: {
|
|
33
|
+
defaults: {
|
|
34
|
+
environment: 'development',
|
|
35
|
+
data_classification: 'internal',
|
|
36
|
+
},
|
|
37
|
+
sinks: [{ type: 'stdout', format: 'pretty' }],
|
|
38
|
+
immutability: {
|
|
39
|
+
enabled: true,
|
|
40
|
+
scope: 'per_trace',
|
|
41
|
+
verify_on_emit: false,
|
|
42
|
+
verify_on_shutdown: false,
|
|
43
|
+
},
|
|
44
|
+
policies: {
|
|
45
|
+
enforce: false,
|
|
46
|
+
},
|
|
47
|
+
wal: {
|
|
48
|
+
enabled: false,
|
|
49
|
+
},
|
|
50
|
+
signing: {
|
|
51
|
+
enabled: false,
|
|
52
|
+
},
|
|
53
|
+
reporting: {
|
|
54
|
+
enabled: true,
|
|
55
|
+
emit_trust_summary: true,
|
|
56
|
+
},
|
|
57
|
+
telemetry: {
|
|
58
|
+
enabled: true,
|
|
59
|
+
backend: 'minimal',
|
|
60
|
+
},
|
|
61
|
+
attribution: {
|
|
62
|
+
enabled: false,
|
|
63
|
+
telemetry: {
|
|
64
|
+
enabled: false,
|
|
65
|
+
send_data: false,
|
|
66
|
+
data_residency: null,
|
|
67
|
+
},
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
exports.POC = {
|
|
72
|
+
name: 'poc',
|
|
73
|
+
description: 'Proof of concept mode - easy setup with basic safety',
|
|
74
|
+
environment: 'poc',
|
|
75
|
+
config: {
|
|
76
|
+
defaults: {
|
|
77
|
+
environment: 'poc',
|
|
78
|
+
data_classification: 'internal',
|
|
79
|
+
},
|
|
80
|
+
sinks: [
|
|
81
|
+
{ type: 'stdout', format: 'json' },
|
|
82
|
+
{ type: 'file', path: './monora_events.jsonl' },
|
|
83
|
+
],
|
|
84
|
+
immutability: {
|
|
85
|
+
enabled: true,
|
|
86
|
+
scope: 'per_trace',
|
|
87
|
+
verify_on_emit: false,
|
|
88
|
+
verify_on_shutdown: true,
|
|
89
|
+
},
|
|
90
|
+
policies: {
|
|
91
|
+
enforce: true,
|
|
92
|
+
},
|
|
93
|
+
wal: {
|
|
94
|
+
enabled: false,
|
|
95
|
+
},
|
|
96
|
+
signing: {
|
|
97
|
+
enabled: false,
|
|
98
|
+
},
|
|
99
|
+
reporting: {
|
|
100
|
+
enabled: true,
|
|
101
|
+
emit_trust_summary: true,
|
|
102
|
+
output_dir: './monora_reports',
|
|
103
|
+
},
|
|
104
|
+
telemetry: {
|
|
105
|
+
enabled: true,
|
|
106
|
+
backend: 'minimal',
|
|
107
|
+
},
|
|
108
|
+
attribution: {
|
|
109
|
+
enabled: false,
|
|
110
|
+
telemetry: {
|
|
111
|
+
enabled: false,
|
|
112
|
+
send_data: false,
|
|
113
|
+
data_residency: null,
|
|
114
|
+
},
|
|
115
|
+
},
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
exports.STAGING = {
|
|
119
|
+
name: 'staging',
|
|
120
|
+
description: 'Staging mode - production-like with extra logging',
|
|
121
|
+
environment: 'staging',
|
|
122
|
+
config: {
|
|
123
|
+
defaults: {
|
|
124
|
+
environment: 'staging',
|
|
125
|
+
data_classification: 'confidential',
|
|
126
|
+
},
|
|
127
|
+
sinks: [{ type: 'file', path: './monora_events.jsonl' }],
|
|
128
|
+
immutability: {
|
|
129
|
+
enabled: true,
|
|
130
|
+
scope: 'per_trace',
|
|
131
|
+
verify_on_emit: true,
|
|
132
|
+
verify_on_shutdown: true,
|
|
133
|
+
},
|
|
134
|
+
policies: {
|
|
135
|
+
enforce: true,
|
|
136
|
+
},
|
|
137
|
+
wal: {
|
|
138
|
+
enabled: true,
|
|
139
|
+
path: './monora_wal',
|
|
140
|
+
sync_mode: 'async',
|
|
141
|
+
},
|
|
142
|
+
signing: {
|
|
143
|
+
enabled: false,
|
|
144
|
+
},
|
|
145
|
+
reporting: {
|
|
146
|
+
enabled: true,
|
|
147
|
+
emit_trust_summary: true,
|
|
148
|
+
},
|
|
149
|
+
telemetry: {
|
|
150
|
+
enabled: true,
|
|
151
|
+
backend: 'minimal',
|
|
152
|
+
},
|
|
153
|
+
},
|
|
154
|
+
};
|
|
155
|
+
exports.PRODUCTION = {
|
|
156
|
+
name: 'production',
|
|
157
|
+
description: 'Production mode - full safety with minimal overhead',
|
|
158
|
+
environment: 'production',
|
|
159
|
+
config: {
|
|
160
|
+
defaults: {
|
|
161
|
+
environment: 'production',
|
|
162
|
+
data_classification: 'confidential',
|
|
163
|
+
},
|
|
164
|
+
sinks: [{ type: 'file', path: './monora_events.jsonl', rotation: 'daily', symlink: true }],
|
|
165
|
+
immutability: {
|
|
166
|
+
enabled: true,
|
|
167
|
+
scope: 'per_trace',
|
|
168
|
+
verify_on_emit: true,
|
|
169
|
+
verify_on_shutdown: true,
|
|
170
|
+
},
|
|
171
|
+
policies: {
|
|
172
|
+
enforce: true,
|
|
173
|
+
},
|
|
174
|
+
wal: {
|
|
175
|
+
enabled: true,
|
|
176
|
+
path: './monora_wal',
|
|
177
|
+
sync_mode: 'async',
|
|
178
|
+
},
|
|
179
|
+
signing: {
|
|
180
|
+
enabled: false,
|
|
181
|
+
},
|
|
182
|
+
reporting: {
|
|
183
|
+
enabled: true,
|
|
184
|
+
emit_trust_summary: true,
|
|
185
|
+
},
|
|
186
|
+
telemetry: {
|
|
187
|
+
enabled: true,
|
|
188
|
+
backend: 'minimal',
|
|
189
|
+
},
|
|
190
|
+
},
|
|
191
|
+
complianceReady: true,
|
|
192
|
+
};
|
|
193
|
+
// ============================================================================
|
|
194
|
+
// COMPLIANCE PRESETS
|
|
195
|
+
// ============================================================================
|
|
196
|
+
exports.STRICT_ENTERPRISE = {
|
|
197
|
+
name: 'strict_enterprise',
|
|
198
|
+
description: 'Maximum security for enterprise deployments - all safety features enabled',
|
|
199
|
+
environment: 'production',
|
|
200
|
+
config: {
|
|
201
|
+
defaults: {
|
|
202
|
+
environment: 'production',
|
|
203
|
+
data_classification: 'restricted',
|
|
204
|
+
},
|
|
205
|
+
sinks: [{ type: 'file', path: './monora_events.jsonl', rotation: 'daily', symlink: true }],
|
|
206
|
+
immutability: {
|
|
207
|
+
enabled: true,
|
|
208
|
+
scope: 'per_trace',
|
|
209
|
+
hash_algorithm: 'sha256',
|
|
210
|
+
verify_on_emit: true,
|
|
211
|
+
verify_on_shutdown: true,
|
|
212
|
+
},
|
|
213
|
+
policies: {
|
|
214
|
+
enforce: true,
|
|
215
|
+
},
|
|
216
|
+
wal: {
|
|
217
|
+
enabled: true,
|
|
218
|
+
path: './monora_wal',
|
|
219
|
+
sync_mode: 'fsync',
|
|
220
|
+
max_file_size_mb: 100,
|
|
221
|
+
},
|
|
222
|
+
signing: {
|
|
223
|
+
enabled: true,
|
|
224
|
+
algorithm: 'ed25519',
|
|
225
|
+
},
|
|
226
|
+
data_handling: {
|
|
227
|
+
enabled: true,
|
|
228
|
+
mode: 'redact',
|
|
229
|
+
rules: [
|
|
230
|
+
{ name: 'email', pattern: '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}' },
|
|
231
|
+
{ name: 'ssn', pattern: '\\d{3}-\\d{2}-\\d{4}' },
|
|
232
|
+
{ name: 'credit_card', pattern: '\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}[\\s-]?\\d{4}' },
|
|
233
|
+
],
|
|
234
|
+
},
|
|
235
|
+
reporting: {
|
|
236
|
+
enabled: true,
|
|
237
|
+
emit_trust_summary: true,
|
|
238
|
+
formats: ['json', 'markdown'],
|
|
239
|
+
},
|
|
240
|
+
telemetry: {
|
|
241
|
+
enabled: true,
|
|
242
|
+
backend: 'minimal',
|
|
243
|
+
},
|
|
244
|
+
},
|
|
245
|
+
complianceReady: true,
|
|
246
|
+
frameworks: ['SOC2', 'GDPR', 'ISO27001', 'ISO42001'],
|
|
247
|
+
};
|
|
248
|
+
exports.DEFAULT_SECURE = {
|
|
249
|
+
name: 'default_secure',
|
|
250
|
+
description: 'Balanced security with good defaults - recommended for most use cases',
|
|
251
|
+
environment: 'production',
|
|
252
|
+
config: {
|
|
253
|
+
defaults: {
|
|
254
|
+
environment: 'production',
|
|
255
|
+
data_classification: 'confidential',
|
|
256
|
+
},
|
|
257
|
+
sinks: [{ type: 'file', path: './monora_events.jsonl' }],
|
|
258
|
+
immutability: {
|
|
259
|
+
enabled: true,
|
|
260
|
+
scope: 'per_trace',
|
|
261
|
+
verify_on_emit: true,
|
|
262
|
+
verify_on_shutdown: true,
|
|
263
|
+
},
|
|
264
|
+
policies: {
|
|
265
|
+
enforce: true,
|
|
266
|
+
},
|
|
267
|
+
wal: {
|
|
268
|
+
enabled: true,
|
|
269
|
+
path: './monora_wal',
|
|
270
|
+
sync_mode: 'async',
|
|
271
|
+
},
|
|
272
|
+
signing: {
|
|
273
|
+
enabled: false,
|
|
274
|
+
},
|
|
275
|
+
data_handling: {
|
|
276
|
+
enabled: true,
|
|
277
|
+
mode: 'redact',
|
|
278
|
+
rules: [{ name: 'email', pattern: '[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}' }],
|
|
279
|
+
},
|
|
280
|
+
reporting: {
|
|
281
|
+
enabled: true,
|
|
282
|
+
emit_trust_summary: true,
|
|
283
|
+
},
|
|
284
|
+
telemetry: {
|
|
285
|
+
enabled: true,
|
|
286
|
+
backend: 'minimal',
|
|
287
|
+
},
|
|
288
|
+
},
|
|
289
|
+
complianceReady: true,
|
|
290
|
+
frameworks: ['SOC2'],
|
|
291
|
+
};
|
|
292
|
+
exports.EXPERIMENTAL = {
|
|
293
|
+
name: 'experimental',
|
|
294
|
+
description: 'Minimal overhead for experiments and testing - not for production',
|
|
295
|
+
environment: 'development',
|
|
296
|
+
config: {
|
|
297
|
+
defaults: {
|
|
298
|
+
environment: 'development',
|
|
299
|
+
data_classification: 'internal',
|
|
300
|
+
},
|
|
301
|
+
sinks: [{ type: 'stdout', format: 'pretty' }],
|
|
302
|
+
immutability: {
|
|
303
|
+
enabled: false,
|
|
304
|
+
},
|
|
305
|
+
policies: {
|
|
306
|
+
enforce: false,
|
|
307
|
+
},
|
|
308
|
+
wal: {
|
|
309
|
+
enabled: false,
|
|
310
|
+
},
|
|
311
|
+
signing: {
|
|
312
|
+
enabled: false,
|
|
313
|
+
},
|
|
314
|
+
reporting: {
|
|
315
|
+
enabled: false,
|
|
316
|
+
},
|
|
317
|
+
telemetry: {
|
|
318
|
+
enabled: false,
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
};
|
|
322
|
+
exports.AUDIT_FIRST = {
|
|
323
|
+
name: 'audit_first',
|
|
324
|
+
description: 'Maximum auditability - all logging and verification enabled',
|
|
325
|
+
environment: 'production',
|
|
326
|
+
config: {
|
|
327
|
+
defaults: {
|
|
328
|
+
environment: 'production',
|
|
329
|
+
data_classification: 'restricted',
|
|
330
|
+
},
|
|
331
|
+
sinks: [{ type: 'file', path: './monora_events.jsonl', rotation: 'daily', symlink: true }],
|
|
332
|
+
immutability: {
|
|
333
|
+
enabled: true,
|
|
334
|
+
scope: 'per_trace',
|
|
335
|
+
hash_algorithm: 'sha256',
|
|
336
|
+
verify_on_emit: true,
|
|
337
|
+
verify_on_shutdown: true,
|
|
338
|
+
},
|
|
339
|
+
policies: {
|
|
340
|
+
enforce: true,
|
|
341
|
+
},
|
|
342
|
+
wal: {
|
|
343
|
+
enabled: true,
|
|
344
|
+
path: './monora_wal',
|
|
345
|
+
sync_mode: 'fsync',
|
|
346
|
+
},
|
|
347
|
+
signing: {
|
|
348
|
+
enabled: true,
|
|
349
|
+
algorithm: 'ed25519',
|
|
350
|
+
},
|
|
351
|
+
reporting: {
|
|
352
|
+
enabled: true,
|
|
353
|
+
emit_trust_summary: true,
|
|
354
|
+
formats: ['json', 'markdown'],
|
|
355
|
+
include_security_report: true,
|
|
356
|
+
},
|
|
357
|
+
telemetry: {
|
|
358
|
+
enabled: true,
|
|
359
|
+
backend: 'prometheus',
|
|
360
|
+
},
|
|
361
|
+
attribution: {
|
|
362
|
+
enabled: false,
|
|
363
|
+
telemetry: {
|
|
364
|
+
enabled: false,
|
|
365
|
+
send_data: false,
|
|
366
|
+
data_residency: null,
|
|
367
|
+
},
|
|
368
|
+
},
|
|
369
|
+
},
|
|
370
|
+
complianceReady: true,
|
|
371
|
+
frameworks: ['SOC2', 'GDPR', 'ISO27001', 'ISO42001'],
|
|
372
|
+
};
|
|
373
|
+
exports.LOW_LATENCY = {
|
|
374
|
+
name: 'low_latency',
|
|
375
|
+
description: 'Minimal overhead for latency-sensitive applications',
|
|
376
|
+
environment: 'production',
|
|
377
|
+
config: {
|
|
378
|
+
defaults: {
|
|
379
|
+
environment: 'production',
|
|
380
|
+
data_classification: 'internal',
|
|
381
|
+
},
|
|
382
|
+
sinks: [{ type: 'file', path: './monora_events.jsonl' }],
|
|
383
|
+
immutability: {
|
|
384
|
+
enabled: true,
|
|
385
|
+
scope: 'per_trace',
|
|
386
|
+
verify_on_emit: false,
|
|
387
|
+
verify_on_shutdown: true,
|
|
388
|
+
},
|
|
389
|
+
policies: {
|
|
390
|
+
enforce: true,
|
|
391
|
+
},
|
|
392
|
+
wal: {
|
|
393
|
+
enabled: false,
|
|
394
|
+
},
|
|
395
|
+
signing: {
|
|
396
|
+
enabled: false,
|
|
397
|
+
},
|
|
398
|
+
reporting: {
|
|
399
|
+
enabled: true,
|
|
400
|
+
emit_trust_summary: false,
|
|
401
|
+
},
|
|
402
|
+
telemetry: {
|
|
403
|
+
enabled: true,
|
|
404
|
+
backend: 'minimal',
|
|
405
|
+
},
|
|
406
|
+
buffering: {
|
|
407
|
+
batch_size: 100,
|
|
408
|
+
flush_interval_sec: 1.0,
|
|
409
|
+
},
|
|
410
|
+
},
|
|
411
|
+
};
|
|
412
|
+
// ============================================================================
|
|
413
|
+
// PRESET REGISTRY
|
|
414
|
+
// ============================================================================
|
|
415
|
+
exports.PRESETS = {
|
|
416
|
+
// Environment presets
|
|
417
|
+
development: exports.DEVELOPMENT,
|
|
418
|
+
dev: exports.DEVELOPMENT,
|
|
419
|
+
poc: exports.POC,
|
|
420
|
+
staging: exports.STAGING,
|
|
421
|
+
production: exports.PRODUCTION,
|
|
422
|
+
prod: exports.PRODUCTION,
|
|
423
|
+
// Compliance presets
|
|
424
|
+
strict_enterprise: exports.STRICT_ENTERPRISE,
|
|
425
|
+
enterprise: exports.STRICT_ENTERPRISE,
|
|
426
|
+
default_secure: exports.DEFAULT_SECURE,
|
|
427
|
+
secure: exports.DEFAULT_SECURE,
|
|
428
|
+
experimental: exports.EXPERIMENTAL,
|
|
429
|
+
audit_first: exports.AUDIT_FIRST,
|
|
430
|
+
audit: exports.AUDIT_FIRST,
|
|
431
|
+
low_latency: exports.LOW_LATENCY,
|
|
432
|
+
fast: exports.LOW_LATENCY,
|
|
433
|
+
};
|
|
434
|
+
/**
|
|
435
|
+
* Get a preset configuration by name.
|
|
436
|
+
*
|
|
437
|
+
* @param name - Preset name (e.g., "strict_enterprise", "development").
|
|
438
|
+
* @returns PresetConfig object.
|
|
439
|
+
* @throws Error if preset name is not recognized.
|
|
440
|
+
*
|
|
441
|
+
* @example
|
|
442
|
+
* ```typescript
|
|
443
|
+
* const config = getPreset('strict_enterprise');
|
|
444
|
+
* console.log(config.description);
|
|
445
|
+
* ```
|
|
446
|
+
*/
|
|
447
|
+
function getPreset(name) {
|
|
448
|
+
const preset = exports.PRESETS[name.toLowerCase()];
|
|
449
|
+
if (!preset) {
|
|
450
|
+
const available = listPresets().join(', ');
|
|
451
|
+
throw new Error(`Unknown preset '${name}'. Available: ${available}`);
|
|
452
|
+
}
|
|
453
|
+
return preset;
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* List all available preset names.
|
|
457
|
+
*
|
|
458
|
+
* @returns Array of unique preset names.
|
|
459
|
+
*/
|
|
460
|
+
function listPresets() {
|
|
461
|
+
const names = new Set(Object.values(exports.PRESETS).map((p) => p.name));
|
|
462
|
+
return Array.from(names).sort();
|
|
463
|
+
}
|
|
464
|
+
/**
|
|
465
|
+
* Get preset configuration dictionary.
|
|
466
|
+
*
|
|
467
|
+
* @param name - Preset name.
|
|
468
|
+
* @returns Configuration object.
|
|
469
|
+
*/
|
|
470
|
+
function getPresetConfig(name) {
|
|
471
|
+
return deepClone(getPreset(name).config);
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Merge preset config with custom overrides.
|
|
475
|
+
*
|
|
476
|
+
* @param presetName - Base preset name.
|
|
477
|
+
* @param overrides - Custom configuration to merge.
|
|
478
|
+
* @returns Merged configuration object.
|
|
479
|
+
*
|
|
480
|
+
* @example
|
|
481
|
+
* ```typescript
|
|
482
|
+
* const config = mergeWithPreset('production', {
|
|
483
|
+
* sinks: [{ type: 'https', endpoint: 'https://api.example.com' }],
|
|
484
|
+
* });
|
|
485
|
+
* ```
|
|
486
|
+
*/
|
|
487
|
+
function mergeWithPreset(presetName, overrides) {
|
|
488
|
+
const baseConfig = getPresetConfig(presetName);
|
|
489
|
+
if (overrides) {
|
|
490
|
+
deepMerge(baseConfig, overrides);
|
|
491
|
+
}
|
|
492
|
+
return baseConfig;
|
|
493
|
+
}
|
|
494
|
+
/**
|
|
495
|
+
* Deep merge updates into base object.
|
|
496
|
+
*/
|
|
497
|
+
function deepMerge(base, updates) {
|
|
498
|
+
for (const key of Object.keys(updates)) {
|
|
499
|
+
if (key in base &&
|
|
500
|
+
typeof base[key] === 'object' &&
|
|
501
|
+
base[key] !== null &&
|
|
502
|
+
!Array.isArray(base[key]) &&
|
|
503
|
+
typeof updates[key] === 'object' &&
|
|
504
|
+
updates[key] !== null &&
|
|
505
|
+
!Array.isArray(updates[key])) {
|
|
506
|
+
deepMerge(base[key], updates[key]);
|
|
507
|
+
}
|
|
508
|
+
else {
|
|
509
|
+
base[key] = deepClone(updates[key]);
|
|
510
|
+
}
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
function deepClone(value) {
|
|
514
|
+
const structuredCloneFn = globalThis
|
|
515
|
+
.structuredClone;
|
|
516
|
+
if (typeof structuredCloneFn === 'function') {
|
|
517
|
+
return structuredCloneFn(value);
|
|
518
|
+
}
|
|
519
|
+
return JSON.parse(JSON.stringify(value));
|
|
520
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../src/propagation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAyB,IAAI,EAAE,MAAM,WAAW,CAAC;AAGxD,eAAO,MAAM,kBAAkB,gBAAgB,CAAC;AAChD,eAAO,MAAM,iBAAiB,eAAe,CAAC;AAK9C;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAC3B,OAAO,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM,GACnC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAexB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,cAAc,CAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,GACrD,gBAAgB,GAAG,IAAI,CAkDzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,GACpB,CAAC,CAcH;AAED;;;;;;;GAOG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,EACxC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,EACtD,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,GAC7B,OAAO,CAAC,CAAC,CAAC,CAEZ;AAqCD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,OAAc,GACtB,MAAM,CAGR;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAItE"}
|
package/dist/propagation.js
CHANGED
|
@@ -5,6 +5,39 @@
|
|
|
5
5
|
* This module implements the W3C Trace Context specification
|
|
6
6
|
* (https://www.w3.org/TR/trace-context/) for distributed tracing.
|
|
7
7
|
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
8
41
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
42
|
exports.TRACESTATE_HEADER = exports.TRACEPARENT_HEADER = void 0;
|
|
10
43
|
exports.injectHeaders = injectHeaders;
|
|
@@ -13,6 +46,7 @@ exports.continueTrace = continueTrace;
|
|
|
13
46
|
exports.continueTraceAsync = continueTraceAsync;
|
|
14
47
|
exports.makeTraceparent = makeTraceparent;
|
|
15
48
|
exports.makeTracestate = makeTracestate;
|
|
49
|
+
const crypto = __importStar(require("crypto"));
|
|
16
50
|
const context_1 = require("./context");
|
|
17
51
|
// W3C Trace Context header names
|
|
18
52
|
exports.TRACEPARENT_HEADER = 'traceparent';
|
|
@@ -162,7 +196,6 @@ async function continueTraceAsync(headers, name, fn) {
|
|
|
162
196
|
function monoraToW3cTraceId(monoraId) {
|
|
163
197
|
const raw = monoraId.replace('trc_', '').replace('spn_', '');
|
|
164
198
|
// Create a simple hex representation by hashing
|
|
165
|
-
const crypto = require('crypto');
|
|
166
199
|
const hash = crypto.createHash('sha256').update(raw).digest('hex');
|
|
167
200
|
return hash.slice(0, 32);
|
|
168
201
|
}
|
|
@@ -173,7 +206,6 @@ function monoraToW3cTraceId(monoraId) {
|
|
|
173
206
|
function monoraToW3cSpanId(monoraId) {
|
|
174
207
|
const raw = monoraId.replace('spn_', '').replace('trc_', '');
|
|
175
208
|
// Create a simple hex representation by hashing
|
|
176
|
-
const crypto = require('crypto');
|
|
177
209
|
const hash = crypto.createHash('sha256').update(raw).digest('hex');
|
|
178
210
|
return hash.slice(0, 16);
|
|
179
211
|
}
|