@framers/agentos 0.1.56 → 0.1.57
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 +67 -16
- package/dist/api/types/AgentOSResponse.d.ts +7 -0
- package/dist/api/types/AgentOSResponse.d.ts.map +1 -1
- package/dist/core/guardrails/IGuardrailService.d.ts +39 -0
- package/dist/core/guardrails/IGuardrailService.d.ts.map +1 -1
- package/dist/core/guardrails/ParallelGuardrailDispatcher.d.ts +92 -0
- package/dist/core/guardrails/ParallelGuardrailDispatcher.d.ts.map +1 -0
- package/dist/core/guardrails/ParallelGuardrailDispatcher.js +463 -0
- package/dist/core/guardrails/ParallelGuardrailDispatcher.js.map +1 -0
- package/dist/core/guardrails/guardrailDispatcher.d.ts +59 -1
- package/dist/core/guardrails/guardrailDispatcher.d.ts.map +1 -1
- package/dist/core/guardrails/guardrailDispatcher.js +49 -154
- package/dist/core/guardrails/guardrailDispatcher.js.map +1 -1
- package/dist/core/guardrails/index.d.ts +1 -0
- package/dist/core/guardrails/index.d.ts.map +1 -1
- package/dist/core/guardrails/index.js +2 -0
- package/dist/core/guardrails/index.js.map +1 -1
- package/dist/core/utils/index.d.ts +13 -0
- package/dist/core/utils/index.d.ts.map +1 -0
- package/dist/core/utils/index.js +13 -0
- package/dist/core/utils/index.js.map +1 -0
- package/dist/core/utils/text-utils.d.ts +164 -0
- package/dist/core/utils/text-utils.d.ts.map +1 -0
- package/dist/core/utils/text-utils.js +254 -0
- package/dist/core/utils/text-utils.js.map +1 -0
- package/dist/extensions/index.d.ts +0 -1
- package/dist/extensions/index.d.ts.map +1 -1
- package/dist/extensions/index.js +0 -2
- package/dist/extensions/index.js.map +1 -1
- package/package.json +1 -6
- package/dist/extensions/packs/pii-redaction/EntityMerger.d.ts +0 -127
- package/dist/extensions/packs/pii-redaction/EntityMerger.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/EntityMerger.js +0 -263
- package/dist/extensions/packs/pii-redaction/EntityMerger.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/PiiDetectionPipeline.d.ts +0 -199
- package/dist/extensions/packs/pii-redaction/PiiDetectionPipeline.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/PiiDetectionPipeline.js +0 -456
- package/dist/extensions/packs/pii-redaction/PiiDetectionPipeline.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/PiiRedactionGuardrail.d.ts +0 -121
- package/dist/extensions/packs/pii-redaction/PiiRedactionGuardrail.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/PiiRedactionGuardrail.js +0 -271
- package/dist/extensions/packs/pii-redaction/PiiRedactionGuardrail.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/RedactionEngine.d.ts +0 -61
- package/dist/extensions/packs/pii-redaction/RedactionEngine.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/RedactionEngine.js +0 -207
- package/dist/extensions/packs/pii-redaction/RedactionEngine.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/index.d.ts +0 -90
- package/dist/extensions/packs/pii-redaction/index.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/index.js +0 -195
- package/dist/extensions/packs/pii-redaction/index.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/IEntityRecognizer.d.ts +0 -151
- package/dist/extensions/packs/pii-redaction/recognizers/IEntityRecognizer.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/IEntityRecognizer.js +0 -14
- package/dist/extensions/packs/pii-redaction/recognizers/IEntityRecognizer.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/LlmJudgeRecognizer.d.ts +0 -177
- package/dist/extensions/packs/pii-redaction/recognizers/LlmJudgeRecognizer.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/LlmJudgeRecognizer.js +0 -420
- package/dist/extensions/packs/pii-redaction/recognizers/LlmJudgeRecognizer.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/NerModelRecognizer.d.ts +0 -145
- package/dist/extensions/packs/pii-redaction/recognizers/NerModelRecognizer.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/NerModelRecognizer.js +0 -299
- package/dist/extensions/packs/pii-redaction/recognizers/NerModelRecognizer.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/NlpPrefilterRecognizer.d.ts +0 -102
- package/dist/extensions/packs/pii-redaction/recognizers/NlpPrefilterRecognizer.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/NlpPrefilterRecognizer.js +0 -228
- package/dist/extensions/packs/pii-redaction/recognizers/NlpPrefilterRecognizer.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/RegexRecognizer.d.ts +0 -103
- package/dist/extensions/packs/pii-redaction/recognizers/RegexRecognizer.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/recognizers/RegexRecognizer.js +0 -275
- package/dist/extensions/packs/pii-redaction/recognizers/RegexRecognizer.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/tools/PiiRedactTool.d.ts +0 -118
- package/dist/extensions/packs/pii-redaction/tools/PiiRedactTool.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/tools/PiiRedactTool.js +0 -152
- package/dist/extensions/packs/pii-redaction/tools/PiiRedactTool.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/tools/PiiScanTool.d.ts +0 -98
- package/dist/extensions/packs/pii-redaction/tools/PiiScanTool.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/tools/PiiScanTool.js +0 -153
- package/dist/extensions/packs/pii-redaction/tools/PiiScanTool.js.map +0 -1
- package/dist/extensions/packs/pii-redaction/types.d.ts +0 -332
- package/dist/extensions/packs/pii-redaction/types.d.ts.map +0 -1
- package/dist/extensions/packs/pii-redaction/types.js +0 -83
- package/dist/extensions/packs/pii-redaction/types.js.map +0 -1
package/README.md
CHANGED
|
@@ -548,6 +548,22 @@ type ExtensionPackResolver =
|
|
|
548
548
|
3. `ExtensionManager` provides runtime access: `getTools()`, `getGuardrails()`, `getWorkflows()`, etc.
|
|
549
549
|
4. `MultiRegistryLoader` supports loading from multiple remote registries
|
|
550
550
|
|
|
551
|
+
**Lifecycle context and shared services:**
|
|
552
|
+
|
|
553
|
+
- `ExtensionLifecycleContext.getSecret(secretId)` gives packs host-resolved secrets at activation time
|
|
554
|
+
- `ExtensionLifecycleContext.services` provides a shared `ISharedServiceRegistry` for lazy singleton reuse across packs
|
|
555
|
+
- heavyweight dependencies such as NLP pipelines, ONNX models, embedding functions, and NLI models should be loaded through the shared registry rather than per-descriptor globals
|
|
556
|
+
|
|
557
|
+
**Built-in guardrail packs exported by `@framers/agentos`:**
|
|
558
|
+
|
|
559
|
+
| Pack | Import Path | Guardrail ID | Tool IDs | Purpose |
|
|
560
|
+
|------|-------------|--------------|----------|---------|
|
|
561
|
+
| PII Redaction | `@framers/agentos/extensions/packs/pii-redaction` | `pii-redaction-guardrail` | `pii_scan`, `pii_redact` | Four-tier PII detection and redaction |
|
|
562
|
+
| ML Classifiers | `@framers/agentos/extensions/packs/ml-classifiers` | `ml-classifier-guardrail` | `classify_content` | Toxicity, prompt-injection, and jailbreak detection |
|
|
563
|
+
| Topicality | `@framers/agentos/extensions/packs/topicality` | `topicality-guardrail` | `check_topic` | On-topic enforcement and session drift detection |
|
|
564
|
+
| Code Safety | `@framers/agentos/extensions/packs/code-safety` | `code-safety-guardrail` | `scan_code` | Regex-based code risk scanning across fenced code and tool args |
|
|
565
|
+
| Grounding Guard | `@framers/agentos/extensions/packs/grounding-guard` | `grounding-guardrail` | `check_grounding` | RAG-source claim verification and hallucination detection |
|
|
566
|
+
|
|
551
567
|
---
|
|
552
568
|
|
|
553
569
|
### Planning Engine
|
|
@@ -692,24 +708,32 @@ See [`docs/SAFETY_PRIMITIVES.md`](docs/SAFETY_PRIMITIVES.md) for the full safety
|
|
|
692
708
|
Content-level input/output filtering:
|
|
693
709
|
|
|
694
710
|
```typescript
|
|
695
|
-
enum GuardrailAction {
|
|
696
|
-
ALLOW = 'allow', // Pass through unchanged
|
|
697
|
-
FLAG = 'flag', // Pass through but log for review
|
|
698
|
-
SANITIZE = 'sanitize', // Replace with modified content (e.g., PII redaction)
|
|
699
|
-
BLOCK = 'block', // Reject entirely, terminate stream
|
|
700
|
-
}
|
|
701
|
-
|
|
702
711
|
interface IGuardrailService {
|
|
703
|
-
|
|
704
|
-
|
|
712
|
+
config?: {
|
|
713
|
+
evaluateStreamingChunks?: boolean;
|
|
714
|
+
maxStreamingEvaluations?: number;
|
|
715
|
+
canSanitize?: boolean;
|
|
716
|
+
timeoutMs?: number;
|
|
717
|
+
};
|
|
718
|
+
|
|
719
|
+
evaluateInput?(payload: GuardrailInputPayload): Promise<GuardrailEvaluationResult | null>;
|
|
720
|
+
evaluateOutput?(payload: GuardrailOutputPayload): Promise<GuardrailEvaluationResult | null>;
|
|
705
721
|
}
|
|
706
722
|
```
|
|
707
723
|
|
|
724
|
+
`GuardrailOutputPayload` also carries `ragSources?: RagRetrievedChunk[]`, which enables grounding-aware output checks against retrieved context.
|
|
725
|
+
|
|
708
726
|
Guardrails run at two points in the request lifecycle:
|
|
709
|
-
1. **Pre-processing** -- `evaluateInput()` inspects user input before
|
|
710
|
-
2. **Post-processing** -- `evaluateOutput()` inspects the
|
|
727
|
+
1. **Pre-processing** -- `evaluateInput()` inspects user input before orchestration
|
|
728
|
+
2. **Post-processing** -- `evaluateOutput()` inspects streaming chunks and/or the final response before emission
|
|
711
729
|
|
|
712
|
-
|
|
730
|
+
When multiple guardrails are registered, AgentOS uses a **two-phase dispatcher**:
|
|
731
|
+
1. **Phase 1 (sequential sanitizers)** -- guardrails with `config.canSanitize === true` run in registration order so each sanitizer sees the cumulative sanitized text
|
|
732
|
+
2. **Phase 2 (parallel classifiers)** -- all remaining guardrails run concurrently with worst-action aggregation (`BLOCK > FLAG > ALLOW`)
|
|
733
|
+
|
|
734
|
+
`ParallelGuardrailDispatcher` powers both input evaluation and output stream wrapping, with per-guardrail `timeoutMs` fail-open behavior for slow or degraded classifiers.
|
|
735
|
+
|
|
736
|
+
Multiple guardrails can be composed via the extension system, and each receives full context (user ID, session ID, persona ID, conversation ID, metadata) for context-aware policy decisions.
|
|
713
737
|
|
|
714
738
|
See [`docs/GUARDRAILS_USAGE.md`](docs/GUARDRAILS_USAGE.md) for implementation patterns.
|
|
715
739
|
|
|
@@ -1435,13 +1459,19 @@ await agent.initialize({
|
|
|
1435
1459
|
import {
|
|
1436
1460
|
AgentOS,
|
|
1437
1461
|
type IGuardrailService,
|
|
1438
|
-
type GuardrailContext,
|
|
1439
1462
|
GuardrailAction,
|
|
1463
|
+
type GuardrailInputPayload,
|
|
1464
|
+
type GuardrailOutputPayload,
|
|
1440
1465
|
} from '@framers/agentos';
|
|
1441
1466
|
import { createTestAgentOSConfig } from '@framers/agentos/config/AgentOSConfig';
|
|
1442
1467
|
|
|
1443
1468
|
const piiGuardrail: IGuardrailService = {
|
|
1444
|
-
|
|
1469
|
+
config: {
|
|
1470
|
+
evaluateStreamingChunks: true,
|
|
1471
|
+
canSanitize: true,
|
|
1472
|
+
},
|
|
1473
|
+
|
|
1474
|
+
async evaluateInput({ input }: GuardrailInputPayload) {
|
|
1445
1475
|
// Check for SSN patterns in user input
|
|
1446
1476
|
const ssnPattern = /\b\d{3}-\d{2}-\d{4}\b/g;
|
|
1447
1477
|
if (input.textInput && ssnPattern.test(input.textInput)) {
|
|
@@ -1455,8 +1485,15 @@ const piiGuardrail: IGuardrailService = {
|
|
|
1455
1485
|
return { action: GuardrailAction.ALLOW };
|
|
1456
1486
|
},
|
|
1457
1487
|
|
|
1458
|
-
async evaluateOutput(
|
|
1459
|
-
|
|
1488
|
+
async evaluateOutput({ chunk }: GuardrailOutputPayload) {
|
|
1489
|
+
const text =
|
|
1490
|
+
chunk.type === 'TEXT_DELTA'
|
|
1491
|
+
? chunk.textDelta ?? ''
|
|
1492
|
+
: chunk.type === 'FINAL_RESPONSE'
|
|
1493
|
+
? chunk.finalResponseText ?? ''
|
|
1494
|
+
: '';
|
|
1495
|
+
|
|
1496
|
+
if (text.toLowerCase().includes('password')) {
|
|
1460
1497
|
return {
|
|
1461
1498
|
action: GuardrailAction.BLOCK,
|
|
1462
1499
|
reason: 'Output contains potentially sensitive credential information',
|
|
@@ -1472,6 +1509,11 @@ const config = await createTestAgentOSConfig();
|
|
|
1472
1509
|
await agent.initialize({ ...config, guardrailService: piiGuardrail });
|
|
1473
1510
|
```
|
|
1474
1511
|
|
|
1512
|
+
> **For production PII redaction**, use the built-in `createPiiRedactionPack()` extension
|
|
1513
|
+
> instead of hand-rolled regex. It provides four-tier detection (regex + NLP + BERT NER +
|
|
1514
|
+
> LLM-as-judge), streaming support, and configurable redaction styles. See
|
|
1515
|
+
> [GUARDRAILS_USAGE.md](docs/GUARDRAILS_USAGE.md) for full examples.
|
|
1516
|
+
|
|
1475
1517
|
### Channel Adapters
|
|
1476
1518
|
|
|
1477
1519
|
```typescript
|
|
@@ -1557,6 +1599,7 @@ import { CircuitBreaker, CostGuard, StuckDetector } from '@framers/agentos/core/
|
|
|
1557
1599
|
|
|
1558
1600
|
// Guardrails
|
|
1559
1601
|
import { GuardrailAction } from '@framers/agentos/core/guardrails';
|
|
1602
|
+
import { ParallelGuardrailDispatcher } from '@framers/agentos/core/guardrails';
|
|
1560
1603
|
|
|
1561
1604
|
// Tools
|
|
1562
1605
|
import type { ITool, ToolExecutionResult } from '@framers/agentos/core/tools';
|
|
@@ -1571,6 +1614,14 @@ import { GraphRAGEngine } from '@framers/agentos/rag/graphrag';
|
|
|
1571
1614
|
// Skills
|
|
1572
1615
|
import { SkillRegistry, SkillLoader } from '@framers/agentos/skills';
|
|
1573
1616
|
|
|
1617
|
+
// Extension runtime helpers and built-in guardrail packs
|
|
1618
|
+
import { SharedServiceRegistry } from '@framers/agentos';
|
|
1619
|
+
import { createPiiRedactionPack } from '@framers/agentos/extensions/packs/pii-redaction';
|
|
1620
|
+
import { createMLClassifierPack } from '@framers/agentos/extensions/packs/ml-classifiers';
|
|
1621
|
+
import { createTopicalityPack } from '@framers/agentos/extensions/packs/topicality';
|
|
1622
|
+
import { createCodeSafetyPack } from '@framers/agentos/extensions/packs/code-safety';
|
|
1623
|
+
import { createGroundingGuardPack } from '@framers/agentos/extensions/packs/grounding-guard';
|
|
1624
|
+
|
|
1574
1625
|
// Deep imports (wildcard exports)
|
|
1575
1626
|
import { SomeType } from '@framers/agentos/core/safety/CircuitBreaker';
|
|
1576
1627
|
import { SomeConfig } from '@framers/agentos/config/ToolOrchestratorConfig';
|
|
@@ -118,6 +118,13 @@ export interface AgentOSFinalResponseChunk extends AgentOSResponseChunk {
|
|
|
118
118
|
};
|
|
119
119
|
updatedConversationContext?: ConversationContext;
|
|
120
120
|
activePersonaDetails?: Partial<IPersonaDefinition>;
|
|
121
|
+
/**
|
|
122
|
+
* RAG source chunks that were used to generate this response.
|
|
123
|
+
* Populated by the GMI when RAG retrieval was performed.
|
|
124
|
+
* Used by grounding guardrails to verify response faithfulness.
|
|
125
|
+
* Undefined when no RAG retrieval was performed.
|
|
126
|
+
*/
|
|
127
|
+
ragSources?: import('../../rag').RagRetrievedChunk[];
|
|
121
128
|
}
|
|
122
129
|
/**
|
|
123
130
|
* @typedef {Object} AgentOSErrorChunk
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AgentOSResponse.d.ts","sourceRoot":"","sources":["../../../src/api/types/AgentOSResponse.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AgentOSResponse.d.ts","sourceRoot":"","sources":["../../../src/api/types/AgentOSResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -166,6 +166,13 @@ export interface GuardrailOutputPayload {
|
|
|
166
166
|
context: GuardrailContext;
|
|
167
167
|
/** The response chunk to evaluate */
|
|
168
168
|
chunk: AgentOSResponse;
|
|
169
|
+
/**
|
|
170
|
+
* RAG source chunks retrieved for this request.
|
|
171
|
+
* Available to output guardrails for grounding verification.
|
|
172
|
+
* Persists across all chunks in a stream (not just the final chunk).
|
|
173
|
+
* Undefined when no RAG retrieval was performed.
|
|
174
|
+
*/
|
|
175
|
+
ragSources?: import('../../rag').RagRetrievedChunk[];
|
|
169
176
|
}
|
|
170
177
|
/**
|
|
171
178
|
* Configuration for guardrail evaluation behavior.
|
|
@@ -220,6 +227,38 @@ export interface GuardrailConfig {
|
|
|
220
227
|
* @default undefined (no limit)
|
|
221
228
|
*/
|
|
222
229
|
maxStreamingEvaluations?: number;
|
|
230
|
+
/**
|
|
231
|
+
* Whether this guardrail may return SANITIZE actions that modify content.
|
|
232
|
+
*
|
|
233
|
+
* When true, this guardrail runs in Phase 1 (sequential) of the parallel
|
|
234
|
+
* dispatcher — it sees and can modify text produced by prior sanitizers.
|
|
235
|
+
* Each sanitizer receives the cumulative sanitized text from all preceding
|
|
236
|
+
* sanitizers in registration order.
|
|
237
|
+
*
|
|
238
|
+
* When false or omitted, this guardrail runs in Phase 2 (parallel) on
|
|
239
|
+
* the already-sanitized text from Phase 1. It may return BLOCK, FLAG, or
|
|
240
|
+
* ALLOW. If a Phase 2 guardrail returns SANITIZE, the action is
|
|
241
|
+
* **downgraded to FLAG** with a warning logged, because concurrent
|
|
242
|
+
* sanitization would produce non-deterministic results.
|
|
243
|
+
*
|
|
244
|
+
* @default false
|
|
245
|
+
*/
|
|
246
|
+
canSanitize?: boolean;
|
|
247
|
+
/**
|
|
248
|
+
* Maximum time in milliseconds to wait for this guardrail's evaluation.
|
|
249
|
+
*
|
|
250
|
+
* If exceeded, the evaluation is abandoned (fail-open), a warning is
|
|
251
|
+
* logged, and the guardrail contributes nothing to the result. Prevents
|
|
252
|
+
* a slow guardrail (e.g., LLM-based) from blocking the entire pipeline.
|
|
253
|
+
*
|
|
254
|
+
* **Safety note:** Do NOT set timeoutMs on safety-critical guardrails
|
|
255
|
+
* (e.g., CSAM detection, compliance-mandatory filters) because fail-open
|
|
256
|
+
* on timeout means content passes unchecked. Only use on guardrails
|
|
257
|
+
* where a missed evaluation is acceptable.
|
|
258
|
+
*
|
|
259
|
+
* @default undefined (no timeout — wait indefinitely)
|
|
260
|
+
*/
|
|
261
|
+
timeoutMs?: number;
|
|
223
262
|
}
|
|
224
263
|
/**
|
|
225
264
|
* Contract for implementing custom guardrail logic.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IGuardrailService.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/IGuardrailService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,oBAAY,eAAe;IACzB;;;OAGG;IACH,KAAK,UAAU;IAEf;;;OAGG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,QAAQ,aAAa;IAErB;;;;OAIG;IACH,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,MAAM,EAAE,eAAe,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,2CAA2C;IAC3C,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,qCAAqC;IACrC,KAAK,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"IGuardrailService.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/IGuardrailService.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,oBAAY,eAAe;IACzB;;;OAGG;IACH,KAAK,UAAU;IAEf;;;OAGG;IACH,IAAI,SAAS;IAEb;;;;OAIG;IACH,QAAQ,aAAa;IAErB;;;;OAIG;IACH,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IAEf,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAC;IAElB,oDAAoD;IACpD,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,mDAAmD;IACnD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,kDAAkD;IAClD,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,WAAW,yBAAyB;IACxC,8DAA8D;IAC9D,MAAM,EAAE,eAAe,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAEnC;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAElB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;;;;;GAMG;AACH,MAAM,WAAW,qBAAqB;IACpC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,2CAA2C;IAC3C,KAAK,EAAE,YAAY,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,sBAAsB;IACrC,kDAAkD;IAClD,OAAO,EAAE,gBAAgB,CAAC;IAE1B,qCAAqC;IACrC,KAAK,EAAE,eAAe,CAAC;IAEvB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,WAAW,EAAE,iBAAiB,EAAE,CAAC;CACtD;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,eAAe;IAC9B;;;;;;;;;;;;;;;;;;;OAmBG;IACH,uBAAuB,CAAC,EAAE,OAAO,CAAC;IAElC;;;;;;;;OAQG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;;;;;;;;;;;;;;OAeG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IAEzB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;IAE1F;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC,CAAC;CAC7F"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module ParallelGuardrailDispatcher
|
|
3
|
+
*
|
|
4
|
+
* Two-phase parallel guardrail dispatcher that separates sanitizers
|
|
5
|
+
* (sequential, order-dependent) from classifiers (parallel, independent).
|
|
6
|
+
*
|
|
7
|
+
* **Phase 1 (Sequential):** Guardrails with `config.canSanitize === true`
|
|
8
|
+
* run one-at-a-time in registration order. Each sanitizer receives the
|
|
9
|
+
* cumulative output of all preceding sanitizers. A BLOCK here short-circuits
|
|
10
|
+
* the entire pipeline.
|
|
11
|
+
*
|
|
12
|
+
* **Phase 2 (Parallel):** Remaining guardrails run concurrently via
|
|
13
|
+
* `Promise.allSettled`. They receive the fully-sanitized text from Phase 1.
|
|
14
|
+
* If any Phase 2 guardrail returns SANITIZE, it is **downgraded to FLAG**
|
|
15
|
+
* because concurrent sanitization would produce non-deterministic results.
|
|
16
|
+
*
|
|
17
|
+
* The final outcome uses "worst-wins" aggregation:
|
|
18
|
+
* BLOCK (severity 3) > FLAG (severity 2) > ALLOW (severity 0).
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { ParallelGuardrailDispatcher } from '../../core/guardrails';
|
|
23
|
+
*
|
|
24
|
+
* const outcome = await ParallelGuardrailDispatcher.evaluateInput(
|
|
25
|
+
* [piiRedactor, toxicityClassifier, policyGuard],
|
|
26
|
+
* userInput,
|
|
27
|
+
* guardrailContext,
|
|
28
|
+
* );
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import type { AgentOSInput } from '../../api/types/AgentOSInput';
|
|
32
|
+
import { type AgentOSResponse } from '../../api/types/AgentOSResponse';
|
|
33
|
+
import { type GuardrailContext, type IGuardrailService } from './IGuardrailService';
|
|
34
|
+
import type { GuardrailInputOutcome, GuardrailOutputOptions } from './guardrailDispatcher';
|
|
35
|
+
/**
|
|
36
|
+
* Stateless two-phase parallel guardrail dispatcher.
|
|
37
|
+
*
|
|
38
|
+
* All methods are static — no instantiation needed. The class exists purely
|
|
39
|
+
* as a namespace to keep the two public entry points grouped.
|
|
40
|
+
*/
|
|
41
|
+
export declare class ParallelGuardrailDispatcher {
|
|
42
|
+
/**
|
|
43
|
+
* Evaluate user input through registered guardrails using two-phase execution.
|
|
44
|
+
*
|
|
45
|
+
* **Phase 1 (Sequential — sanitizers):**
|
|
46
|
+
* Guardrails with `config.canSanitize === true` run one-at-a-time in
|
|
47
|
+
* registration order. Each sees (and may modify) the cumulative sanitized
|
|
48
|
+
* input. A BLOCK result short-circuits immediately — Phase 2 never runs.
|
|
49
|
+
*
|
|
50
|
+
* **Phase 2 (Parallel — classifiers):**
|
|
51
|
+
* All remaining guardrails run concurrently via `Promise.allSettled` on
|
|
52
|
+
* the text produced by Phase 1. A Phase 2 SANITIZE is downgraded to FLAG.
|
|
53
|
+
*
|
|
54
|
+
* **Aggregation:** worst-wins (BLOCK > FLAG > ALLOW). The singular
|
|
55
|
+
* `evaluation` field is set to the first BLOCK, else the worst-severity
|
|
56
|
+
* evaluation, else the last evaluation by registration order.
|
|
57
|
+
*
|
|
58
|
+
* @param services - Array of guardrail services (already normalized)
|
|
59
|
+
* @param input - User input to evaluate
|
|
60
|
+
* @param context - Conversational context for policy decisions
|
|
61
|
+
* @returns Outcome with sanitized input and all evaluations in registration order
|
|
62
|
+
*/
|
|
63
|
+
static evaluateInput(services: IGuardrailService[], input: AgentOSInput, context: GuardrailContext): Promise<GuardrailInputOutcome>;
|
|
64
|
+
/**
|
|
65
|
+
* Wrap a response stream with two-phase guardrail filtering.
|
|
66
|
+
*
|
|
67
|
+
* Partitions services into four groups (once, up front):
|
|
68
|
+
* 1. **Streaming sanitizers** (`canSanitize && evaluateStreamingChunks`)
|
|
69
|
+
* 2. **Streaming parallel** classifiers (`evaluateStreamingChunks && !canSanitize`)
|
|
70
|
+
* 3. **Final sanitizers** (`canSanitize && !evaluateStreamingChunks`)
|
|
71
|
+
* 4. **Final parallel** classifiers (the rest with `evaluateOutput`)
|
|
72
|
+
*
|
|
73
|
+
* For each TEXT_DELTA chunk: Phase 1 runs streaming sanitizers sequentially
|
|
74
|
+
* (with per-service rate limiting), then Phase 2 runs streaming classifiers
|
|
75
|
+
* in parallel.
|
|
76
|
+
*
|
|
77
|
+
* For each isFinal chunk: Phase 1 runs final sanitizers sequentially, then
|
|
78
|
+
* Phase 2 runs final classifiers in parallel. All services with
|
|
79
|
+
* `evaluateOutput` participate in final evaluation.
|
|
80
|
+
*
|
|
81
|
+
* A BLOCK in either phase terminates the stream immediately with an error
|
|
82
|
+
* chunk.
|
|
83
|
+
*
|
|
84
|
+
* @param services - Array of guardrail services (already normalized)
|
|
85
|
+
* @param context - Conversational context for policy decisions
|
|
86
|
+
* @param stream - Source response stream to filter
|
|
87
|
+
* @param options - Stream options and input evaluations to embed
|
|
88
|
+
* @returns Wrapped async generator with guardrail filtering applied
|
|
89
|
+
*/
|
|
90
|
+
static wrapOutput(services: IGuardrailService[], context: GuardrailContext, stream: AsyncGenerator<AgentOSResponse, void, undefined>, options: GuardrailOutputOptions): AsyncGenerator<AgentOSResponse, void, undefined>;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=ParallelGuardrailDispatcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ParallelGuardrailDispatcher.d.ts","sourceRoot":"","sources":["../../../src/core/guardrails/ParallelGuardrailDispatcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAEL,KAAK,gBAAgB,EAErB,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAqH3F;;;;;GAKG;AACH,qBAAa,2BAA2B;IAKtC;;;;;;;;;;;;;;;;;;;;OAoBG;WACU,aAAa,CACxB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,qBAAqB,CAAC;IAwIjC;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;WACW,UAAU,CACtB,QAAQ,EAAE,iBAAiB,EAAE,EAC7B,OAAO,EAAE,gBAAgB,EACzB,MAAM,EAAE,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,EACxD,OAAO,EAAE,sBAAsB,GAC9B,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC;CAmRpD"}
|