@agentplat/inference-control 0.3.0-beta.2 → 0.3.0-beta.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/README.md +360 -0
  2. package/dist/anytime-semantic-guarantees.d.ts +216 -0
  3. package/dist/anytime-semantic-guarantees.d.ts.map +1 -0
  4. package/dist/anytime-semantic-guarantees.js +817 -0
  5. package/dist/anytime-semantic-guarantees.js.map +1 -0
  6. package/dist/assessor-ensemble-contracts.d.ts +145 -0
  7. package/dist/assessor-ensemble-contracts.d.ts.map +1 -0
  8. package/dist/assessor-ensemble-contracts.js +29 -0
  9. package/dist/assessor-ensemble-contracts.js.map +1 -0
  10. package/dist/assessor-ensemble-runtime.d.ts +55 -0
  11. package/dist/assessor-ensemble-runtime.d.ts.map +1 -0
  12. package/dist/assessor-ensemble-runtime.js +308 -0
  13. package/dist/assessor-ensemble-runtime.js.map +1 -0
  14. package/dist/assessor-ensemble-validation.d.ts +12 -0
  15. package/dist/assessor-ensemble-validation.d.ts.map +1 -0
  16. package/dist/assessor-ensemble-validation.js +156 -0
  17. package/dist/assessor-ensemble-validation.js.map +1 -0
  18. package/dist/assessor-ensemble.d.ts +4 -0
  19. package/dist/assessor-ensemble.d.ts.map +1 -0
  20. package/dist/assessor-ensemble.js +4 -0
  21. package/dist/assessor-ensemble.js.map +1 -0
  22. package/dist/cognitive-adapters.d.ts +92 -0
  23. package/dist/cognitive-adapters.d.ts.map +1 -0
  24. package/dist/cognitive-adapters.js +263 -0
  25. package/dist/cognitive-adapters.js.map +1 -0
  26. package/dist/context-integrity-analyzers.d.ts +35 -0
  27. package/dist/context-integrity-analyzers.d.ts.map +1 -0
  28. package/dist/context-integrity-analyzers.js +387 -0
  29. package/dist/context-integrity-analyzers.js.map +1 -0
  30. package/dist/context-integrity-contracts.d.ts +304 -0
  31. package/dist/context-integrity-contracts.d.ts.map +1 -0
  32. package/dist/context-integrity-contracts.js +24 -0
  33. package/dist/context-integrity-contracts.js.map +1 -0
  34. package/dist/context-integrity-model.d.ts +25 -0
  35. package/dist/context-integrity-model.d.ts.map +1 -0
  36. package/dist/context-integrity-model.js +192 -0
  37. package/dist/context-integrity-model.js.map +1 -0
  38. package/dist/context-integrity-portable-agent.d.ts +79 -0
  39. package/dist/context-integrity-portable-agent.d.ts.map +1 -0
  40. package/dist/context-integrity-portable-agent.js +511 -0
  41. package/dist/context-integrity-portable-agent.js.map +1 -0
  42. package/dist/context-integrity-role-alignment.d.ts +28 -0
  43. package/dist/context-integrity-role-alignment.d.ts.map +1 -0
  44. package/dist/context-integrity-role-alignment.js +95 -0
  45. package/dist/context-integrity-role-alignment.js.map +1 -0
  46. package/dist/context-integrity-runtime.d.ts +95 -0
  47. package/dist/context-integrity-runtime.d.ts.map +1 -0
  48. package/dist/context-integrity-runtime.js +1512 -0
  49. package/dist/context-integrity-runtime.js.map +1 -0
  50. package/dist/context-integrity.d.ts +5 -0
  51. package/dist/context-integrity.d.ts.map +1 -0
  52. package/dist/context-integrity.js +5 -0
  53. package/dist/context-integrity.js.map +1 -0
  54. package/dist/governed-role-evolution.d.ts +172 -0
  55. package/dist/governed-role-evolution.d.ts.map +1 -0
  56. package/dist/governed-role-evolution.js +613 -0
  57. package/dist/governed-role-evolution.js.map +1 -0
  58. package/dist/heterogeneous-agent-composition.d.ts +96 -0
  59. package/dist/heterogeneous-agent-composition.d.ts.map +1 -0
  60. package/dist/heterogeneous-agent-composition.js +512 -0
  61. package/dist/heterogeneous-agent-composition.js.map +1 -0
  62. package/dist/index.d.ts +21 -13
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +21 -13
  65. package/dist/index.js.map +1 -1
  66. package/dist/intervention-adapters.d.ts +29 -0
  67. package/dist/intervention-adapters.d.ts.map +1 -0
  68. package/dist/intervention-adapters.js +107 -0
  69. package/dist/intervention-adapters.js.map +1 -0
  70. package/dist/intervention-contracts.d.ts +311 -0
  71. package/dist/intervention-contracts.d.ts.map +1 -0
  72. package/dist/intervention-contracts.js +28 -0
  73. package/dist/intervention-contracts.js.map +1 -0
  74. package/dist/intervention-runtime.d.ts +86 -0
  75. package/dist/intervention-runtime.d.ts.map +1 -0
  76. package/dist/intervention-runtime.js +958 -0
  77. package/dist/intervention-runtime.js.map +1 -0
  78. package/dist/intervention-validation.d.ts +27 -0
  79. package/dist/intervention-validation.d.ts.map +1 -0
  80. package/dist/intervention-validation.js +273 -0
  81. package/dist/intervention-validation.js.map +1 -0
  82. package/dist/intervention.d.ts +6 -0
  83. package/dist/intervention.d.ts.map +1 -0
  84. package/dist/intervention.js +6 -0
  85. package/dist/intervention.js.map +1 -0
  86. package/dist/model.d.ts +18 -0
  87. package/dist/model.d.ts.map +1 -1
  88. package/dist/model.js +60 -2
  89. package/dist/model.js.map +1 -1
  90. package/dist/operational-cognitive-control.d.ts +208 -0
  91. package/dist/operational-cognitive-control.d.ts.map +1 -0
  92. package/dist/operational-cognitive-control.js +590 -0
  93. package/dist/operational-cognitive-control.js.map +1 -0
  94. package/dist/portable-agent.d.ts +50 -0
  95. package/dist/portable-agent.d.ts.map +1 -0
  96. package/dist/portable-agent.js +243 -0
  97. package/dist/portable-agent.js.map +1 -0
  98. package/dist/reference-controllers.d.ts +121 -0
  99. package/dist/reference-controllers.d.ts.map +1 -0
  100. package/dist/reference-controllers.js +411 -0
  101. package/dist/reference-controllers.js.map +1 -0
  102. package/dist/role-alignment-portable-agent.d.ts +145 -0
  103. package/dist/role-alignment-portable-agent.d.ts.map +1 -0
  104. package/dist/role-alignment-portable-agent.js +484 -0
  105. package/dist/role-alignment-portable-agent.js.map +1 -0
  106. package/dist/role-alignment.d.ts +226 -0
  107. package/dist/role-alignment.d.ts.map +1 -0
  108. package/dist/role-alignment.js +1074 -0
  109. package/dist/role-alignment.js.map +1 -0
  110. package/dist/role-realignment-portable-agent.d.ts +163 -0
  111. package/dist/role-realignment-portable-agent.d.ts.map +1 -0
  112. package/dist/role-realignment-portable-agent.js +634 -0
  113. package/dist/role-realignment-portable-agent.js.map +1 -0
  114. package/dist/role-realignment.d.ts +368 -0
  115. package/dist/role-realignment.d.ts.map +1 -0
  116. package/dist/role-realignment.js +1609 -0
  117. package/dist/role-realignment.js.map +1 -0
  118. package/dist/semantic-alignment-assessors.d.ts +12 -0
  119. package/dist/semantic-alignment-assessors.d.ts.map +1 -0
  120. package/dist/semantic-alignment-assessors.js +55 -0
  121. package/dist/semantic-alignment-assessors.js.map +1 -0
  122. package/dist/semantic-alignment-contracts.d.ts +385 -0
  123. package/dist/semantic-alignment-contracts.d.ts.map +1 -0
  124. package/dist/semantic-alignment-contracts.js +16 -0
  125. package/dist/semantic-alignment-contracts.js.map +1 -0
  126. package/dist/semantic-alignment-memory.d.ts +53 -0
  127. package/dist/semantic-alignment-memory.d.ts.map +1 -0
  128. package/dist/semantic-alignment-memory.js +170 -0
  129. package/dist/semantic-alignment-memory.js.map +1 -0
  130. package/dist/semantic-alignment-runtime.d.ts +67 -0
  131. package/dist/semantic-alignment-runtime.d.ts.map +1 -0
  132. package/dist/semantic-alignment-runtime.js +778 -0
  133. package/dist/semantic-alignment-runtime.js.map +1 -0
  134. package/dist/semantic-alignment-validation.d.ts +31 -0
  135. package/dist/semantic-alignment-validation.d.ts.map +1 -0
  136. package/dist/semantic-alignment-validation.js +477 -0
  137. package/dist/semantic-alignment-validation.js.map +1 -0
  138. package/dist/semantic-alignment.d.ts +8 -0
  139. package/dist/semantic-alignment.d.ts.map +1 -0
  140. package/dist/semantic-alignment.js +8 -0
  141. package/dist/semantic-alignment.js.map +1 -0
  142. package/dist/semantic-horizon-budget.d.ts +118 -0
  143. package/dist/semantic-horizon-budget.d.ts.map +1 -0
  144. package/dist/semantic-horizon-budget.js +536 -0
  145. package/dist/semantic-horizon-budget.js.map +1 -0
  146. package/dist/semantic-metric-engine.d.ts +96 -0
  147. package/dist/semantic-metric-engine.d.ts.map +1 -0
  148. package/dist/semantic-metric-engine.js +396 -0
  149. package/dist/semantic-metric-engine.js.map +1 -0
  150. package/package.json +79 -7
