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
package/dist/sinks/https.js
CHANGED
|
@@ -52,6 +52,7 @@ const circuit_breaker_1 = require("../circuit_breaker");
|
|
|
52
52
|
const verify_1 = require("../verify");
|
|
53
53
|
const telemetry_1 = require("../telemetry");
|
|
54
54
|
const logger_1 = require("../logger");
|
|
55
|
+
const dataResidency_1 = require("../dataResidency");
|
|
55
56
|
function sleep(ms) {
|
|
56
57
|
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
57
58
|
}
|
|
@@ -73,6 +74,7 @@ class HttpRetryQueue {
|
|
|
73
74
|
const filepath = path.join(this.queueDir, filename);
|
|
74
75
|
const payload = {
|
|
75
76
|
created_at: new Date().toISOString(),
|
|
77
|
+
attempts: 0,
|
|
76
78
|
events,
|
|
77
79
|
};
|
|
78
80
|
fs.writeFileSync(filepath, JSON.stringify(payload));
|
|
@@ -103,8 +105,9 @@ class HttpRetryQueue {
|
|
|
103
105
|
try {
|
|
104
106
|
await sendFunc(events);
|
|
105
107
|
}
|
|
106
|
-
catch {
|
|
107
|
-
|
|
108
|
+
catch (error) {
|
|
109
|
+
this.handleSendFailure(filepath, payload, error);
|
|
110
|
+
continue;
|
|
108
111
|
}
|
|
109
112
|
this.removeFile(filepath);
|
|
110
113
|
}
|
|
@@ -119,7 +122,9 @@ class HttpRetryQueue {
|
|
|
119
122
|
try {
|
|
120
123
|
entries = fs
|
|
121
124
|
.readdirSync(this.queueDir)
|
|
122
|
-
.filter((entry) => entry.endsWith('.json') &&
|
|
125
|
+
.filter((entry) => entry.endsWith('.json') &&
|
|
126
|
+
entry !== HttpRetryQueue.STATS_FILENAME &&
|
|
127
|
+
!entry.endsWith(HttpRetryQueue.DEAD_LETTER_SUFFIX));
|
|
123
128
|
}
|
|
124
129
|
catch {
|
|
125
130
|
return [];
|
|
@@ -135,12 +140,58 @@ class HttpRetryQueue {
|
|
|
135
140
|
// Best-effort cleanup
|
|
136
141
|
}
|
|
137
142
|
}
|
|
143
|
+
handleSendFailure(filepath, payload, error) {
|
|
144
|
+
const attempts = this.getAttempts(payload);
|
|
145
|
+
const nextAttempts = attempts + 1;
|
|
146
|
+
payload.attempts = nextAttempts;
|
|
147
|
+
payload.updated_at = new Date().toISOString();
|
|
148
|
+
logger_1.logger.warning('HTTP retry queue send failed: %s', error);
|
|
149
|
+
if (nextAttempts >= HttpRetryQueue.MAX_ATTEMPTS) {
|
|
150
|
+
logger_1.logger.warning('HTTP retry queue max attempts reached (%d); moving batch to dead letter.', nextAttempts);
|
|
151
|
+
this.moveToDeadLetter(filepath, payload);
|
|
152
|
+
return;
|
|
153
|
+
}
|
|
154
|
+
this.requeueFile(filepath, payload);
|
|
155
|
+
}
|
|
156
|
+
getAttempts(payload) {
|
|
157
|
+
const attempts = Number(payload.attempts);
|
|
158
|
+
return Number.isFinite(attempts) && attempts >= 0 ? attempts : 0;
|
|
159
|
+
}
|
|
160
|
+
requeueFile(filepath, payload) {
|
|
161
|
+
const tmpPath = `${filepath}.tmp`;
|
|
162
|
+
try {
|
|
163
|
+
fs.writeFileSync(tmpPath, JSON.stringify(payload));
|
|
164
|
+
fs.renameSync(tmpPath, filepath);
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
logger_1.logger.warning('Failed to requeue HTTP retry batch: %s', error);
|
|
168
|
+
try {
|
|
169
|
+
if (fs.existsSync(tmpPath)) {
|
|
170
|
+
fs.unlinkSync(tmpPath);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch {
|
|
174
|
+
return;
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
moveToDeadLetter(filepath, payload) {
|
|
179
|
+
const baseName = this.nextFilename().replace(/\.json$/, '');
|
|
180
|
+
const deadPath = path.join(this.queueDir, `${baseName}${HttpRetryQueue.DEAD_LETTER_SUFFIX}`);
|
|
181
|
+
try {
|
|
182
|
+
fs.writeFileSync(deadPath, JSON.stringify(payload));
|
|
183
|
+
this.removeFile(filepath);
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
logger_1.logger.warning('Failed to move HTTP retry batch to dead letter: %s', error);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
138
189
|
pruneIfNeeded() {
|
|
139
190
|
if (this.maxItems <= 0) {
|
|
140
191
|
return;
|
|
141
192
|
}
|
|
142
193
|
const files = this.listFiles();
|
|
143
|
-
if (files.length
|
|
194
|
+
if (files.length <= this.maxItems - 1) {
|
|
144
195
|
return;
|
|
145
196
|
}
|
|
146
197
|
const excess = files.length - this.maxItems + 1;
|
|
@@ -233,8 +284,18 @@ class HttpRetryQueue {
|
|
|
233
284
|
}
|
|
234
285
|
}
|
|
235
286
|
HttpRetryQueue.STATS_FILENAME = '.monora_retry_queue_stats.json';
|
|
287
|
+
HttpRetryQueue.DEAD_LETTER_SUFFIX = '.dead.json';
|
|
288
|
+
HttpRetryQueue.MAX_ATTEMPTS = 5;
|
|
236
289
|
class HttpSink {
|
|
237
290
|
constructor(endpoint, headers, options) {
|
|
291
|
+
// Enforce data residency before accepting the endpoint
|
|
292
|
+
const residencyConfig = options?.dataResidency || {};
|
|
293
|
+
if (residencyConfig.residency) {
|
|
294
|
+
this.dataResidencyResult = (0, dataResidency_1.enforceDataResidency)(endpoint, residencyConfig.residency, residencyConfig.action || 'warn');
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
this.dataResidencyResult = null;
|
|
298
|
+
}
|
|
238
299
|
this.endpoint = endpoint;
|
|
239
300
|
this.headers = headers;
|
|
240
301
|
this.batchSize = options?.batchSize || 50;
|
|
@@ -243,8 +304,13 @@ class HttpSink {
|
|
|
243
304
|
this.backoffBaseSec = options?.backoffBaseSec || 0.5;
|
|
244
305
|
this.buffer = [];
|
|
245
306
|
this.retryIntervalMs = 5000;
|
|
246
|
-
|
|
247
|
-
this.
|
|
307
|
+
const idempotencyConfig = options?.idempotency;
|
|
308
|
+
this.idempotencyEnabled = idempotencyConfig?.enabled ?? true;
|
|
309
|
+
const headerValue = idempotencyConfig?.header ?? idempotencyConfig?.headerName;
|
|
310
|
+
this.idempotencyHeader =
|
|
311
|
+
headerValue && headerValue.trim().length > 0
|
|
312
|
+
? headerValue.trim()
|
|
313
|
+
: 'Idempotency-Key';
|
|
248
314
|
this.flushing = false;
|
|
249
315
|
// Initialize circuit breaker
|
|
250
316
|
const cbConfig = options?.circuitBreaker || {};
|
|
@@ -273,14 +339,6 @@ class HttpSink {
|
|
|
273
339
|
this.retryTimer.unref();
|
|
274
340
|
}
|
|
275
341
|
}
|
|
276
|
-
const idempotencyConfig = options?.idempotency || {};
|
|
277
|
-
if (idempotencyConfig.enabled === false) {
|
|
278
|
-
this.idempotencyEnabled = false;
|
|
279
|
-
}
|
|
280
|
-
const headerName = idempotencyConfig.headerName;
|
|
281
|
-
if (headerName && headerName.trim().length > 0) {
|
|
282
|
-
this.idempotencyHeader = headerName.trim();
|
|
283
|
-
}
|
|
284
342
|
}
|
|
285
343
|
emit(events) {
|
|
286
344
|
this.buffer.push(...events);
|
|
@@ -306,8 +364,10 @@ class HttpSink {
|
|
|
306
364
|
try {
|
|
307
365
|
await this.drainRetryQueue();
|
|
308
366
|
while (this.buffer.length > 0) {
|
|
309
|
-
const batch = this.buffer;
|
|
310
|
-
|
|
367
|
+
const batch = this.buffer.splice(0);
|
|
368
|
+
if (batch.length === 0) {
|
|
369
|
+
break;
|
|
370
|
+
}
|
|
311
371
|
try {
|
|
312
372
|
await this.sendPayload(batch);
|
|
313
373
|
}
|
package/dist/sinks/stdout.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stdout.d.ts","sourceRoot":"","sources":["../../src/sinks/stdout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,UAAW,YAAW,IAAI;IACrC,OAAO,CAAC,MAAM,CAAoB;
|
|
1
|
+
{"version":3,"file":"stdout.d.ts","sourceRoot":"","sources":["../../src/sinks/stdout.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,qBAAa,UAAW,YAAW,IAAI;IACrC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAU;gBAEX,MAAM,GAAE,MAAM,GAAG,QAAmB;IAKhD,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI;IAqB9C,KAAK,IAAI,IAAI;IAIb,KAAK,IAAI,IAAI;CAGd"}
|
package/dist/sinks/stdout.js
CHANGED
|
@@ -6,10 +6,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.StdoutSink = void 0;
|
|
7
7
|
const util_1 = require("util");
|
|
8
8
|
class StdoutSink {
|
|
9
|
-
constructor(format = '
|
|
9
|
+
constructor(format = 'pretty') {
|
|
10
10
|
this.format = format;
|
|
11
|
+
this.quiet = isQuietMode();
|
|
11
12
|
}
|
|
12
13
|
emit(events) {
|
|
14
|
+
if (this.quiet) {
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
13
17
|
for (const event of events) {
|
|
14
18
|
try {
|
|
15
19
|
const payload = this.format === 'pretty'
|
|
@@ -32,3 +36,10 @@ class StdoutSink {
|
|
|
32
36
|
}
|
|
33
37
|
}
|
|
34
38
|
exports.StdoutSink = StdoutSink;
|
|
39
|
+
function isQuietMode() {
|
|
40
|
+
const raw = String(process.env.MONORA_QUIET || '').trim().toLowerCase();
|
|
41
|
+
if (!raw) {
|
|
42
|
+
return false;
|
|
43
|
+
}
|
|
44
|
+
return ['1', 'true', 'yes', 'on'].includes(raw);
|
|
45
|
+
}
|
package/dist/spec.d.ts
ADDED
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Monora Schema Specification Types
|
|
3
|
+
*
|
|
4
|
+
* Provides typed schema definitions for AI model monitoring with
|
|
5
|
+
* field specifications, PII detection, and compliance configuration.
|
|
6
|
+
*/
|
|
7
|
+
/** Field data types for schema definition */
|
|
8
|
+
export type FieldType = 'string' | 'number' | 'integer' | 'boolean' | 'array' | 'object';
|
|
9
|
+
/** Types of PII that can be detected in fields */
|
|
10
|
+
export type PIIType = 'email' | 'phone' | 'ssn' | 'credit_card' | 'name' | 'address' | 'ip_address' | 'date_of_birth' | 'custom';
|
|
11
|
+
/** Field role in the AI system */
|
|
12
|
+
export type FieldRole = 'input' | 'output' | 'metadata' | 'identifier';
|
|
13
|
+
/**
|
|
14
|
+
* Specification for a single field in the schema.
|
|
15
|
+
*/
|
|
16
|
+
export interface FieldSpec {
|
|
17
|
+
/** Field name (supports dot notation for nested fields) */
|
|
18
|
+
name: string;
|
|
19
|
+
/** Data type of the field */
|
|
20
|
+
dataType: FieldType;
|
|
21
|
+
/** Whether the field is required */
|
|
22
|
+
required?: boolean;
|
|
23
|
+
/** Whether the field can be null */
|
|
24
|
+
nullable?: boolean;
|
|
25
|
+
/** Human-readable description */
|
|
26
|
+
description?: string;
|
|
27
|
+
/** Type of PII contained, if any */
|
|
28
|
+
piiType?: PIIType;
|
|
29
|
+
/** Regex pattern for redacting PII */
|
|
30
|
+
redactionPattern?: string;
|
|
31
|
+
/** Minimum value for numeric fields */
|
|
32
|
+
minValue?: number;
|
|
33
|
+
/** Maximum value for numeric fields */
|
|
34
|
+
maxValue?: number;
|
|
35
|
+
/** Regex pattern for string validation */
|
|
36
|
+
pattern?: string;
|
|
37
|
+
/** Role of the field (input/output/metadata/identifier) */
|
|
38
|
+
role?: FieldRole;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Create a FieldSpec with defaults applied.
|
|
42
|
+
*/
|
|
43
|
+
export declare function createFieldSpec(name: string, dataType: FieldType, options?: Partial<Omit<FieldSpec, 'name' | 'dataType'>>): FieldSpec;
|
|
44
|
+
/**
|
|
45
|
+
* Convert FieldSpec to JSON Schema property definition.
|
|
46
|
+
*/
|
|
47
|
+
export declare function fieldSpecToJsonSchema(spec: FieldSpec): Record<string, any>;
|
|
48
|
+
/**
|
|
49
|
+
* Convert FieldSpec to a redaction rule for data handling.
|
|
50
|
+
*/
|
|
51
|
+
export declare function fieldSpecToRedactionRule(spec: FieldSpec): Record<string, any> | null;
|
|
52
|
+
/**
|
|
53
|
+
* Enrichment configuration for compliance features.
|
|
54
|
+
*/
|
|
55
|
+
export interface EnrichmentConfig {
|
|
56
|
+
/** Enable bias detection */
|
|
57
|
+
biasDetection?: boolean;
|
|
58
|
+
/** Enable risk tracking */
|
|
59
|
+
riskTracking?: boolean;
|
|
60
|
+
/** Enable human oversight */
|
|
61
|
+
humanOversight?: boolean;
|
|
62
|
+
/** Enable data redaction */
|
|
63
|
+
dataRedaction?: boolean;
|
|
64
|
+
/** Enable identity tracking */
|
|
65
|
+
identityTracking?: boolean;
|
|
66
|
+
/** Enable cost tracking */
|
|
67
|
+
costTracking?: boolean;
|
|
68
|
+
/** Enable immutability/hash chain */
|
|
69
|
+
immutability?: boolean;
|
|
70
|
+
/** Enable event signing */
|
|
71
|
+
signing?: boolean;
|
|
72
|
+
/** Enable data governance */
|
|
73
|
+
dataGovernance?: boolean;
|
|
74
|
+
/** Enable lifecycle tracking */
|
|
75
|
+
lifecycleTracking?: boolean;
|
|
76
|
+
/** Enable data residency enforcement */
|
|
77
|
+
dataResidency?: boolean;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Create default EnrichmentConfig.
|
|
81
|
+
*/
|
|
82
|
+
export declare function createEnrichmentConfig(options?: Partial<EnrichmentConfig>): EnrichmentConfig;
|
|
83
|
+
/**
|
|
84
|
+
* Get enrichment configuration for a specific compliance framework.
|
|
85
|
+
*/
|
|
86
|
+
export declare function enrichmentConfigForFramework(framework: string): EnrichmentConfig;
|
|
87
|
+
/**
|
|
88
|
+
* Merge two enrichment configurations (union of enabled features).
|
|
89
|
+
*/
|
|
90
|
+
export declare function mergeEnrichmentConfigs(base: EnrichmentConfig, other: EnrichmentConfig): EnrichmentConfig;
|
|
91
|
+
/**
|
|
92
|
+
* MonoraSpec - Complete schema specification for an AI model.
|
|
93
|
+
*/
|
|
94
|
+
export interface MonoraSpec {
|
|
95
|
+
/** Input fields (prompts, queries, etc.) */
|
|
96
|
+
inputs: FieldSpec[];
|
|
97
|
+
/** Output fields (responses, completions, etc.) */
|
|
98
|
+
outputs: FieldSpec[];
|
|
99
|
+
/** Metadata fields (timestamps, service info, etc.) */
|
|
100
|
+
metadata?: FieldSpec[];
|
|
101
|
+
/** Identifier fields (trace_id, event_id, etc.) */
|
|
102
|
+
identifiers?: FieldSpec[];
|
|
103
|
+
/** Enrichment configuration */
|
|
104
|
+
enrichments?: EnrichmentConfig;
|
|
105
|
+
/** Compliance frameworks to target */
|
|
106
|
+
complianceTargets?: string[];
|
|
107
|
+
/** Model/application name */
|
|
108
|
+
modelName?: string;
|
|
109
|
+
/** Model version */
|
|
110
|
+
modelVersion?: string;
|
|
111
|
+
/** Human-readable description */
|
|
112
|
+
description?: string;
|
|
113
|
+
/** Event timestamp field name */
|
|
114
|
+
eventTimestampField?: string;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Create a MonoraSpec with defaults applied.
|
|
118
|
+
*/
|
|
119
|
+
export declare function createMonoraSpec(options: {
|
|
120
|
+
inputs: FieldSpec[];
|
|
121
|
+
outputs: FieldSpec[];
|
|
122
|
+
metadata?: FieldSpec[];
|
|
123
|
+
identifiers?: FieldSpec[];
|
|
124
|
+
enrichments?: EnrichmentConfig;
|
|
125
|
+
complianceTargets?: string[];
|
|
126
|
+
modelName?: string;
|
|
127
|
+
modelVersion?: string;
|
|
128
|
+
description?: string;
|
|
129
|
+
eventTimestampField?: string;
|
|
130
|
+
}): MonoraSpec;
|
|
131
|
+
/**
|
|
132
|
+
* Get all fields from a MonoraSpec.
|
|
133
|
+
*/
|
|
134
|
+
export declare function getAllFields(spec: MonoraSpec): FieldSpec[];
|
|
135
|
+
/**
|
|
136
|
+
* Get fields with PII from a MonoraSpec.
|
|
137
|
+
*/
|
|
138
|
+
export declare function getPiiFields(spec: MonoraSpec): FieldSpec[];
|
|
139
|
+
/**
|
|
140
|
+
* Convert MonoraSpec to schema contract format for onboarding validation.
|
|
141
|
+
*/
|
|
142
|
+
export declare function specToSchemaContract(spec: MonoraSpec): Record<string, any>;
|
|
143
|
+
/**
|
|
144
|
+
* Convert MonoraSpec to Monora configuration format.
|
|
145
|
+
*/
|
|
146
|
+
export declare function specToConfig(spec: MonoraSpec): Record<string, any>;
|
|
147
|
+
/**
|
|
148
|
+
* Create MonoraSpec from a schema contract.
|
|
149
|
+
*/
|
|
150
|
+
export declare function specFromSchemaContract(contract: Record<string, any>): MonoraSpec;
|
|
151
|
+
/**
|
|
152
|
+
* Convert MonoraSpec to dictionary representation.
|
|
153
|
+
*/
|
|
154
|
+
export declare function specToDict(spec: MonoraSpec): Record<string, any>;
|
|
155
|
+
/**
|
|
156
|
+
* Create MonoraSpec from dictionary representation.
|
|
157
|
+
*/
|
|
158
|
+
export declare function specFromDict(data: Record<string, any>): MonoraSpec;
|
|
159
|
+
//# sourceMappingURL=spec.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec.d.ts","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|