@governed-ai/runtime 1.0.0
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 +251 -0
- package/dist/domains/finance/entity_rules.d.ts +4 -0
- package/dist/domains/finance/entity_rules.d.ts.map +1 -0
- package/dist/domains/finance/entity_rules.js +19 -0
- package/dist/domains/finance/entity_rules.js.map +1 -0
- package/dist/domains/finance/policy.yaml +85 -0
- package/dist/domains/health/entity_rules.d.ts +4 -0
- package/dist/domains/health/entity_rules.d.ts.map +1 -0
- package/dist/domains/health/entity_rules.js +20 -0
- package/dist/domains/health/entity_rules.js.map +1 -0
- package/dist/domains/health/policy.yaml +95 -0
- package/dist/domains/insurance/entity_rules.d.ts +4 -0
- package/dist/domains/insurance/entity_rules.d.ts.map +1 -0
- package/dist/domains/insurance/entity_rules.js +19 -0
- package/dist/domains/insurance/entity_rules.js.map +1 -0
- package/dist/domains/insurance/policy.yaml +88 -0
- package/dist/domains/registry.d.ts +20 -0
- package/dist/domains/registry.d.ts.map +1 -0
- package/dist/domains/registry.js +65 -0
- package/dist/domains/registry.js.map +1 -0
- package/dist/domains/types.d.ts +12 -0
- package/dist/domains/types.d.ts.map +1 -0
- package/dist/domains/types.js +2 -0
- package/dist/domains/types.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/sdk/governance.d.ts +121 -0
- package/dist/sdk/governance.d.ts.map +1 -0
- package/dist/sdk/governance.js +219 -0
- package/dist/sdk/governance.js.map +1 -0
- package/dist/src/api/index.d.ts +2 -0
- package/dist/src/api/index.d.ts.map +1 -0
- package/dist/src/api/index.js +2 -0
- package/dist/src/api/index.js.map +1 -0
- package/dist/src/certification/test_runner.d.ts +86 -0
- package/dist/src/certification/test_runner.d.ts.map +1 -0
- package/dist/src/certification/test_runner.js +422 -0
- package/dist/src/certification/test_runner.js.map +1 -0
- package/dist/src/classification/index.d.ts +2 -0
- package/dist/src/classification/index.d.ts.map +1 -0
- package/dist/src/classification/index.js +2 -0
- package/dist/src/classification/index.js.map +1 -0
- package/dist/src/classification/query_classifier.d.ts +13 -0
- package/dist/src/classification/query_classifier.d.ts.map +1 -0
- package/dist/src/classification/query_classifier.js +142 -0
- package/dist/src/classification/query_classifier.js.map +1 -0
- package/dist/src/config/index.d.ts +2 -0
- package/dist/src/config/index.d.ts.map +1 -0
- package/dist/src/config/index.js +2 -0
- package/dist/src/config/index.js.map +1 -0
- package/dist/src/context/index.d.ts +2 -0
- package/dist/src/context/index.d.ts.map +1 -0
- package/dist/src/context/index.js +2 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/gateway/index.d.ts +2 -0
- package/dist/src/gateway/index.d.ts.map +1 -0
- package/dist/src/gateway/index.js +2 -0
- package/dist/src/gateway/index.js.map +1 -0
- package/dist/src/gateway/pre_interaction_governance.d.ts +34 -0
- package/dist/src/gateway/pre_interaction_governance.d.ts.map +1 -0
- package/dist/src/gateway/pre_interaction_governance.js +187 -0
- package/dist/src/gateway/pre_interaction_governance.js.map +1 -0
- package/dist/src/interfaces/entity.d.ts +16 -0
- package/dist/src/interfaces/entity.d.ts.map +1 -0
- package/dist/src/interfaces/entity.js +2 -0
- package/dist/src/interfaces/entity.js.map +1 -0
- package/dist/src/normalization/index.d.ts +2 -0
- package/dist/src/normalization/index.d.ts.map +1 -0
- package/dist/src/normalization/index.js +2 -0
- package/dist/src/normalization/index.js.map +1 -0
- package/dist/src/normalization/response_normalizer.d.ts +30 -0
- package/dist/src/normalization/response_normalizer.d.ts.map +1 -0
- package/dist/src/normalization/response_normalizer.js +224 -0
- package/dist/src/normalization/response_normalizer.js.map +1 -0
- package/dist/src/orchestrator.d.ts +21 -0
- package/dist/src/orchestrator.d.ts.map +1 -0
- package/dist/src/orchestrator.js +355 -0
- package/dist/src/orchestrator.js.map +1 -0
- package/dist/src/policy/index.d.ts +3 -0
- package/dist/src/policy/index.d.ts.map +1 -0
- package/dist/src/policy/index.js +2 -0
- package/dist/src/policy/index.js.map +1 -0
- package/dist/src/policy/policy_engine.d.ts +47 -0
- package/dist/src/policy/policy_engine.d.ts.map +1 -0
- package/dist/src/policy/policy_engine.js +100 -0
- package/dist/src/policy/policy_engine.js.map +1 -0
- package/dist/src/reasoning/index.d.ts +2 -0
- package/dist/src/reasoning/index.d.ts.map +1 -0
- package/dist/src/reasoning/index.js +2 -0
- package/dist/src/reasoning/index.js.map +1 -0
- package/dist/src/reasoning/reasoning_validator.d.ts +28 -0
- package/dist/src/reasoning/reasoning_validator.d.ts.map +1 -0
- package/dist/src/reasoning/reasoning_validator.js +277 -0
- package/dist/src/reasoning/reasoning_validator.js.map +1 -0
- package/dist/src/reasoning/trace_validator.d.ts +33 -0
- package/dist/src/reasoning/trace_validator.d.ts.map +1 -0
- package/dist/src/reasoning/trace_validator.js +251 -0
- package/dist/src/reasoning/trace_validator.js.map +1 -0
- package/dist/src/state/interaction_state.d.ts +59 -0
- package/dist/src/state/interaction_state.d.ts.map +1 -0
- package/dist/src/state/interaction_state.js +75 -0
- package/dist/src/state/interaction_state.js.map +1 -0
- package/dist/src/telemetry/governance_logger.d.ts +36 -0
- package/dist/src/telemetry/governance_logger.d.ts.map +1 -0
- package/dist/src/telemetry/governance_logger.js +32 -0
- package/dist/src/telemetry/governance_logger.js.map +1 -0
- package/dist/src/telemetry/index.d.ts +2 -0
- package/dist/src/telemetry/index.d.ts.map +1 -0
- package/dist/src/telemetry/index.js +2 -0
- package/dist/src/telemetry/index.js.map +1 -0
- package/dist/src/telemetry/metrics.d.ts +49 -0
- package/dist/src/telemetry/metrics.d.ts.map +1 -0
- package/dist/src/telemetry/metrics.js +115 -0
- package/dist/src/telemetry/metrics.js.map +1 -0
- package/dist/src/tools/tool_guard.d.ts +39 -0
- package/dist/src/tools/tool_guard.d.ts.map +1 -0
- package/dist/src/tools/tool_guard.js +226 -0
- package/dist/src/tools/tool_guard.js.map +1 -0
- package/dist/src/types/index.d.ts +65 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +2 -0
- package/dist/src/types/index.js.map +1 -0
- package/domains/finance/policy.yaml +85 -0
- package/domains/health/policy.yaml +95 -0
- package/domains/insurance/policy.yaml +88 -0
- package/package.json +58 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { resolve, dirname } from "path";
|
|
2
|
+
import { fileURLToPath } from "url";
|
|
3
|
+
import { existsSync } from "fs";
|
|
4
|
+
import { PolicyEngine } from "../src/policy/policy_engine.js";
|
|
5
|
+
import { healthEntityRules } from "./health/entity_rules.js";
|
|
6
|
+
import { financeEntityRules } from "./finance/entity_rules.js";
|
|
7
|
+
import { insuranceEntityRules } from "./insurance/entity_rules.js";
|
|
8
|
+
const currentDir = dirname(fileURLToPath(import.meta.url));
|
|
9
|
+
const BUILTIN_ENTITY_RULES = {
|
|
10
|
+
health: healthEntityRules,
|
|
11
|
+
finance: financeEntityRules,
|
|
12
|
+
insurance: insuranceEntityRules,
|
|
13
|
+
};
|
|
14
|
+
export class DomainRegistry {
|
|
15
|
+
domains = new Map();
|
|
16
|
+
defaultDomain;
|
|
17
|
+
constructor(defaultDomain = "health") {
|
|
18
|
+
this.defaultDomain = defaultDomain;
|
|
19
|
+
this.loadBuiltinDomains();
|
|
20
|
+
}
|
|
21
|
+
loadBuiltinDomains() {
|
|
22
|
+
const domainNames = ["health", "finance", "insurance"];
|
|
23
|
+
for (const name of domainNames) {
|
|
24
|
+
const policyPath = resolve(currentDir, name, "policy.yaml");
|
|
25
|
+
if (!existsSync(policyPath)) {
|
|
26
|
+
console.warn(`[domain-registry] Policy file not found for domain '${name}': ${policyPath}`);
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
const policyEngine = new PolicyEngine(policyPath);
|
|
30
|
+
const entityRules = BUILTIN_ENTITY_RULES[name];
|
|
31
|
+
if (!entityRules) {
|
|
32
|
+
console.warn(`[domain-registry] Entity rules not found for domain '${name}'`);
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
this.domains.set(name, { policyEngine, entityRules });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
registerDomain(name, config) {
|
|
39
|
+
this.domains.set(name, config);
|
|
40
|
+
}
|
|
41
|
+
getDomain(name) {
|
|
42
|
+
const domainName = name || this.defaultDomain;
|
|
43
|
+
const config = this.domains.get(domainName);
|
|
44
|
+
if (!config) {
|
|
45
|
+
throw new Error(`Domain '${domainName}' is not registered. Available domains: ${this.listDomains().join(", ")}`);
|
|
46
|
+
}
|
|
47
|
+
return config;
|
|
48
|
+
}
|
|
49
|
+
hasDomain(name) {
|
|
50
|
+
return this.domains.has(name);
|
|
51
|
+
}
|
|
52
|
+
listDomains() {
|
|
53
|
+
return [...this.domains.keys()];
|
|
54
|
+
}
|
|
55
|
+
getDefaultDomain() {
|
|
56
|
+
return this.defaultDomain;
|
|
57
|
+
}
|
|
58
|
+
getPolicyEngine(domain) {
|
|
59
|
+
return this.getDomain(domain).policyEngine;
|
|
60
|
+
}
|
|
61
|
+
getEntityRules(domain) {
|
|
62
|
+
return this.getDomain(domain).entityRules;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../domains/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface DomainEntityRules {
|
|
2
|
+
domain: string;
|
|
3
|
+
entityLabel: string;
|
|
4
|
+
entityLabelPlural: string;
|
|
5
|
+
numericIdPattern: RegExp;
|
|
6
|
+
numericIdFallbackPattern: RegExp;
|
|
7
|
+
notFoundResponse: (id: string) => string;
|
|
8
|
+
ambiguousResponse: (suggestion: string) => string;
|
|
9
|
+
entityNotFoundResponse: string;
|
|
10
|
+
stopWords: string[];
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../domains/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,wBAAwB,EAAE,MAAM,CAAC;IACjC,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,MAAM,CAAC;IACzC,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC;IAClD,sBAAsB,EAAE,MAAM,CAAC;IAC/B,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../domains/types.ts"],"names":[],"mappings":""}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export { runGovernance } from "./src/orchestrator";
|
|
2
|
+
export type { GovernancePipelineConfig } from "./src/orchestrator";
|
|
3
|
+
export type { GovernanceContext, GovernanceLLMCall, GovernanceLLMResult, GovernanceResult, GovernanceRetrievalContext, GovernanceToolCall, } from "./src/types";
|
|
4
|
+
export { governance, createGovernance } from "./sdk/governance";
|
|
5
|
+
export type { GovernanceRunContext, GovernanceRunResult, GovernanceViolation, GovernanceSDKOptions, GovernanceToolCallInput, GovernanceToolGuardResult, GovernanceTraceViolation, GovernanceTraceValidationResult, } from "./sdk/governance";
|
|
6
|
+
export type { EntityIdentity, IEntityIdentityRepository, EntityResolution, IEntityResolver, } from "./src/interfaces/entity";
|
|
7
|
+
export { DomainRegistry } from "./domains/registry";
|
|
8
|
+
export type { DomainConfig } from "./domains/registry";
|
|
9
|
+
export type { DomainEntityRules } from "./domains/types";
|
|
10
|
+
export { PolicyEngine } from "./src/policy/policy_engine";
|
|
11
|
+
export type { IPolicyEngine, PolicyDefinition, BlockedQueryPolicy, PrivacyRule, SafetyRule, } from "./src/policy/policy_engine";
|
|
12
|
+
export { QueryClassifier } from "./src/classification/query_classifier";
|
|
13
|
+
export type { IQueryClassifier } from "./src/classification/query_classifier";
|
|
14
|
+
export { PreInteractionGovernance } from "./src/gateway/pre_interaction_governance";
|
|
15
|
+
export type { IPreInteractionGovernance } from "./src/gateway/pre_interaction_governance";
|
|
16
|
+
export { PostInteractionGovernance } from "./src/reasoning/reasoning_validator";
|
|
17
|
+
export type { IPostInteractionGovernance } from "./src/reasoning/reasoning_validator";
|
|
18
|
+
export { ResponseNormalizer } from "./src/normalization/response_normalizer";
|
|
19
|
+
export type { IResponseNormalizer } from "./src/normalization/response_normalizer";
|
|
20
|
+
export { GovernanceLogger } from "./src/telemetry/governance_logger";
|
|
21
|
+
export type { IGovernanceLogger, GovernanceLogEntry } from "./src/telemetry/governance_logger";
|
|
22
|
+
export { InteractionStateManager } from "./src/state/interaction_state";
|
|
23
|
+
export type { IInteractionStateManager, InteractionSessionState, SessionStateUpdate, GovernanceDecisionRecord, ReferencedEntity, ConversationEntry, } from "./src/state/interaction_state";
|
|
24
|
+
export { ToolGuard } from "./src/tools/tool_guard";
|
|
25
|
+
export type { IToolGuard, ToolRequest, ToolGuardResult, ToolViolation, ToolPolicyRule, } from "./src/tools/tool_guard";
|
|
26
|
+
export { GovernanceMetricsAggregator } from "./src/telemetry/metrics";
|
|
27
|
+
export type { IGovernanceMetricsAggregator, GovernanceMetrics, DomainMetrics, } from "./src/telemetry/metrics";
|
|
28
|
+
export { CertificationTestRunner } from "./src/certification/test_runner";
|
|
29
|
+
export type { ICertificationTestRunner, UATScenario, ScenarioResult, CertificationReport, CertificationOptions, CategoryScore, DomainScore, } from "./src/certification/test_runner";
|
|
30
|
+
export { TraceValidator } from "./src/reasoning/trace_validator";
|
|
31
|
+
export type { ITraceValidator, TraceInput, TraceViolation, TraceValidationResult, } from "./src/reasoning/trace_validator";
|
|
32
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAEnE,YAAY,EACV,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,gBAAgB,EAChB,0BAA0B,EAC1B,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAChE,YAAY,EACV,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,+BAA+B,GAChC,MAAM,kBAAkB,CAAC;AAE1B,YAAY,EACV,cAAc,EACd,yBAAyB,EACzB,gBAAgB,EAChB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,YAAY,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACvD,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,kBAAkB,EAClB,WAAW,EACX,UAAU,GACX,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AACxE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAE9E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACpF,YAAY,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAE1F,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAChF,YAAY,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEtF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAC7E,YAAY,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAC;AAEnF,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,YAAY,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAE/F,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AACxE,YAAY,EACV,wBAAwB,EACxB,uBAAuB,EACvB,kBAAkB,EAClB,wBAAwB,EACxB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,+BAA+B,CAAC;AAEvC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,YAAY,EACV,UAAU,EACV,WAAW,EACX,eAAe,EACf,aAAa,EACb,cAAc,GACf,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,YAAY,EACV,4BAA4B,EAC5B,iBAAiB,EACjB,aAAa,GACd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EACV,wBAAwB,EACxB,WAAW,EACX,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,aAAa,EACb,WAAW,GACZ,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,YAAY,EACV,eAAe,EACf,UAAU,EACV,cAAc,EACd,qBAAqB,GACtB,MAAM,iCAAiC,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export { runGovernance } from "./src/orchestrator.js";
|
|
2
|
+
export { governance, createGovernance } from "./sdk/governance.js";
|
|
3
|
+
export { DomainRegistry } from "./domains/registry.js";
|
|
4
|
+
export { PolicyEngine } from "./src/policy/policy_engine.js";
|
|
5
|
+
export { QueryClassifier } from "./src/classification/query_classifier.js";
|
|
6
|
+
export { PreInteractionGovernance } from "./src/gateway/pre_interaction_governance.js";
|
|
7
|
+
export { PostInteractionGovernance } from "./src/reasoning/reasoning_validator.js";
|
|
8
|
+
export { ResponseNormalizer } from "./src/normalization/response_normalizer.js";
|
|
9
|
+
export { GovernanceLogger } from "./src/telemetry/governance_logger.js";
|
|
10
|
+
export { InteractionStateManager } from "./src/state/interaction_state.js";
|
|
11
|
+
export { ToolGuard } from "./src/tools/tool_guard.js";
|
|
12
|
+
export { GovernanceMetricsAggregator } from "./src/telemetry/metrics.js";
|
|
13
|
+
export { CertificationTestRunner } from "./src/certification/test_runner.js";
|
|
14
|
+
export { TraceValidator } from "./src/reasoning/trace_validator.js";
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAYnD,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAmBhE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAS1D,OAAO,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAGxE,OAAO,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAGpF,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AAGhF,OAAO,EAAE,kBAAkB,EAAE,MAAM,yCAAyC,CAAC;AAG7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,OAAO,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAUxE,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AASnD,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AAOtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAW1E,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
export interface GovernanceToolCallInput {
|
|
2
|
+
toolName: string;
|
|
3
|
+
parameters: Record<string, any>;
|
|
4
|
+
}
|
|
5
|
+
export interface GovernanceToolGuardResult {
|
|
6
|
+
allowed: boolean;
|
|
7
|
+
blockedReason: string | null;
|
|
8
|
+
violations: Array<{
|
|
9
|
+
rule: string;
|
|
10
|
+
severity: string;
|
|
11
|
+
description: string;
|
|
12
|
+
}>;
|
|
13
|
+
toolName: string;
|
|
14
|
+
sanitizedParameters: Record<string, any> | null;
|
|
15
|
+
}
|
|
16
|
+
export interface GovernanceRunContext {
|
|
17
|
+
sessionPatientId?: string | null;
|
|
18
|
+
retrievalContext?: {
|
|
19
|
+
patientId?: string | null;
|
|
20
|
+
patientName?: string | null;
|
|
21
|
+
biomarkerData?: Array<{
|
|
22
|
+
biomarkerId: string;
|
|
23
|
+
value: number;
|
|
24
|
+
unit?: string;
|
|
25
|
+
sourceDocumentId?: string;
|
|
26
|
+
name?: string;
|
|
27
|
+
}>;
|
|
28
|
+
documents?: Array<{
|
|
29
|
+
documentId: string;
|
|
30
|
+
reportDate?: string;
|
|
31
|
+
rawText?: string;
|
|
32
|
+
}>;
|
|
33
|
+
extractedData?: any;
|
|
34
|
+
retrievalConfidence?: number;
|
|
35
|
+
};
|
|
36
|
+
reasoningMode?: string;
|
|
37
|
+
isRefinement?: boolean;
|
|
38
|
+
previousResponse?: string | null;
|
|
39
|
+
conversationSummary?: string | null;
|
|
40
|
+
activeTopic?: string | null;
|
|
41
|
+
patientSnapshotSummary?: string | null;
|
|
42
|
+
}
|
|
43
|
+
export interface GovernanceViolation {
|
|
44
|
+
type: string;
|
|
45
|
+
severity: string;
|
|
46
|
+
description: string;
|
|
47
|
+
}
|
|
48
|
+
export interface GovernanceTraceViolation {
|
|
49
|
+
type: string;
|
|
50
|
+
severity: string;
|
|
51
|
+
description: string;
|
|
52
|
+
}
|
|
53
|
+
export interface GovernanceTraceValidationResult {
|
|
54
|
+
valid: boolean;
|
|
55
|
+
violations: GovernanceTraceViolation[];
|
|
56
|
+
adjustedConfidence: number;
|
|
57
|
+
adjustedConfidenceLabel: string;
|
|
58
|
+
shouldBlock: boolean;
|
|
59
|
+
}
|
|
60
|
+
export interface GovernanceRunResult {
|
|
61
|
+
status: "allowed" | "blocked";
|
|
62
|
+
answer: string;
|
|
63
|
+
evidence: string[];
|
|
64
|
+
confidence: string;
|
|
65
|
+
violations: GovernanceViolation[];
|
|
66
|
+
classification: {
|
|
67
|
+
type: string;
|
|
68
|
+
confidence: number;
|
|
69
|
+
triggers: string[];
|
|
70
|
+
};
|
|
71
|
+
blockedStage: string | null;
|
|
72
|
+
blockedReason: string | null;
|
|
73
|
+
llmCalled: boolean;
|
|
74
|
+
domain: string;
|
|
75
|
+
sessionId: string | null;
|
|
76
|
+
toolGuardResults: GovernanceToolGuardResult[];
|
|
77
|
+
traceValidation: GovernanceTraceValidationResult | null;
|
|
78
|
+
}
|
|
79
|
+
export interface GovernanceSDKOptions {
|
|
80
|
+
baseUrl?: string;
|
|
81
|
+
timeoutMs?: number;
|
|
82
|
+
}
|
|
83
|
+
declare class GovernanceSDK {
|
|
84
|
+
private baseUrl;
|
|
85
|
+
private timeoutMs;
|
|
86
|
+
constructor(options?: GovernanceSDKOptions);
|
|
87
|
+
run(query: string, context?: GovernanceRunContext, domain?: string, sessionId?: string, toolCalls?: GovernanceToolCallInput[]): Promise<GovernanceRunResult>;
|
|
88
|
+
checkTool(toolName: string, parameters?: Record<string, any>, sessionId?: string, domain?: string): Promise<GovernanceToolGuardResult>;
|
|
89
|
+
certifyAgent(options?: {
|
|
90
|
+
domain?: string;
|
|
91
|
+
categories?: string[];
|
|
92
|
+
scenarioIds?: string[];
|
|
93
|
+
scenarios?: Array<{
|
|
94
|
+
id: string;
|
|
95
|
+
name: string;
|
|
96
|
+
description?: string;
|
|
97
|
+
domain?: string;
|
|
98
|
+
category?: string;
|
|
99
|
+
query: string;
|
|
100
|
+
context?: Record<string, any>;
|
|
101
|
+
expectedOutcome?: string;
|
|
102
|
+
expectedBlockStage?: string | null;
|
|
103
|
+
forbiddenPatterns?: string[];
|
|
104
|
+
requiredPatterns?: string[];
|
|
105
|
+
toolCalls?: Array<{
|
|
106
|
+
toolName: string;
|
|
107
|
+
parameters: Record<string, any>;
|
|
108
|
+
}>;
|
|
109
|
+
}>;
|
|
110
|
+
timeoutMs?: number;
|
|
111
|
+
}): Promise<Record<string, any>>;
|
|
112
|
+
metrics(): Promise<Record<string, any>>;
|
|
113
|
+
health(): Promise<{
|
|
114
|
+
status: string;
|
|
115
|
+
service: string;
|
|
116
|
+
}>;
|
|
117
|
+
}
|
|
118
|
+
export declare function createGovernance(options?: GovernanceSDKOptions): GovernanceSDK;
|
|
119
|
+
export declare const governance: GovernanceSDK;
|
|
120
|
+
export {};
|
|
121
|
+
//# sourceMappingURL=governance.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../sdk/governance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
const DEFAULT_BASE_URL = "http://localhost:8000";
|
|
2
|
+
const DEFAULT_TIMEOUT_MS = 30_000;
|
|
3
|
+
class GovernanceSDK {
|
|
4
|
+
baseUrl;
|
|
5
|
+
timeoutMs;
|
|
6
|
+
constructor(options) {
|
|
7
|
+
this.baseUrl = (options?.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
|
|
8
|
+
this.timeoutMs = options?.timeoutMs ?? DEFAULT_TIMEOUT_MS;
|
|
9
|
+
}
|
|
10
|
+
async run(query, context, domain, sessionId, toolCalls) {
|
|
11
|
+
const controller = new AbortController();
|
|
12
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
13
|
+
try {
|
|
14
|
+
const res = await fetch(`${this.baseUrl}/governed-query`, {
|
|
15
|
+
method: "POST",
|
|
16
|
+
headers: { "Content-Type": "application/json" },
|
|
17
|
+
body: JSON.stringify({
|
|
18
|
+
query,
|
|
19
|
+
context: {
|
|
20
|
+
sessionPatientId: context?.sessionPatientId ?? null,
|
|
21
|
+
retrievalContext: context?.retrievalContext,
|
|
22
|
+
reasoningMode: context?.reasoningMode,
|
|
23
|
+
isRefinement: context?.isRefinement,
|
|
24
|
+
previousResponse: context?.previousResponse,
|
|
25
|
+
conversationSummary: context?.conversationSummary,
|
|
26
|
+
activeTopic: context?.activeTopic,
|
|
27
|
+
patientSnapshotSummary: context?.patientSnapshotSummary,
|
|
28
|
+
},
|
|
29
|
+
domain,
|
|
30
|
+
sessionId,
|
|
31
|
+
toolCalls,
|
|
32
|
+
}),
|
|
33
|
+
signal: controller.signal,
|
|
34
|
+
});
|
|
35
|
+
if (!res.ok) {
|
|
36
|
+
const body = await res.text().catch(() => "");
|
|
37
|
+
throw new Error(`Governance API returned HTTP ${res.status}${body ? `: ${body}` : ""}`);
|
|
38
|
+
}
|
|
39
|
+
const data = await res.json();
|
|
40
|
+
if (typeof data.response !== "string") {
|
|
41
|
+
throw new Error("Governance API returned malformed response: missing 'response' field");
|
|
42
|
+
}
|
|
43
|
+
if (typeof data.blocked !== "boolean") {
|
|
44
|
+
throw new Error("Governance API returned malformed response: missing 'blocked' field");
|
|
45
|
+
}
|
|
46
|
+
return {
|
|
47
|
+
status: data.blocked ? "blocked" : "allowed",
|
|
48
|
+
answer: data.response,
|
|
49
|
+
evidence: data.normalization?.evidence ?? [],
|
|
50
|
+
confidence: data.normalization?.confidenceLabel ?? "unknown",
|
|
51
|
+
violations: (data.violations ?? []).map((v) => ({
|
|
52
|
+
type: v.type ?? "unknown",
|
|
53
|
+
severity: v.severity ?? "medium",
|
|
54
|
+
description: v.description ?? "",
|
|
55
|
+
})),
|
|
56
|
+
classification: {
|
|
57
|
+
type: data.classification?.type ?? "unknown",
|
|
58
|
+
confidence: data.classification?.confidence ?? 0,
|
|
59
|
+
triggers: data.classification?.triggers ?? [],
|
|
60
|
+
},
|
|
61
|
+
blockedStage: data.blockedStage ?? null,
|
|
62
|
+
blockedReason: data.blockedReason ?? null,
|
|
63
|
+
llmCalled: data.llmCalled ?? false,
|
|
64
|
+
domain: data.domain,
|
|
65
|
+
sessionId: data.sessionId ?? null,
|
|
66
|
+
toolGuardResults: (data.toolGuardResults ?? []).map((t) => ({
|
|
67
|
+
allowed: t.allowed ?? true,
|
|
68
|
+
blockedReason: t.blockedReason ?? null,
|
|
69
|
+
violations: (t.violations ?? []).map((v) => ({
|
|
70
|
+
rule: v.rule ?? "unknown",
|
|
71
|
+
severity: v.severity ?? "medium",
|
|
72
|
+
description: v.description ?? "",
|
|
73
|
+
})),
|
|
74
|
+
toolName: t.toolName ?? "unknown",
|
|
75
|
+
sanitizedParameters: t.sanitizedParameters ?? null,
|
|
76
|
+
})),
|
|
77
|
+
traceValidation: data.traceValidation
|
|
78
|
+
? {
|
|
79
|
+
valid: data.traceValidation.valid ?? true,
|
|
80
|
+
violations: (data.traceValidation.violations ?? []).map((v) => ({
|
|
81
|
+
type: v.type ?? "unknown",
|
|
82
|
+
severity: v.severity ?? "medium",
|
|
83
|
+
description: v.description ?? "",
|
|
84
|
+
})),
|
|
85
|
+
adjustedConfidence: data.traceValidation.adjustedConfidence ?? 0,
|
|
86
|
+
adjustedConfidenceLabel: data.traceValidation.adjustedConfidenceLabel ?? "unknown",
|
|
87
|
+
shouldBlock: data.traceValidation.shouldBlock ?? false,
|
|
88
|
+
}
|
|
89
|
+
: null,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
catch (err) {
|
|
93
|
+
if (err.name === "AbortError") {
|
|
94
|
+
throw new Error(`Governance API request timed out after ${this.timeoutMs}ms`);
|
|
95
|
+
}
|
|
96
|
+
throw err;
|
|
97
|
+
}
|
|
98
|
+
finally {
|
|
99
|
+
clearTimeout(timer);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
async checkTool(toolName, parameters, sessionId, domain) {
|
|
103
|
+
const controller = new AbortController();
|
|
104
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
105
|
+
try {
|
|
106
|
+
const res = await fetch(`${this.baseUrl}/tool-check`, {
|
|
107
|
+
method: "POST",
|
|
108
|
+
headers: { "Content-Type": "application/json" },
|
|
109
|
+
body: JSON.stringify({
|
|
110
|
+
toolName,
|
|
111
|
+
parameters: parameters ?? {},
|
|
112
|
+
sessionId,
|
|
113
|
+
domain,
|
|
114
|
+
}),
|
|
115
|
+
signal: controller.signal,
|
|
116
|
+
});
|
|
117
|
+
if (!res.ok) {
|
|
118
|
+
const body = await res.text().catch(() => "");
|
|
119
|
+
throw new Error(`Governance API tool-check returned HTTP ${res.status}${body ? `: ${body}` : ""}`);
|
|
120
|
+
}
|
|
121
|
+
const data = await res.json();
|
|
122
|
+
return {
|
|
123
|
+
allowed: data.allowed ?? true,
|
|
124
|
+
blockedReason: data.blockedReason ?? null,
|
|
125
|
+
violations: (data.violations ?? []).map((v) => ({
|
|
126
|
+
rule: v.rule ?? "unknown",
|
|
127
|
+
severity: v.severity ?? "medium",
|
|
128
|
+
description: v.description ?? "",
|
|
129
|
+
})),
|
|
130
|
+
toolName: data.toolName ?? toolName,
|
|
131
|
+
sanitizedParameters: data.sanitizedParameters ?? null,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
catch (err) {
|
|
135
|
+
if (err.name === "AbortError") {
|
|
136
|
+
throw new Error(`Governance API tool-check timed out after ${this.timeoutMs}ms`);
|
|
137
|
+
}
|
|
138
|
+
throw err;
|
|
139
|
+
}
|
|
140
|
+
finally {
|
|
141
|
+
clearTimeout(timer);
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
async certifyAgent(options) {
|
|
145
|
+
const controller = new AbortController();
|
|
146
|
+
const timer = setTimeout(() => controller.abort(), Math.max(this.timeoutMs, 120_000));
|
|
147
|
+
try {
|
|
148
|
+
const res = await fetch(`${this.baseUrl}/certify-agent`, {
|
|
149
|
+
method: "POST",
|
|
150
|
+
headers: { "Content-Type": "application/json" },
|
|
151
|
+
body: JSON.stringify(options ?? {}),
|
|
152
|
+
signal: controller.signal,
|
|
153
|
+
});
|
|
154
|
+
if (!res.ok) {
|
|
155
|
+
const body = await res.text().catch(() => "");
|
|
156
|
+
throw new Error(`Certification request failed with HTTP ${res.status}${body ? `: ${body}` : ""}`);
|
|
157
|
+
}
|
|
158
|
+
return res.json();
|
|
159
|
+
}
|
|
160
|
+
catch (err) {
|
|
161
|
+
if (err.name === "AbortError") {
|
|
162
|
+
throw new Error(`Governance API certification request timed out`);
|
|
163
|
+
}
|
|
164
|
+
throw err;
|
|
165
|
+
}
|
|
166
|
+
finally {
|
|
167
|
+
clearTimeout(timer);
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
async metrics() {
|
|
171
|
+
const controller = new AbortController();
|
|
172
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
173
|
+
try {
|
|
174
|
+
const res = await fetch(`${this.baseUrl}/governance-metrics`, {
|
|
175
|
+
signal: controller.signal,
|
|
176
|
+
});
|
|
177
|
+
if (!res.ok) {
|
|
178
|
+
throw new Error(`Metrics request failed with HTTP ${res.status}`);
|
|
179
|
+
}
|
|
180
|
+
return res.json();
|
|
181
|
+
}
|
|
182
|
+
catch (err) {
|
|
183
|
+
if (err.name === "AbortError") {
|
|
184
|
+
throw new Error(`Governance API metrics request timed out after ${this.timeoutMs}ms`);
|
|
185
|
+
}
|
|
186
|
+
throw err;
|
|
187
|
+
}
|
|
188
|
+
finally {
|
|
189
|
+
clearTimeout(timer);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
async health() {
|
|
193
|
+
const controller = new AbortController();
|
|
194
|
+
const timer = setTimeout(() => controller.abort(), this.timeoutMs);
|
|
195
|
+
try {
|
|
196
|
+
const res = await fetch(`${this.baseUrl}/health`, {
|
|
197
|
+
signal: controller.signal,
|
|
198
|
+
});
|
|
199
|
+
if (!res.ok) {
|
|
200
|
+
throw new Error(`Health check failed with HTTP ${res.status}`);
|
|
201
|
+
}
|
|
202
|
+
return res.json();
|
|
203
|
+
}
|
|
204
|
+
catch (err) {
|
|
205
|
+
if (err.name === "AbortError") {
|
|
206
|
+
throw new Error(`Governance API health check timed out after ${this.timeoutMs}ms`);
|
|
207
|
+
}
|
|
208
|
+
throw err;
|
|
209
|
+
}
|
|
210
|
+
finally {
|
|
211
|
+
clearTimeout(timer);
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
export function createGovernance(options) {
|
|
216
|
+
return new GovernanceSDK(options);
|
|
217
|
+
}
|
|
218
|
+
export const governance = new GovernanceSDK();
|
|
219
|
+
//# sourceMappingURL=governance.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"governance.js","sourceRoot":"","sources":["../../sdk/governance.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/api/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { type GovernancePipelineConfig } from "../orchestrator";
|
|
2
|
+
import type { GovernanceContext, GovernanceLLMCall } from "../types";
|
|
3
|
+
export interface UATScenario {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
description: string;
|
|
7
|
+
domain: string;
|
|
8
|
+
category: "safety" | "hallucination" | "privacy" | "boundary" | "accuracy" | "tool_governance";
|
|
9
|
+
query: string;
|
|
10
|
+
context: GovernanceContext;
|
|
11
|
+
expectedOutcome: "blocked" | "allowed";
|
|
12
|
+
expectedBlockStage?: string | null;
|
|
13
|
+
forbiddenPatterns?: RegExp[];
|
|
14
|
+
requiredPatterns?: RegExp[];
|
|
15
|
+
toolCalls?: Array<{
|
|
16
|
+
toolName: string;
|
|
17
|
+
parameters: Record<string, any>;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export interface ScenarioResult {
|
|
21
|
+
scenarioId: string;
|
|
22
|
+
scenarioName: string;
|
|
23
|
+
category: string;
|
|
24
|
+
domain: string;
|
|
25
|
+
passed: boolean;
|
|
26
|
+
expectedOutcome: string;
|
|
27
|
+
actualOutcome: string;
|
|
28
|
+
blocked: boolean;
|
|
29
|
+
blockedStage: string | null;
|
|
30
|
+
violations: Array<{
|
|
31
|
+
type: string;
|
|
32
|
+
severity: string;
|
|
33
|
+
description: string;
|
|
34
|
+
}>;
|
|
35
|
+
traceValid: boolean | null;
|
|
36
|
+
failureReasons: string[];
|
|
37
|
+
durationMs: number;
|
|
38
|
+
}
|
|
39
|
+
export interface CertificationReport {
|
|
40
|
+
certificationId: string;
|
|
41
|
+
timestamp: string;
|
|
42
|
+
durationMs: number;
|
|
43
|
+
totalScenarios: number;
|
|
44
|
+
passed: number;
|
|
45
|
+
failed: number;
|
|
46
|
+
passRate: number;
|
|
47
|
+
safetyViolations: number;
|
|
48
|
+
hallucinationRate: number;
|
|
49
|
+
overallReliabilityScore: number;
|
|
50
|
+
byCategory: Record<string, CategoryScore>;
|
|
51
|
+
byDomain: Record<string, DomainScore>;
|
|
52
|
+
scenarios: ScenarioResult[];
|
|
53
|
+
verdict: "certified" | "conditional" | "failed";
|
|
54
|
+
}
|
|
55
|
+
export interface CategoryScore {
|
|
56
|
+
total: number;
|
|
57
|
+
passed: number;
|
|
58
|
+
failed: number;
|
|
59
|
+
passRate: number;
|
|
60
|
+
}
|
|
61
|
+
export interface DomainScore {
|
|
62
|
+
total: number;
|
|
63
|
+
passed: number;
|
|
64
|
+
failed: number;
|
|
65
|
+
passRate: number;
|
|
66
|
+
}
|
|
67
|
+
export interface ICertificationTestRunner {
|
|
68
|
+
loadScenarios(scenarios: UATScenario[]): void;
|
|
69
|
+
getScenarios(): UATScenario[];
|
|
70
|
+
run(agentCall: GovernanceLLMCall, pipelineConfig: GovernancePipelineConfig, options?: CertificationOptions): Promise<CertificationReport>;
|
|
71
|
+
}
|
|
72
|
+
export interface CertificationOptions {
|
|
73
|
+
domain?: string;
|
|
74
|
+
categories?: string[];
|
|
75
|
+
scenarioIds?: string[];
|
|
76
|
+
timeoutMs?: number;
|
|
77
|
+
}
|
|
78
|
+
export declare class CertificationTestRunner implements ICertificationTestRunner {
|
|
79
|
+
private scenarios;
|
|
80
|
+
loadScenarios(scenarios: UATScenario[]): void;
|
|
81
|
+
getScenarios(): UATScenario[];
|
|
82
|
+
run(agentCall: GovernanceLLMCall, pipelineConfig: GovernancePipelineConfig, options?: CertificationOptions): Promise<CertificationReport>;
|
|
83
|
+
private executeScenario;
|
|
84
|
+
private buildReport;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=test_runner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test_runner.d.ts","sourceRoot":"","sources":["../../../src/certification/test_runner.ts"],"names":[],"mappings":"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"}
|