@aduek/ne-sy 0.1.0-alpha.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 +92 -0
- package/dist/adapters.d.ts +13 -0
- package/dist/adapters.d.ts.map +1 -0
- package/dist/adapters.js +20 -0
- package/dist/audit.d.ts +14 -0
- package/dist/audit.d.ts.map +1 -0
- package/dist/audit.js +129 -0
- package/dist/capabilities.d.ts +10 -0
- package/dist/capabilities.d.ts.map +1 -0
- package/dist/capabilities.js +89 -0
- package/dist/evidence.d.ts +19 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +48 -0
- package/dist/hubspot.d.ts +59 -0
- package/dist/hubspot.d.ts.map +1 -0
- package/dist/hubspot.js +175 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +11 -0
- package/dist/ir.d.ts +104 -0
- package/dist/ir.d.ts.map +1 -0
- package/dist/ir.js +859 -0
- package/dist/metering.d.ts +53 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/metering.js +224 -0
- package/dist/openaiAgents.d.ts +29 -0
- package/dist/openaiAgents.d.ts.map +1 -0
- package/dist/openaiAgents.js +81 -0
- package/dist/policy.d.ts +12 -0
- package/dist/policy.d.ts.map +1 -0
- package/dist/policy.js +362 -0
- package/dist/types.d.ts +112 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +71 -0
- package/dist/utils.d.ts +13 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +51 -0
- package/dist/validation.d.ts +14 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +226 -0
- package/dist/verifier.d.ts +13 -0
- package/dist/verifier.d.ts.map +1 -0
- package/dist/verifier.js +69 -0
- package/package.json +60 -0
package/dist/hubspot.js
ADDED
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { readFileSync } from "node:fs";
|
|
2
|
+
import { isRecord } from "./utils.js";
|
|
3
|
+
const SUPPORTED_OUTCOME_TYPES = new Set([
|
|
4
|
+
"resolved_conversation",
|
|
5
|
+
"qualified_lead_recommended",
|
|
6
|
+
"workflow_completed",
|
|
7
|
+
]);
|
|
8
|
+
const REQUIRED_EVENT_FIELDS = [
|
|
9
|
+
"id",
|
|
10
|
+
"portalId",
|
|
11
|
+
"appId",
|
|
12
|
+
"agentId",
|
|
13
|
+
"outcomeType",
|
|
14
|
+
"idempotencyKey",
|
|
15
|
+
"occurredAt",
|
|
16
|
+
];
|
|
17
|
+
export function loadHubSpotOutcomeEvents(path) {
|
|
18
|
+
const payload = JSON.parse(readFileSync(path, "utf8"));
|
|
19
|
+
if (!Array.isArray(payload)) {
|
|
20
|
+
throw new Error("HubSpot outcome fixture must be a JSON array");
|
|
21
|
+
}
|
|
22
|
+
return payload;
|
|
23
|
+
}
|
|
24
|
+
export function classifyHubSpotOutcomes(events) {
|
|
25
|
+
const seen = new Map();
|
|
26
|
+
const records = [];
|
|
27
|
+
for (const event of events) {
|
|
28
|
+
const record = classifyEvent(event, seen);
|
|
29
|
+
records.push(record);
|
|
30
|
+
if (record.idempotencyKey !== null && record.rejectionReason !== "duplicate_idempotency_key") {
|
|
31
|
+
seen.set(record.idempotencyKey, record);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return { records, summary: summarizeHubSpotOutcomes(records) };
|
|
35
|
+
}
|
|
36
|
+
export function summarizeHubSpotOutcomes(records) {
|
|
37
|
+
const recordList = Array.from(records);
|
|
38
|
+
return {
|
|
39
|
+
totalRecords: recordList.length,
|
|
40
|
+
billableRecords: recordList.filter((record) => record.billable).length,
|
|
41
|
+
exportEligibleRecords: recordList.filter((record) => record.exportEligible).length,
|
|
42
|
+
byLifecycleState: count(recordList, (record) => record.lifecycleState),
|
|
43
|
+
byOutcomeType: count(recordList, (record) => record.outcomeType),
|
|
44
|
+
byRejectionReason: count(recordList, (record) => record.rejectionReason),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
export function exportHubSpotCreditsRows(records) {
|
|
48
|
+
return Array.from(records)
|
|
49
|
+
.filter((record) => record.exportEligible)
|
|
50
|
+
.map((record) => ({
|
|
51
|
+
portalId: record.portalId,
|
|
52
|
+
appId: record.appId,
|
|
53
|
+
outcomeType: record.outcomeType,
|
|
54
|
+
idempotencyKey: record.idempotencyKey,
|
|
55
|
+
lifecycleState: record.lifecycleState,
|
|
56
|
+
quantity: record.adjustmentQuantity,
|
|
57
|
+
sourceEventId: record.eventId,
|
|
58
|
+
reversalOf: record.reversalOf,
|
|
59
|
+
occurredAt: record.occurredAt,
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
export function exportHubSpotInvoiceLineRows(records) {
|
|
63
|
+
return Array.from(records)
|
|
64
|
+
.filter((record) => record.exportEligible)
|
|
65
|
+
.map((record) => {
|
|
66
|
+
const direction = record.adjustmentQuantity < 0 ? "adjustment" : "outcome";
|
|
67
|
+
return {
|
|
68
|
+
portalId: record.portalId,
|
|
69
|
+
appId: record.appId,
|
|
70
|
+
agentId: record.agentId,
|
|
71
|
+
outcomeType: record.outcomeType,
|
|
72
|
+
idempotencyKey: record.idempotencyKey,
|
|
73
|
+
quantity: record.adjustmentQuantity,
|
|
74
|
+
description: `HubSpot-shaped ${direction}: ${record.outcomeType}`,
|
|
75
|
+
sourceEventId: record.eventId,
|
|
76
|
+
reversalOf: record.reversalOf,
|
|
77
|
+
occurredAt: record.occurredAt,
|
|
78
|
+
};
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
function classifyEvent(event, seen) {
|
|
82
|
+
const base = baseFields(event);
|
|
83
|
+
if (!isRecord(event) || REQUIRED_EVENT_FIELDS.some((field) => stringOrNull(event[field]) === null)) {
|
|
84
|
+
return makeRecord(base, "rejected", false, false, 0, "malformed_event");
|
|
85
|
+
}
|
|
86
|
+
if (!SUPPORTED_OUTCOME_TYPES.has(base.outcomeType ?? "")) {
|
|
87
|
+
return makeRecord(base, "rejected", false, false, 0, "unsupported_outcome_type");
|
|
88
|
+
}
|
|
89
|
+
if (base.idempotencyKey !== null && seen.has(base.idempotencyKey)) {
|
|
90
|
+
return makeRecord(base, "rejected", false, false, 0, "duplicate_idempotency_key");
|
|
91
|
+
}
|
|
92
|
+
const reversalOf = stringOrNull(event.reversalOf);
|
|
93
|
+
if (reversalOf !== null) {
|
|
94
|
+
const target = seen.get(reversalOf);
|
|
95
|
+
if (target === undefined || !["verified", "exported"].includes(target.lifecycleState)) {
|
|
96
|
+
return makeRecord(base, "rejected", false, false, 0, "unknown_reversal_target");
|
|
97
|
+
}
|
|
98
|
+
return makeRecord(base, "reversed", false, true, -1, null);
|
|
99
|
+
}
|
|
100
|
+
if (event.lifecycleState === "candidate") {
|
|
101
|
+
return makeRecord(base, "candidate", false, false, 0, null);
|
|
102
|
+
}
|
|
103
|
+
const issue = evidenceIssue(event);
|
|
104
|
+
if (issue !== null) {
|
|
105
|
+
return makeRecord(base, "rejected", false, false, 0, issue);
|
|
106
|
+
}
|
|
107
|
+
const lifecycleState = event.lifecycleState === "exported" || stringOrNull(event.exportedAt) !== null
|
|
108
|
+
? "exported"
|
|
109
|
+
: "verified";
|
|
110
|
+
return makeRecord(base, lifecycleState, true, true, 1, null);
|
|
111
|
+
}
|
|
112
|
+
function baseFields(event) {
|
|
113
|
+
return {
|
|
114
|
+
eventId: stringOrNull(isRecord(event) ? event.id : undefined),
|
|
115
|
+
portalId: stringOrNull(isRecord(event) ? event.portalId : undefined),
|
|
116
|
+
appId: stringOrNull(isRecord(event) ? event.appId : undefined),
|
|
117
|
+
agentId: stringOrNull(isRecord(event) ? event.agentId : undefined),
|
|
118
|
+
outcomeType: stringOrNull(isRecord(event) ? event.outcomeType : undefined),
|
|
119
|
+
idempotencyKey: stringOrNull(isRecord(event) ? event.idempotencyKey : undefined),
|
|
120
|
+
reversalOf: stringOrNull(isRecord(event) ? event.reversalOf : undefined),
|
|
121
|
+
occurredAt: stringOrNull(isRecord(event) ? event.occurredAt : undefined),
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
function makeRecord(base, lifecycleState, billable, exportEligible, adjustmentQuantity, rejectionReason) {
|
|
125
|
+
return {
|
|
126
|
+
...base,
|
|
127
|
+
lifecycleState,
|
|
128
|
+
billable,
|
|
129
|
+
exportEligible,
|
|
130
|
+
adjustmentQuantity,
|
|
131
|
+
rejectionReason,
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
function evidenceIssue(event) {
|
|
135
|
+
if (!isRecord(event.evidence))
|
|
136
|
+
return "missing_required_evidence";
|
|
137
|
+
if (event.outcomeType === "resolved_conversation") {
|
|
138
|
+
if (event.evidence.humanEscalated === true)
|
|
139
|
+
return "human_escalation";
|
|
140
|
+
if (event.evidence.reopened === true)
|
|
141
|
+
return "reopened_conversation";
|
|
142
|
+
if (event.evidence.resolutionStatus !== "resolved" || stringOrNull(event.evidence.conversationId) === null) {
|
|
143
|
+
return "missing_required_evidence";
|
|
144
|
+
}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
if (event.outcomeType === "qualified_lead_recommended") {
|
|
148
|
+
if (event.evidence.qualified !== true)
|
|
149
|
+
return "missing_required_evidence";
|
|
150
|
+
if (stringOrNull(event.evidence.contactId) === null || stringOrNull(event.evidence.companyId) === null) {
|
|
151
|
+
return "missing_required_evidence";
|
|
152
|
+
}
|
|
153
|
+
return null;
|
|
154
|
+
}
|
|
155
|
+
if (event.outcomeType === "workflow_completed") {
|
|
156
|
+
if (event.evidence.completed !== true)
|
|
157
|
+
return "missing_required_evidence";
|
|
158
|
+
if (stringOrNull(event.evidence.workflowId) === null || stringOrNull(event.evidence.actionId) === null) {
|
|
159
|
+
return "missing_required_evidence";
|
|
160
|
+
}
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
return "unsupported_outcome_type";
|
|
164
|
+
}
|
|
165
|
+
function count(records, keyFn) {
|
|
166
|
+
const counts = {};
|
|
167
|
+
for (const record of records) {
|
|
168
|
+
const key = keyFn(record) ?? "<none>";
|
|
169
|
+
counts[key] = (counts[key] ?? 0) + 1;
|
|
170
|
+
}
|
|
171
|
+
return Object.fromEntries(Object.entries(counts).sort(([left], [right]) => left.localeCompare(right)));
|
|
172
|
+
}
|
|
173
|
+
function stringOrNull(value) {
|
|
174
|
+
return typeof value === "string" && value.length > 0 ? value : null;
|
|
175
|
+
}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export { createToolAction, type ToolActionInput, } from "./adapters.js";
|
|
2
|
+
export { assertValidAuditEvent, createAuditEvent, validateAuditEvent, writeAuditEvent, } from "./audit.js";
|
|
3
|
+
export { EVIDENCE_HASH_ALGORITHM, VERIFIER_VERSION, canonicalEvidenceJson, hashAction, hashAuditEvidence, hashEnvelope, hashEvidenceValue, } from "./evidence.js";
|
|
4
|
+
export { POLICY_IR_HASH_ALGORITHM, analyzePolicyIr, canonicalPolicyIrJson, checkPolicyProperty, conditionSignature, hashPolicyIr, normalizePolicyPack, simulatePolicyIr, } from "./ir.js";
|
|
5
|
+
export { classifyHubSpotOutcomes, exportHubSpotCreditsRows, exportHubSpotInvoiceLineRows, loadHubSpotOutcomeEvents, summarizeHubSpotOutcomes, } from "./hubspot.js";
|
|
6
|
+
export type { HubSpotCreditsRow, HubSpotInvoiceLineRow, HubSpotLifecycleState, HubSpotOutcomeLedger, HubSpotOutcomeRecord, HubSpotOutcomeSummary, HubSpotOutcomeType, HubSpotRejectionReason, } from "./hubspot.js";
|
|
7
|
+
export type { ConditionIr, PolicySimulationCounterexample, PolicySimulationDecision, PolicySimulationResult, PolicySimulationSpec, PolicyIr, PolicyIrValueType, PolicyPackIr, PolicyPropertyResult, } from "./ir.js";
|
|
8
|
+
export { POLICY_HASH_ALGORITHM, analyzePolicies, assertValidPolicyPack, canonicalPolicyJson, hashPolicyPack, validatePolicyPack, } from "./policy.js";
|
|
9
|
+
export { loadOutcomeConfig, meterAuditEvents, meterAuditEventsJsonl, meterAuditJsonl, summarizeUsageRecords, } from "./metering.js";
|
|
10
|
+
export type { BillableCategory, ExclusionReason, HashValidationMode, MeteringResult, MeteringSummary, OutcomeMeteringConfig, UsageRecord, } from "./metering.js";
|
|
11
|
+
export { createOpenAiToolAction, runOpenAiToolInputGuardrail, } from "./openaiAgents.js";
|
|
12
|
+
export type { OpenAiGuardrailBehavior, OpenAiToolActionInput, OpenAiToolInputGuardrailInput, OpenAiToolInputGuardrailResult, } from "./openaiAgents.js";
|
|
13
|
+
export { AduekError, DECISION_RANK, ERROR_CATEGORIES, PolicyEvaluationError, errorCategoryForCode, isDecisionValue, } from "./types.js";
|
|
14
|
+
export { ACTION_SCHEMA, AUDIT_EVENT_SCHEMA, DECISION_SCHEMA, POLICY_SCHEMA, SDK_SCHEMAS, validateAuditEventSchema, validatePolicyPackSchema, } from "./validation.js";
|
|
15
|
+
export { verifyAction, verifyActionWithEvent, withAduek, } from "./verifier.js";
|
|
16
|
+
export type { AuditEvent, Condition, ConditionTree, Decision, DecisionValue, ErrorCategory, ExecutionOutcome, FindingSeverity, Policy, PolicyAnalysis, PolicyFinding, PolicyInput, PolicyOperator, PolicyPack, VerificationResult, VerifyActionInput, } from "./types.js";
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,uBAAuB,EACvB,gBAAgB,EAChB,qBAAqB,EACrB,UAAU,EACV,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,GAClB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,kBAAkB,EAClB,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,iBAAiB,EACjB,qBAAqB,EACrB,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,WAAW,EACX,8BAA8B,EAC9B,wBAAwB,EACxB,sBAAsB,EACtB,oBAAoB,EACpB,QAAQ,EACR,iBAAiB,EACjB,YAAY,EACZ,oBAAoB,GACrB,MAAM,SAAS,CAAC;AACjB,OAAO,EACL,qBAAqB,EACrB,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,GACnB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,eAAe,EACf,qBAAqB,GACtB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,cAAc,EACd,eAAe,EACf,qBAAqB,EACrB,WAAW,GACZ,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,sBAAsB,EACtB,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,uBAAuB,EACvB,qBAAqB,EACrB,6BAA6B,EAC7B,8BAA8B,GAC/B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EACL,UAAU,EACV,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,EACpB,eAAe,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,eAAe,EACf,aAAa,EACb,WAAW,EACX,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EACL,YAAY,EACZ,qBAAqB,EACrB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,UAAU,EACV,SAAS,EACT,aAAa,EACb,QAAQ,EACR,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,eAAe,EACf,MAAM,EACN,cAAc,EACd,aAAa,EACb,WAAW,EACX,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export { createToolAction, } from "./adapters.js";
|
|
2
|
+
export { assertValidAuditEvent, createAuditEvent, validateAuditEvent, writeAuditEvent, } from "./audit.js";
|
|
3
|
+
export { EVIDENCE_HASH_ALGORITHM, VERIFIER_VERSION, canonicalEvidenceJson, hashAction, hashAuditEvidence, hashEnvelope, hashEvidenceValue, } from "./evidence.js";
|
|
4
|
+
export { POLICY_IR_HASH_ALGORITHM, analyzePolicyIr, canonicalPolicyIrJson, checkPolicyProperty, conditionSignature, hashPolicyIr, normalizePolicyPack, simulatePolicyIr, } from "./ir.js";
|
|
5
|
+
export { classifyHubSpotOutcomes, exportHubSpotCreditsRows, exportHubSpotInvoiceLineRows, loadHubSpotOutcomeEvents, summarizeHubSpotOutcomes, } from "./hubspot.js";
|
|
6
|
+
export { POLICY_HASH_ALGORITHM, analyzePolicies, assertValidPolicyPack, canonicalPolicyJson, hashPolicyPack, validatePolicyPack, } from "./policy.js";
|
|
7
|
+
export { loadOutcomeConfig, meterAuditEvents, meterAuditEventsJsonl, meterAuditJsonl, summarizeUsageRecords, } from "./metering.js";
|
|
8
|
+
export { createOpenAiToolAction, runOpenAiToolInputGuardrail, } from "./openaiAgents.js";
|
|
9
|
+
export { AduekError, DECISION_RANK, ERROR_CATEGORIES, PolicyEvaluationError, errorCategoryForCode, isDecisionValue, } from "./types.js";
|
|
10
|
+
export { ACTION_SCHEMA, AUDIT_EVENT_SCHEMA, DECISION_SCHEMA, POLICY_SCHEMA, SDK_SCHEMAS, validateAuditEventSchema, validatePolicyPackSchema, } from "./validation.js";
|
|
11
|
+
export { verifyAction, verifyActionWithEvent, withAduek, } from "./verifier.js";
|
package/dist/ir.d.ts
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { type PolicyFinding, type PolicyInput } from "./types.js";
|
|
2
|
+
export declare const POLICY_IR_HASH_ALGORITHM = "sha256";
|
|
3
|
+
export declare const ANALYSIS_SEMANTIC_TRACE_VERSION = "analysis-semantics.v0";
|
|
4
|
+
export type PolicyIrValueType = "unknown" | "string" | "number" | "boolean" | "enum" | "object";
|
|
5
|
+
export interface PolicyPackIr {
|
|
6
|
+
kind: "PolicyPack";
|
|
7
|
+
id?: string | null;
|
|
8
|
+
version?: string | null;
|
|
9
|
+
defaultDecision: string;
|
|
10
|
+
defaultReason: string;
|
|
11
|
+
policies: PolicyIr[];
|
|
12
|
+
}
|
|
13
|
+
export interface PolicyIr {
|
|
14
|
+
kind: "Policy";
|
|
15
|
+
index: number;
|
|
16
|
+
id: string;
|
|
17
|
+
name?: string;
|
|
18
|
+
description?: string;
|
|
19
|
+
effect: string;
|
|
20
|
+
reason: string;
|
|
21
|
+
condition: ConditionIr;
|
|
22
|
+
metadata: Record<string, unknown>;
|
|
23
|
+
}
|
|
24
|
+
export type ConditionIr = {
|
|
25
|
+
kind: "all";
|
|
26
|
+
children: ConditionIr[];
|
|
27
|
+
} | {
|
|
28
|
+
kind: "any";
|
|
29
|
+
children: ConditionIr[];
|
|
30
|
+
} | {
|
|
31
|
+
kind: "condition";
|
|
32
|
+
field: string;
|
|
33
|
+
operator: string;
|
|
34
|
+
value: unknown;
|
|
35
|
+
valueType: PolicyIrValueType;
|
|
36
|
+
} | {
|
|
37
|
+
kind: "invalid";
|
|
38
|
+
error: string;
|
|
39
|
+
group?: string;
|
|
40
|
+
};
|
|
41
|
+
export interface PolicyPropertyResult {
|
|
42
|
+
result: "pass" | "fail" | "unknown";
|
|
43
|
+
reason: string;
|
|
44
|
+
policyIds: string[];
|
|
45
|
+
errorCategory?: "simulation_unknown";
|
|
46
|
+
errorCode?: string;
|
|
47
|
+
}
|
|
48
|
+
export interface PolicySimulationSpec {
|
|
49
|
+
property: Record<string, unknown>;
|
|
50
|
+
domains: Record<string, unknown[]>;
|
|
51
|
+
capabilities?: unknown;
|
|
52
|
+
fieldRegistry?: Record<string, unknown>;
|
|
53
|
+
baseAgent?: unknown;
|
|
54
|
+
baseAction?: unknown;
|
|
55
|
+
baseContext?: unknown;
|
|
56
|
+
maxSamples?: number;
|
|
57
|
+
counterexampleLimit?: number;
|
|
58
|
+
}
|
|
59
|
+
export interface PolicySimulationDecision {
|
|
60
|
+
decision: string;
|
|
61
|
+
reason: string;
|
|
62
|
+
matchedPolicyIds: string[];
|
|
63
|
+
metadata: Record<string, unknown>;
|
|
64
|
+
}
|
|
65
|
+
export interface PolicySemanticTrace {
|
|
66
|
+
semanticTraceVersion: typeof ANALYSIS_SEMANTIC_TRACE_VERSION;
|
|
67
|
+
result: "evaluated" | "unknown";
|
|
68
|
+
decision: string;
|
|
69
|
+
reason: string;
|
|
70
|
+
matchedPolicyIds: string[];
|
|
71
|
+
selectedPolicyId: string | null;
|
|
72
|
+
selectedMetadata: Record<string, unknown>;
|
|
73
|
+
enforcementSource: string;
|
|
74
|
+
unknownCategory?: "simulation_unknown";
|
|
75
|
+
unknownCode?: string;
|
|
76
|
+
metadata: Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
export interface PolicySimulationCounterexample {
|
|
79
|
+
sampleIndex: number;
|
|
80
|
+
action: unknown;
|
|
81
|
+
context: unknown;
|
|
82
|
+
decision: PolicySimulationDecision;
|
|
83
|
+
reason?: string;
|
|
84
|
+
}
|
|
85
|
+
export interface PolicySimulationResult {
|
|
86
|
+
result: "pass" | "fail" | "unknown";
|
|
87
|
+
reason: string;
|
|
88
|
+
errorCategory?: "simulation_unknown";
|
|
89
|
+
errorCode?: string;
|
|
90
|
+
policyIds: string[];
|
|
91
|
+
checkedSamples: number;
|
|
92
|
+
matchingSamples: number;
|
|
93
|
+
decisionCounts: Record<"allow" | "log" | "review" | "deny" | "unknown", number>;
|
|
94
|
+
counterexamples: PolicySimulationCounterexample[];
|
|
95
|
+
}
|
|
96
|
+
export declare function normalizePolicyPack(policyInput: PolicyInput | unknown): PolicyPackIr;
|
|
97
|
+
export declare function analyzePolicyIr(policyIr: PolicyPackIr): PolicyFinding[];
|
|
98
|
+
export declare function canonicalPolicyIrJson(policyIr: PolicyPackIr): string;
|
|
99
|
+
export declare function hashPolicyIr(policyIr: PolicyPackIr): string;
|
|
100
|
+
export declare function conditionSignature(conditionIr: unknown): string;
|
|
101
|
+
export declare function checkPolicyProperty(policyIr: PolicyPackIr, propertySpec: Record<string, unknown>): PolicyPropertyResult;
|
|
102
|
+
export declare function simulatePolicyIr(policyIr: PolicyPackIr, simulationSpec: PolicySimulationSpec): PolicySimulationResult;
|
|
103
|
+
export declare function tracePolicyIrSemantics(policyIr: PolicyPackIr, scope: Record<string, unknown>): PolicySemanticTrace;
|
|
104
|
+
//# sourceMappingURL=ir.d.ts.map
|
package/dist/ir.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir.d.ts","sourceRoot":"","sources":["../src/ir.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,aAAa,EAClB,KAAK,WAAW,EACjB,MAAM,YAAY,CAAC;AAQpB,eAAO,MAAM,wBAAwB,WAAW,CAAC;AACjD,eAAO,MAAM,+BAA+B,0BAA0B,CAAC;AAGvE,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEhG,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,YAAY,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,WAAW,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,WAAW,EAAE,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,iBAAiB,CAAA;CAAE,GACpG;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvD,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IACnC,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACxC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,mBAAmB;IAClC,oBAAoB,EAAE,OAAO,+BAA+B,CAAC;IAC7D,MAAM,EAAE,WAAW,GAAG,SAAS,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,oBAAoB,CAAC;IACvC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,8BAA8B;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,wBAAwB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,EAAE,MAAM,CAAC,CAAC;IAChF,eAAe,EAAE,8BAA8B,EAAE,CAAC;CACnD;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,WAAW,GAAG,OAAO,GAAG,YAAY,CAyCpF;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,EAAE,CAiFvE;AAED,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAEpE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAI3D;AAED,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,OAAO,GAAG,MAAM,CAE/D;AAED,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,oBAAoB,CA2BtB;AAED,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,oBAAoB,GACnC,sBAAsB,CA8JxB;AA0ZD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAsDlH"}
|