@@ -0,0 +1,35 @@
1
+ import { type ContextIntegrityAnalyzerV1, type ContextIntegrityAssessmentDispositionV1, type ContextIntegritySourceZoneV1 } from "./context-integrity-contracts.js";
2
+ export interface ContextIntegrityLexicalRuleV1 {
3
+ readonly ruleId: string;
4
+ readonly phrases: readonly string[];
5
+ readonly disposition: Exclude<ContextIntegrityAssessmentDispositionV1, "clear" | "unavailable">;
6
+ readonly riskBps: number;
7
+ readonly uncertaintyBps: number;
8
+ readonly instructionConflictBps: number;
9
+ readonly threatKind: string;
10
+ readonly reasonCode: string;
11
+ }
12
+ export interface ContextIntegrityZoneBaselineV1 {
13
+ readonly sourceZone: ContextIntegritySourceZoneV1;
14
+ readonly riskBps: number;
15
+ readonly uncertaintyBps: number;
16
+ }
17
+ export interface ContextIntegrityReferenceAnalyzerOptionsV1 {
18
+ readonly analyzerId: string;
19
+ readonly analyzerVersion: number;
20
+ readonly analyzerImplementationDigest?: string;
21
+ readonly assessmentTtlMs: number;
22
+ readonly zoneBaselines?: readonly ContextIntegrityZoneBaselineV1[];
23
+ readonly rules?: readonly ContextIntegrityLexicalRuleV1[];
24
+ }
25
+ export interface ContextIntegrityCompositeAnalyzerOptionsV1 {
26
+ readonly analyzerId: string;
27
+ readonly analyzerVersion: number;
28
+ readonly analyzerImplementationDigest?: string;
29
+ readonly analyzers: readonly ContextIntegrityAnalyzerV1[];
30
+ }
31
+ export declare const CONTEXT_INTEGRITY_DEFAULT_ZONE_BASELINES_V1: readonly ContextIntegrityZoneBaselineV1[];
32
+ export declare const CONTEXT_INTEGRITY_DEFAULT_LEXICAL_RULES_V1: readonly ContextIntegrityLexicalRuleV1[];
33
+ export declare function createContextIntegrityReferenceAnalyzerV1(options: ContextIntegrityReferenceAnalyzerOptionsV1): ContextIntegrityAnalyzerV1;
34
+ export declare function createContextIntegrityCompositeAnalyzerV1(options: ContextIntegrityCompositeAnalyzerOptionsV1): ContextIntegrityAnalyzerV1;
35
+ //# sourceMappingURL=context-integrity-analyzers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-integrity-analyzers.d.ts","sourceRoot":"","sources":["../src/context-integrity-analyzers.ts"],"names":[],"mappings":"AAEA,OAAO,EAGL,KAAK,0BAA0B,EAC/B,KAAK,uCAAuC,EAE5C,KAAK,4BAA4B,EAClC,MAAM,kCAAkC,CAAC;AAe1C,MAAM,WAAW,6BAA6B;IAC5C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAC3B,uCAAuC,EACvC,OAAO,GAAG,aAAa,CACxB,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,UAAU,EAAE,4BAA4B,CAAC;IAClD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED,MAAM,WAAW,0CAA0C;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,8BAA8B,EAAE,CAAC;IACnE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,6BAA6B,EAAE,CAAC;CAC3D;AAED,MAAM,WAAW,0CAA0C;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,4BAA4B,CAAC,EAAE,MAAM,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,SAAS,0BAA0B,EAAE,CAAC;CAC3D;AAYD,eAAO,MAAM,2CAA2C,EAAE,SAAS,8BAA8B,EA8BzC,CAAC;AAEzD,eAAO,MAAM,0CAA0C,EAAE,SAAS,6BAA6B,EA4ExC,CAAC;AAExD,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,0CAA0C,GAClD,0BAA0B,CAyH5B;AAED,wBAAgB,yCAAyC,CACvD,OAAO,EAAE,0CAA0C,GAClD,0BAA0B,CA4H5B"}
@@ -0,0 +1,387 @@
1
+ import { CONTEXT_INTEGRITY_SOURCE_ZONES_V1, CONTEXT_INTEGRITY_SCHEMA_VERSION_V1, } from "./context-integrity-contracts.js";
2
+ import { createContextIntegrityAssessmentV1, digestContextIntegrityJsonV1, validateContextIntegrityAssessmentV1, } from "./context-integrity-runtime.js";
3
+ import { assertDigest, assertIdentifier, assertSafeInteger, assertStrictJsonValue, deepFreeze, sortedUnique, } from "./validation.js";
4
+ const dispositionRank = Object.freeze({
5
+ clear: 0,
6
+ caution: 1,
7
+ quarantine: 2,
8
+ unavailable: 3,
9
+ deny: 4,
10
+ });
11
+ export const CONTEXT_INTEGRITY_DEFAULT_ZONE_BASELINES_V1 = deepFreeze([
12
+ { sourceZone: "doctrine_trusted", riskBps: 0, uncertaintyBps: 100 },
13
+ { sourceZone: "mission_trusted", riskBps: 50, uncertaintyBps: 150 },
14
+ { sourceZone: "role_trusted", riskBps: 50, uncertaintyBps: 150 },
15
+ { sourceZone: "operator_trusted", riskBps: 100, uncertaintyBps: 250 },
16
+ { sourceZone: "local_trusted", riskBps: 150, uncertaintyBps: 300 },
17
+ { sourceZone: "user_untrusted", riskBps: 900, uncertaintyBps: 1_500 },
18
+ {
19
+ sourceZone: "environment_untrusted",
20
+ riskBps: 1_100,
21
+ uncertaintyBps: 2_000,
22
+ },
23
+ { sourceZone: "peer_untrusted", riskBps: 1_200, uncertaintyBps: 2_250 },
24
+ { sourceZone: "tool_untrusted", riskBps: 1_200, uncertaintyBps: 2_000 },
25
+ {
26
+ sourceZone: "retrieval_untrusted",
27
+ riskBps: 1_300,
28
+ uncertaintyBps: 2_500,
29
+ },
30
+ {
31
+ sourceZone: "provider_untrusted",
32
+ riskBps: 1_500,
33
+ uncertaintyBps: 2_750,
34
+ },
35
+ {
36
+ sourceZone: "assessor_untrusted",
37
+ riskBps: 1_500,
38
+ uncertaintyBps: 2_750,
39
+ },
40
+ ]);
41
+ export const CONTEXT_INTEGRITY_DEFAULT_LEXICAL_RULES_V1 = deepFreeze([
42
+ {
43
+ ruleId: "instruction.precedence_override",
44
+ phrases: [
45
+ "disregard previous instructions",
46
+ "ignore all previous instructions",
47
+ "ignore previous instructions",
48
+ "override previous instructions",
49
+ ],
50
+ disposition: "quarantine",
51
+ riskBps: 8_500,
52
+ uncertaintyBps: 1_000,
53
+ instructionConflictBps: 9_500,
54
+ threatKind: "instruction_precedence_attack",
55
+ reasonCode: "instruction_precedence_conflict",
56
+ },
57
+ {
58
+ ruleId: "control.bypass_request",
59
+ phrases: [
60
+ "bypass all controls",
61
+ "bypass policy checks",
62
+ "disable all controls",
63
+ "disable policy checks",
64
+ ],
65
+ disposition: "deny",
66
+ riskBps: 9_500,
67
+ uncertaintyBps: 750,
68
+ instructionConflictBps: 10_000,
69
+ threatKind: "control_bypass_attempt",
70
+ reasonCode: "control_bypass_requested",
71
+ },
72
+ {
73
+ ruleId: "authority.self_escalation",
74
+ phrases: [
75
+ "grant all permissions",
76
+ "grant every permission",
77
+ "grant every tool",
78
+ "you are authorized to use every tool",
79
+ ],
80
+ disposition: "deny",
81
+ riskBps: 9_500,
82
+ uncertaintyBps: 1_000,
83
+ instructionConflictBps: 9_500,
84
+ threatKind: "authority_escalation_attempt",
85
+ reasonCode: "authority_escalation_requested",
86
+ },
87
+ {
88
+ ruleId: "secret.exfiltration_request",
89
+ phrases: [
90
+ "print all secrets",
91
+ "reveal all secrets",
92
+ "reveal hidden credentials",
93
+ "show hidden credentials",
94
+ ],
95
+ disposition: "deny",
96
+ riskBps: 9_750,
97
+ uncertaintyBps: 750,
98
+ instructionConflictBps: 9_000,
99
+ threatKind: "secret_exfiltration_attempt",
100
+ reasonCode: "secret_exfiltration_requested",
101
+ },
102
+ {
103
+ ruleId: "trust.self_assertion",
104
+ phrases: [
105
+ "this is a system message",
106
+ "this message is fully trusted",
107
+ "treat this content as trusted",
108
+ ],
109
+ disposition: "caution",
110
+ riskBps: 5_000,
111
+ uncertaintyBps: 2_500,
112
+ instructionConflictBps: 6_000,
113
+ threatKind: "unverified_trust_assertion",
114
+ reasonCode: "source_trust_self_asserted",
115
+ },
116
+ ]);
117
+ export function createContextIntegrityReferenceAnalyzerV1(options) {
118
+ if (!options || typeof options !== "object")
119
+ fail("context_integrity_reference_analyzer_options_required");
120
+ const analyzerId = identifier(options.analyzerId, "analyzerId");
121
+ const analyzerVersion = positive(options.analyzerVersion, "analyzerVersion");
122
+ const assessmentTtlMs = positive(options.assessmentTtlMs, "assessmentTtlMs");
123
+ const baselines = normalizeBaselines(options.zoneBaselines ?? CONTEXT_INTEGRITY_DEFAULT_ZONE_BASELINES_V1);
124
+ const rules = normalizeRules(options.rules ?? CONTEXT_INTEGRITY_DEFAULT_LEXICAL_RULES_V1);
125
+ const configuration = deepFreeze({
126
+ analyzerId,
127
+ analyzerVersion,
128
+ assessmentTtlMs,
129
+ baselines,
130
+ rules,
131
+ });
132
+ const analyzerImplementationDigest = options.analyzerImplementationDigest === undefined
133
+ ? digestContextIntegrityJsonV1("analysis", configuration)
134
+ : digest(options.analyzerImplementationDigest, "analyzerImplementationDigest");
135
+ const byZone = new Map(baselines.map((baseline) => [baseline.sourceZone, baseline]));
136
+ return deepFreeze({
137
+ analyzerId,
138
+ analyzerVersion,
139
+ analyzerImplementationDigest,
140
+ analyze({ request, item, content }) {
141
+ const baseline = byZone.get(item.sourceZone);
142
+ if (!baseline)
143
+ fail("context_integrity_source_zone_baseline_missing");
144
+ const searchable = canonicalSearchText(content.content);
145
+ const matched = rules.filter((rule) => rule.phrases.some((phrase) => searchable.includes(phrase)));
146
+ const disposition = maximumDisposition(matched.map(({ disposition: value }) => value));
147
+ const riskBps = Math.max(baseline.riskBps, ...matched.map(({ riskBps: value }) => value));
148
+ const uncertaintyBps = Math.max(baseline.uncertaintyBps, ...matched.map(({ uncertaintyBps: value }) => value));
149
+ const instructionConflictBps = Math.max(0, ...matched.map(({ instructionConflictBps: value }) => value));
150
+ const threatKinds = unique(matched.map(({ threatKind }) => threatKind), "threatKinds");
151
+ const reasonCodes = unique(matched.length
152
+ ? matched.map(({ reasonCode }) => reasonCode)
153
+ : ["reference_analysis_clear"], "reasonCodes");
154
+ const evidenceDigests = uniqueDigests(matched.map((rule) => digestContextIntegrityJsonV1("analysis", rule)), "evidenceDigests");
155
+ const expiresAtLogicalMs = Math.min(item.expiresAtLogicalMs, safeAdd(request.logicalTimeMs, assessmentTtlMs, "context_integrity_reference_assessment_expiry_overflow"));
156
+ if (expiresAtLogicalMs <= request.logicalTimeMs)
157
+ fail("context_integrity_reference_assessment_window_invalid");
158
+ const assessmentSeed = deepFreeze({
159
+ requestDigest: request.requestDigest,
160
+ itemDigest: item.itemDigest,
161
+ analyzerImplementationDigest,
162
+ analyzerRevision: item.sourceRevision,
163
+ });
164
+ const assessmentIdDigest = digestContextIntegrityJsonV1("assessment", assessmentSeed);
165
+ return createContextIntegrityAssessmentV1({
166
+ schemaVersion: CONTEXT_INTEGRITY_SCHEMA_VERSION_V1,
167
+ assessmentId: `context-integrity-assessment.${assessmentIdDigest.slice(7)}`,
168
+ requestId: request.requestId,
169
+ requestDigest: request.requestDigest,
170
+ itemId: item.itemId,
171
+ itemDigest: item.itemDigest,
172
+ analyzerId,
173
+ analyzerVersion,
174
+ analyzerImplementationDigest,
175
+ analyzerRevision: item.sourceRevision,
176
+ disposition,
177
+ riskBps,
178
+ uncertaintyBps,
179
+ instructionConflictBps,
180
+ threatKinds,
181
+ reasonCodes,
182
+ evidenceDigests,
183
+ assessedAtLogicalMs: request.logicalTimeMs,
184
+ expiresAtLogicalMs,
185
+ });
186
+ },
187
+ });
188
+ }
189
+ export function createContextIntegrityCompositeAnalyzerV1(options) {
190
+ if (!options || typeof options !== "object")
191
+ fail("context_integrity_composite_analyzer_options_required");
192
+ const analyzerId = identifier(options.analyzerId, "analyzerId");
193
+ const analyzerVersion = positive(options.analyzerVersion, "analyzerVersion");
194
+ if (!Array.isArray(options.analyzers) || options.analyzers.length === 0)
195
+ fail("context_integrity_composite_analyzers_required");
196
+ if (options.analyzers.length > 16)
197
+ fail("context_integrity_composite_analyzers_capacity_exceeded");
198
+ const analyzers = options.analyzers.map((analyzer, index) => normalizeAnalyzer(analyzer, `analyzers[${index}]`));
199
+ sortedUnique(analyzers.map(({ analyzerId: childId }) => childId), "context integrity child analyzer IDs");
200
+ const implementationSeed = deepFreeze(analyzers.map((analyzer) => ({
201
+ analyzerId: analyzer.analyzerId,
202
+ analyzerVersion: analyzer.analyzerVersion,
203
+ analyzerImplementationDigest: analyzer.analyzerImplementationDigest,
204
+ })));
205
+ const analyzerImplementationDigest = options.analyzerImplementationDigest === undefined
206
+ ? digestContextIntegrityJsonV1("analysis", implementationSeed)
207
+ : digest(options.analyzerImplementationDigest, "analyzerImplementationDigest");
208
+ return deepFreeze({
209
+ analyzerId,
210
+ analyzerVersion,
211
+ analyzerImplementationDigest,
212
+ async analyze(input) {
213
+ const assessments = await Promise.all(analyzers.map(async (analyzer) => {
214
+ const assessment = validateContextIntegrityAssessmentV1(await analyzer.analyze(input));
215
+ if (assessment.requestId !== input.request.requestId ||
216
+ assessment.requestDigest !== input.request.requestDigest ||
217
+ assessment.itemId !== input.item.itemId ||
218
+ assessment.itemDigest !== input.item.itemDigest ||
219
+ assessment.analyzerId !== analyzer.analyzerId ||
220
+ assessment.analyzerVersion !== analyzer.analyzerVersion ||
221
+ assessment.analyzerImplementationDigest !==
222
+ analyzer.analyzerImplementationDigest ||
223
+ assessment.assessedAtLogicalMs > input.request.logicalTimeMs ||
224
+ assessment.expiresAtLogicalMs <= input.request.logicalTimeMs)
225
+ fail("context_integrity_child_assessment_binding_invalid");
226
+ return assessment;
227
+ }));
228
+ const disposition = maximumDisposition(assessments.map(({ disposition: value }) => value));
229
+ const analyzerRevision = Math.max(...assessments.map(({ analyzerRevision: value }) => value));
230
+ const expiresAtLogicalMs = Math.min(...assessments.map(({ expiresAtLogicalMs: value }) => value));
231
+ const threatKinds = unique(assessments.flatMap(({ threatKinds: values }) => values), "threatKinds");
232
+ const reasonCodes = unique(assessments.flatMap(({ reasonCodes: values }) => values), "reasonCodes");
233
+ const evidenceDigests = uniqueDigests(assessments
234
+ .flatMap(({ evidenceDigests: values }) => values)
235
+ .concat(assessments.map(({ analysisDigest }) => analysisDigest)), "evidenceDigests");
236
+ const assessmentSeed = deepFreeze({
237
+ requestDigest: input.request.requestDigest,
238
+ itemDigest: input.item.itemDigest,
239
+ analyzerImplementationDigest,
240
+ childAssessmentDigests: assessments
241
+ .map(({ assessmentDigest }) => assessmentDigest)
242
+ .sort(compare),
243
+ });
244
+ const assessmentIdDigest = digestContextIntegrityJsonV1("assessment", assessmentSeed);
245
+ return createContextIntegrityAssessmentV1({
246
+ schemaVersion: CONTEXT_INTEGRITY_SCHEMA_VERSION_V1,
247
+ assessmentId: `context-integrity-assessment.${assessmentIdDigest.slice(7)}`,
248
+ requestId: input.request.requestId,
249
+ requestDigest: input.request.requestDigest,
250
+ itemId: input.item.itemId,
251
+ itemDigest: input.item.itemDigest,
252
+ analyzerId,
253
+ analyzerVersion,
254
+ analyzerImplementationDigest,
255
+ analyzerRevision,
256
+ disposition,
257
+ riskBps: Math.max(...assessments.map(({ riskBps }) => riskBps)),
258
+ uncertaintyBps: Math.max(...assessments.map(({ uncertaintyBps }) => uncertaintyBps)),
259
+ instructionConflictBps: Math.max(...assessments.map(({ instructionConflictBps }) => instructionConflictBps)),
260
+ threatKinds,
261
+ reasonCodes,
262
+ evidenceDigests,
263
+ assessedAtLogicalMs: input.request.logicalTimeMs,
264
+ expiresAtLogicalMs,
265
+ });
266
+ },
267
+ });
268
+ }
269
+ function normalizeAnalyzer(input, label) {
270
+ if (!input ||
271
+ typeof input !== "object" ||
272
+ typeof input.analyze !== "function")
273
+ fail(`${label}_invalid`);
274
+ identifier(input.analyzerId, `${label}.analyzerId`);
275
+ positive(input.analyzerVersion, `${label}.analyzerVersion`);
276
+ digest(input.analyzerImplementationDigest, `${label}.analyzerImplementationDigest`);
277
+ return input;
278
+ }
279
+ function normalizeBaselines(input) {
280
+ if (!Array.isArray(input) || input.length !== 12)
281
+ fail("context_integrity_zone_baselines_invalid");
282
+ const values = input.map((baseline, index) => {
283
+ if (!baseline || typeof baseline !== "object")
284
+ fail(`zoneBaselines[${index}]_invalid`);
285
+ return deepFreeze({
286
+ sourceZone: sourceZone(baseline.sourceZone, `zoneBaselines[${index}].sourceZone`),
287
+ riskBps: basisPoints(baseline.riskBps, `zoneBaselines[${index}].riskBps`),
288
+ uncertaintyBps: basisPoints(baseline.uncertaintyBps, `zoneBaselines[${index}].uncertaintyBps`),
289
+ });
290
+ });
291
+ values.sort((left, right) => compare(left.sourceZone, right.sourceZone));
292
+ sortedUnique(values.map(({ sourceZone }) => sourceZone), "context integrity zone baselines");
293
+ return deepFreeze(values);
294
+ }
295
+ function normalizeRules(input) {
296
+ if (!Array.isArray(input) || input.length > 32)
297
+ fail("context_integrity_lexical_rules_invalid");
298
+ const rules = input.map((rule, index) => {
299
+ if (!rule || typeof rule !== "object")
300
+ fail(`rules[${index}]_invalid`);
301
+ if (!Array.isArray(rule.phrases) || rule.phrases.length === 0)
302
+ fail(`rules[${index}].phrases_invalid`);
303
+ const phrases = rule.phrases.map((phrase, phraseIndex) => {
304
+ const value = identifier(phrase, `rules[${index}].phrases[${phraseIndex}]`)
305
+ .trim()
306
+ .toLocaleLowerCase("en-US");
307
+ if (!value)
308
+ fail(`rules[${index}].phrases[${phraseIndex}]_invalid`);
309
+ return value;
310
+ });
311
+ sortedUnique(phrases, `rules[${index}].phrases`);
312
+ const disposition = rule.disposition;
313
+ if (disposition !== "caution" &&
314
+ disposition !== "quarantine" &&
315
+ disposition !== "deny")
316
+ fail(`rules[${index}].disposition_invalid`);
317
+ return deepFreeze({
318
+ ruleId: identifier(rule.ruleId, `rules[${index}].ruleId`),
319
+ phrases: deepFreeze(phrases),
320
+ disposition,
321
+ riskBps: basisPoints(rule.riskBps, `rules[${index}].riskBps`),
322
+ uncertaintyBps: basisPoints(rule.uncertaintyBps, `rules[${index}].uncertaintyBps`),
323
+ instructionConflictBps: basisPoints(rule.instructionConflictBps, `rules[${index}].instructionConflictBps`),
324
+ threatKind: identifier(rule.threatKind, `rules[${index}].threatKind`),
325
+ reasonCode: identifier(rule.reasonCode, `rules[${index}].reasonCode`),
326
+ });
327
+ });
328
+ rules.sort((left, right) => compare(left.ruleId, right.ruleId));
329
+ sortedUnique(rules.map(({ ruleId }) => ruleId), "context integrity lexical rule IDs");
330
+ return deepFreeze(rules);
331
+ }
332
+ function maximumDisposition(values) {
333
+ return values.reduce((maximum, current) => dispositionRank[current] > dispositionRank[maximum] ? current : maximum, "clear");
334
+ }
335
+ function canonicalSearchText(content) {
336
+ assertStrictJsonValue(content);
337
+ return JSON.stringify(content).normalize("NFKC").toLocaleLowerCase("en-US");
338
+ }
339
+ function unique(values, label) {
340
+ const result = [...new Set(values)].sort(compare);
341
+ if (result.length > 32)
342
+ fail(`${label}_capacity_exceeded`);
343
+ return deepFreeze(result);
344
+ }
345
+ function uniqueDigests(values, label) {
346
+ const result = unique(values, label);
347
+ for (const [index, value] of result.entries())
348
+ digest(value, `${label}[${index}]`);
349
+ return result;
350
+ }
351
+ function identifier(input, label) {
352
+ assertIdentifier(input, label);
353
+ return input;
354
+ }
355
+ function sourceZone(input, label) {
356
+ const value = identifier(input, label);
357
+ if (!CONTEXT_INTEGRITY_SOURCE_ZONES_V1.includes(value))
358
+ fail(`${label}_invalid`);
359
+ return value;
360
+ }
361
+ function positive(input, label) {
362
+ assertSafeInteger(input, label, 1);
363
+ return input;
364
+ }
365
+ function basisPoints(input, label) {
366
+ assertSafeInteger(input, label, 0);
367
+ if (input > 10_000)
368
+ fail(`${label}_out_of_range`);
369
+ return input;
370
+ }
371
+ function digest(input, label) {
372
+ assertDigest(input, label);
373
+ return input;
374
+ }
375
+ function compare(left, right) {
376
+ return left < right ? -1 : left > right ? 1 : 0;
377
+ }
378
+ function safeAdd(left, right, reason) {
379
+ const result = left + right;
380
+ if (!Number.isSafeInteger(result))
381
+ fail(reason);
382
+ return result;
383
+ }
384
+ function fail(message) {
385
+ throw new TypeError(message);
386
+ }
387
+ //# sourceMappingURL=context-integrity-analyzers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-integrity-analyzers.js","sourceRoot":"","sources":["../src/context-integrity-analyzers.ts"],"names":[],"mappings":"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"}