@framers/agentos 0.13.2 → 0.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (56) hide show
  1. package/dist/api/AgentOS.d.ts +29 -0
  2. package/dist/api/AgentOS.d.ts.map +1 -1
  3. package/dist/api/AgentOS.js +137 -10
  4. package/dist/api/AgentOS.js.map +1 -1
  5. package/dist/api/runtime/AgentOSOrchestrator.d.ts +7 -0
  6. package/dist/api/runtime/AgentOSOrchestrator.d.ts.map +1 -1
  7. package/dist/api/runtime/AgentOSOrchestrator.js +7 -0
  8. package/dist/api/runtime/AgentOSOrchestrator.js.map +1 -1
  9. package/dist/cognition/emergent/executor/QuickJSExecutor.d.ts.map +1 -1
  10. package/dist/cognition/emergent/executor/QuickJSExecutor.js +28 -7
  11. package/dist/cognition/emergent/executor/QuickJSExecutor.js.map +1 -1
  12. package/dist/cognition/emergent/executor/guest-prelude.d.ts.map +1 -1
  13. package/dist/cognition/emergent/executor/guest-prelude.js +6 -0
  14. package/dist/cognition/emergent/executor/guest-prelude.js.map +1 -1
  15. package/dist/cognition/emergent/executor/guest-surface.d.ts.map +1 -1
  16. package/dist/cognition/emergent/executor/guest-surface.js +10 -0
  17. package/dist/cognition/emergent/executor/guest-surface.js.map +1 -1
  18. package/dist/cognition/substrate/GMI.d.ts.map +1 -1
  19. package/dist/cognition/substrate/GMI.js +6 -0
  20. package/dist/cognition/substrate/GMI.js.map +1 -1
  21. package/dist/cognition/substrate/personas/IPersonaDefinition.d.ts +6 -0
  22. package/dist/cognition/substrate/personas/IPersonaDefinition.d.ts.map +1 -1
  23. package/dist/cognition/substrate/personas/SoulLoader.js.map +1 -1
  24. package/dist/cognition/substrate/personas/hardLimits.d.ts +16 -0
  25. package/dist/cognition/substrate/personas/hardLimits.d.ts.map +1 -0
  26. package/dist/cognition/substrate/personas/hardLimits.js +21 -0
  27. package/dist/cognition/substrate/personas/hardLimits.js.map +1 -0
  28. package/dist/core/conversation/ConversationContext.d.ts +8 -0
  29. package/dist/core/conversation/ConversationContext.d.ts.map +1 -1
  30. package/dist/core/conversation/ConversationContext.js +17 -0
  31. package/dist/core/conversation/ConversationContext.js.map +1 -1
  32. package/dist/core/utils/errors.d.ts +2 -0
  33. package/dist/core/utils/errors.d.ts.map +1 -1
  34. package/dist/core/utils/errors.js +3 -0
  35. package/dist/core/utils/errors.js.map +1 -1
  36. package/dist/safety/guardrails/IGuardrailService.d.ts +11 -0
  37. package/dist/safety/guardrails/IGuardrailService.d.ts.map +1 -1
  38. package/dist/safety/guardrails/ParallelGuardrailDispatcher.d.ts.map +1 -1
  39. package/dist/safety/guardrails/ParallelGuardrailDispatcher.js +206 -80
  40. package/dist/safety/guardrails/ParallelGuardrailDispatcher.js.map +1 -1
  41. package/dist/safety/guardrails/builtin/PhraseListGuardrail.d.ts +109 -0
  42. package/dist/safety/guardrails/builtin/PhraseListGuardrail.d.ts.map +1 -0
  43. package/dist/safety/guardrails/builtin/PhraseListGuardrail.js +180 -0
  44. package/dist/safety/guardrails/builtin/PhraseListGuardrail.js.map +1 -0
  45. package/dist/safety/guardrails/guardrailDispatcher.d.ts +20 -0
  46. package/dist/safety/guardrails/guardrailDispatcher.d.ts.map +1 -1
  47. package/dist/safety/guardrails/guardrailDispatcher.js.map +1 -1
  48. package/dist/safety/guardrails/index.d.ts +3 -1
  49. package/dist/safety/guardrails/index.d.ts.map +1 -1
  50. package/dist/safety/guardrails/index.js +4 -0
  51. package/dist/safety/guardrails/index.js.map +1 -1
  52. package/dist/safety/guardrails/requiredGuardrails.d.ts +34 -0
  53. package/dist/safety/guardrails/requiredGuardrails.d.ts.map +1 -0
  54. package/dist/safety/guardrails/requiredGuardrails.js +68 -0
  55. package/dist/safety/guardrails/requiredGuardrails.js.map +1 -0
  56. package/package.json +1 -1
@@ -0,0 +1,109 @@
1
+ /**
2
+ * @module guardrails/builtin/PhraseListGuardrail
3
+ *
4
+ * A guard over a reviewed list of phrases. Each entry blocks on a match, or asks a judge whether the match, read in
5
+ * its context, crosses the rule. A blocked reply can be answered with a fixed replacement per rule, so a product's
6
+ * safety templates reach the person in place of the model's words.
7
+ *
8
+ * The text is normalised before matching (NFKC, case folded, zero-width characters and combining marks removed,
9
+ * common Cyrillic and Greek look-alikes mapped to Latin letters, curly quotes straightened, whitespace collapsed), so
10
+ * a phrase cannot slip past by a lookalike letter or an invisible joiner.
11
+ *
12
+ * The guard fails closed: a judge that throws, answers nothing usable, or answers with too little confidence blocks.
13
+ */
14
+ import type { ExtensionPack } from '../../../extensions/manifest';
15
+ import type { FallbackProviderEntry } from '../../../api/generateText';
16
+ import { type JudgeLlmConfig } from '../../../core/llm/providers/judge-config';
17
+ import { type GuardrailConfig, type GuardrailContext, type GuardrailEvaluationResult, type GuardrailInputPayload, type GuardrailOutputPayload, type IGuardrailService } from '../IGuardrailService';
18
+ export interface PhraseEntry {
19
+ phrase: string;
20
+ /**
21
+ * `word`: the phrase between word boundaries; `substring`: anywhere; `regex`: the phrase is a regular expression.
22
+ * Every entry runs over the normalised text (lower case, marks and zero-width characters removed, look-alike
23
+ * letters mapped to Latin, quotes straightened): a word or substring phrase is normalised the same way before it is
24
+ * compiled, while a regex source is compiled as written, so write a regex in that normalised form.
25
+ */
26
+ match: 'word' | 'substring' | 'regex';
27
+ /** `block`: a match blocks; `judge`: the judge decides whether the match, in context, crosses the rule. */
28
+ onMatch: 'block' | 'judge';
29
+ /** The rule the entry belongs to: the block's `reasonCode` and the key of its replacement. */
30
+ ruleId?: string;
31
+ }
32
+ export interface PhraseListSnapshot {
33
+ version: string;
34
+ reviewedAt: string;
35
+ reviewedBy: string;
36
+ entries: PhraseEntry[];
37
+ }
38
+ export interface PhraseListSource {
39
+ load(): Promise<PhraseListSnapshot>;
40
+ }
41
+ export interface PhraseJudgeVerdict {
42
+ block: boolean;
43
+ confidence: number;
44
+ reason?: string;
45
+ }
46
+ export interface PhraseJudge {
47
+ judge(text: string, matched: readonly PhraseEntry[], context: GuardrailContext): Promise<PhraseJudgeVerdict>;
48
+ }
49
+ export interface PhraseListGuardrailOptions {
50
+ id: string;
51
+ source: PhraseListSource;
52
+ /** Required when any entry is `judge`. */
53
+ judge?: PhraseJudge;
54
+ /** A judge's block counts only at or above this confidence; a lower one blocks all the same (fail closed). Default 0.7. */
55
+ judgeThreshold?: number;
56
+ /** The stages the guard evaluates. Default both. */
57
+ stages?: Array<'input' | 'output'>;
58
+ /** The reply a block is answered with when no rule's own replacement applies. */
59
+ replacementText?: string;
60
+ /** The reply for a rule's block. */
61
+ replacementFor?(ruleId: string): string | undefined;
62
+ /** The deadline for one evaluation, judge included. Default 8 seconds. */
63
+ timeoutMs?: number;
64
+ /** Replaces the built-in normalisation. */
65
+ normalize?(text: string): string;
66
+ }
67
+ /** The built-in normalisation, applied alike to the list and to every text judged. */
68
+ export declare function normalizePhraseText(text: string): string;
69
+ /** A list held in code or built from the product's own files. */
70
+ export declare class StaticPhraseListSource implements PhraseListSource {
71
+ private readonly snapshot;
72
+ constructor(snapshot: PhraseListSnapshot);
73
+ load(): Promise<PhraseListSnapshot>;
74
+ }
75
+ export declare class PhraseListGuardrail implements IGuardrailService {
76
+ private readonly opts;
77
+ readonly id: string;
78
+ readonly config: GuardrailConfig;
79
+ private compiled;
80
+ private loaded;
81
+ private readonly normalize;
82
+ private readonly stages;
83
+ private constructor();
84
+ /** Loads the list and compiles it. Refuses a list that does not load, is empty, or has judge entries and no judge. */
85
+ static create(opts: PhraseListGuardrailOptions): Promise<PhraseListGuardrail>;
86
+ /** The list in force: its version and when and by whom it was reviewed. */
87
+ get snapshot(): PhraseListSnapshot | null;
88
+ /**
89
+ * Loads the list again and swaps it in whole. A list that fails to load or compile leaves the last good one in force
90
+ * (and throws, so the caller hears of it).
91
+ */
92
+ reload(): Promise<void>;
93
+ evaluateInput({ input, context }: GuardrailInputPayload): Promise<GuardrailEvaluationResult | null>;
94
+ evaluateOutput({ chunk, context }: GuardrailOutputPayload): Promise<GuardrailEvaluationResult | null>;
95
+ private block;
96
+ private evaluateText;
97
+ }
98
+ /** A judge on a language model: asked whether the matched phrases, read in the text, cross the rule's criteria. */
99
+ export declare function createLlmPhraseJudge(opts: JudgeLlmConfig & {
100
+ criteria: string;
101
+ apiKey?: string;
102
+ baseUrl?: string;
103
+ /** The providers the call may fall back to. Default none: an undefined chain would reach any provider whose key the host holds. */
104
+ fallbackProviders?: FallbackProviderEntry[];
105
+ timeoutMs?: number;
106
+ }): PhraseJudge;
107
+ /** The guard as an extension pack, for `extensionManifest.packs: [{ factory: () => createPhraseListPack(guard) }]`. */
108
+ export declare function createPhraseListPack(guard: PhraseListGuardrail): ExtensionPack;
109
+ //# sourceMappingURL=PhraseListGuardrail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhraseListGuardrail.d.ts","sourceRoot":"","sources":["../../../../src/safety/guardrails/builtin/PhraseListGuardrail.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,180 @@
1
+ import { EXTENSION_KIND_GUARDRAIL } from '../../../extensions/types.js';
2
+ import { resolveJudgeLlm } from '../../../core/llm/providers/judge-config.js';
3
+ import { AgentOSResponseChunkType } from '../../../api/types/AgentOSResponse.js';
4
+ import { GuardrailAction, } from '../IGuardrailService.js';
5
+ const ZERO_WIDTH = /[\u00AD\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\uFEFF]/g;
6
+ const LOOKALIKES = {
7
+ а: 'a', в: 'b', е: 'e', ё: 'e', к: 'k', м: 'm', н: 'h', о: 'o', р: 'p', с: 'c', т: 't', у: 'y', х: 'x', і: 'i', ї: 'i', ј: 'j', ѕ: 's', ԁ: 'd', һ: 'h', ӏ: 'l', ԛ: 'q', ԝ: 'w',
8
+ α: 'a', β: 'b', ε: 'e', η: 'n', ι: 'i', κ: 'k', ν: 'v', ο: 'o', ρ: 'p', τ: 't', υ: 'u', χ: 'x', ϲ: 'c', ɡ: 'g',
9
+ };
10
+ const LOOKALIKE_PATTERN = new RegExp(`[${Object.keys(LOOKALIKES).join('')}]`, 'g');
11
+ /** The built-in normalisation, applied alike to the list and to every text judged. */
12
+ export function normalizePhraseText(text) {
13
+ return text
14
+ .normalize('NFKC')
15
+ .toLowerCase()
16
+ .replace(ZERO_WIDTH, '')
17
+ .normalize('NFD')
18
+ .replace(/\p{M}+/gu, '')
19
+ .normalize('NFC')
20
+ .replace(LOOKALIKE_PATTERN, (ch) => LOOKALIKES[ch] ?? ch)
21
+ .replace(/[‘’‛′]/g, "'")
22
+ .replace(/[“”‟″]/g, '"')
23
+ .replace(/\s+/g, ' ')
24
+ .trim();
25
+ }
26
+ const escapeRegExp = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
27
+ function compile(entries, normalize) {
28
+ return entries.map((entry) => {
29
+ if (entry.match === 'regex') {
30
+ const re = new RegExp(entry.phrase, 'iu');
31
+ return { entry, test: (t) => re.test(t) };
32
+ }
33
+ const phrase = normalize(entry.phrase);
34
+ if (!phrase)
35
+ throw new Error(`the phrase list holds an empty phrase${entry.ruleId ? ` under ${entry.ruleId}` : ''}`);
36
+ if (entry.match === 'substring')
37
+ return { entry, test: (t) => t.includes(phrase) };
38
+ const re = new RegExp(`(?<![\\p{L}\\p{N}])${escapeRegExp(phrase)}(?![\\p{L}\\p{N}])`, 'u');
39
+ return { entry, test: (t) => re.test(t) };
40
+ });
41
+ }
42
+ /** A list held in code or built from the product's own files. */
43
+ export class StaticPhraseListSource {
44
+ constructor(snapshot) {
45
+ this.snapshot = snapshot;
46
+ }
47
+ async load() {
48
+ return this.snapshot;
49
+ }
50
+ }
51
+ export class PhraseListGuardrail {
52
+ constructor(opts) {
53
+ this.opts = opts;
54
+ this.compiled = [];
55
+ this.loaded = null;
56
+ this.id = opts.id;
57
+ this.config = { failClosed: true, timeoutMs: opts.timeoutMs ?? 8000, canSanitize: false, evaluateStreamingChunks: false };
58
+ this.normalize = opts.normalize ?? normalizePhraseText;
59
+ this.stages = new Set(opts.stages ?? ['input', 'output']);
60
+ }
61
+ /** Loads the list and compiles it. Refuses a list that does not load, is empty, or has judge entries and no judge. */
62
+ static async create(opts) {
63
+ const guard = new PhraseListGuardrail(opts);
64
+ await guard.reload();
65
+ return guard;
66
+ }
67
+ /** The list in force: its version and when and by whom it was reviewed. */
68
+ get snapshot() {
69
+ return this.loaded;
70
+ }
71
+ /**
72
+ * Loads the list again and swaps it in whole. A list that fails to load or compile leaves the last good one in force
73
+ * (and throws, so the caller hears of it).
74
+ */
75
+ async reload() {
76
+ const snapshot = await this.opts.source.load();
77
+ if (!snapshot || !Array.isArray(snapshot.entries) || snapshot.entries.length === 0) {
78
+ throw new Error(`the phrase list for ${this.id} is empty`);
79
+ }
80
+ if (!this.opts.judge && snapshot.entries.some((e) => e.onMatch === 'judge')) {
81
+ throw new Error(`the phrase list for ${this.id} has judge entries and the guard has no judge`);
82
+ }
83
+ const compiled = compile(snapshot.entries, this.normalize);
84
+ // the swap happens only once the whole list compiled
85
+ this.compiled = compiled;
86
+ this.loaded = snapshot;
87
+ }
88
+ async evaluateInput({ input, context }) {
89
+ if (!this.stages.has('input') || typeof input.textInput !== 'string' || !input.textInput)
90
+ return null;
91
+ return this.evaluateText(input.textInput, context);
92
+ }
93
+ async evaluateOutput({ chunk, context }) {
94
+ if (!this.stages.has('output') || chunk.type !== AgentOSResponseChunkType.FINAL_RESPONSE)
95
+ return null;
96
+ const text = chunk.finalResponseText;
97
+ if (typeof text !== 'string' || !text)
98
+ return null;
99
+ return this.evaluateText(text, context);
100
+ }
101
+ block(entry, reason) {
102
+ const ruleId = entry.ruleId ?? 'PHRASE_LIST';
103
+ const replacement = (entry.ruleId ? this.opts.replacementFor?.(entry.ruleId) : undefined) ?? this.opts.replacementText;
104
+ return {
105
+ action: GuardrailAction.BLOCK,
106
+ reason,
107
+ reasonCode: ruleId,
108
+ metadata: { guardrailId: this.id, ruleId, listVersion: this.loaded?.version },
109
+ ...(replacement ? { replacementText: replacement } : {}),
110
+ };
111
+ }
112
+ async evaluateText(text, context) {
113
+ const normalized = this.normalize(text);
114
+ const hits = this.compiled.filter((c) => c.test(normalized)).map((c) => c.entry);
115
+ if (hits.length === 0)
116
+ return null;
117
+ const blocking = hits.find((h) => h.onMatch === 'block');
118
+ if (blocking)
119
+ return this.block(blocking, 'The text matched a phrase on the reviewed list.');
120
+ const toJudge = hits.filter((h) => h.onMatch === 'judge');
121
+ const threshold = this.opts.judgeThreshold ?? 0.7;
122
+ let verdict = null;
123
+ try {
124
+ verdict = await this.opts.judge.judge(text, toJudge, context);
125
+ }
126
+ catch {
127
+ return this.block(toJudge[0], 'The judge could not answer, so the match blocks.');
128
+ }
129
+ const usable = verdict && typeof verdict.block === 'boolean' && typeof verdict.confidence === 'number' && Number.isFinite(verdict.confidence);
130
+ if (!usable)
131
+ return this.block(toJudge[0], 'The judge gave no usable answer, so the match blocks.');
132
+ if (verdict.block)
133
+ return this.block(toJudge[0], verdict.reason ?? 'The judge found the match crosses the rule.');
134
+ if (verdict.confidence < threshold)
135
+ return this.block(toJudge[0], 'The judge was not sure enough that the match is safe, so it blocks.');
136
+ return null;
137
+ }
138
+ }
139
+ /** A judge on a language model: asked whether the matched phrases, read in the text, cross the rule's criteria. */
140
+ export function createLlmPhraseJudge(opts) {
141
+ const sel = resolveJudgeLlm({ model: opts.model, provider: opts.provider, effort: opts.effort });
142
+ return {
143
+ async judge(text, matched) {
144
+ const { generateText } = await import('../../../api/generateText.js');
145
+ const system = [
146
+ 'You judge whether a text crosses a rule. A reviewed phrase list matched the phrases named below; decide whether, read in the text, they cross the rule.',
147
+ '',
148
+ '## The rule',
149
+ opts.criteria,
150
+ '',
151
+ 'Respond with ONLY a JSON object: { "block": boolean, "confidence": number between 0 and 1, "reason": string }. No other text.',
152
+ ].join('\n');
153
+ const prompt = [`Matched phrases: ${matched.map((m) => JSON.stringify(m.phrase)).join(', ')}`, '', 'Text:', text].join('\n');
154
+ const result = await generateText({
155
+ provider: sel.provider,
156
+ model: sel.model,
157
+ system,
158
+ prompt,
159
+ temperature: 0,
160
+ maxTokens: 200,
161
+ requestTimeout: opts.timeoutMs ?? 6000,
162
+ ...(sel.effort !== undefined ? { effort: sel.effort } : {}),
163
+ ...(opts.apiKey ? { apiKey: opts.apiKey } : {}),
164
+ ...(opts.baseUrl ? { baseUrl: opts.baseUrl } : {}),
165
+ fallbackProviders: opts.fallbackProviders ?? [],
166
+ });
167
+ const json = result.text.match(/\{[\s\S]*\}/)?.[0];
168
+ const parsed = json ? JSON.parse(json) : {};
169
+ return { block: parsed.block, confidence: parsed.confidence, reason: typeof parsed.reason === 'string' ? parsed.reason : undefined };
170
+ },
171
+ };
172
+ }
173
+ /** The guard as an extension pack, for `extensionManifest.packs: [{ factory: () => createPhraseListPack(guard) }]`. */
174
+ export function createPhraseListPack(guard) {
175
+ return {
176
+ name: `phrase-list:${guard.id}`,
177
+ descriptors: [{ id: guard.id, kind: EXTENSION_KIND_GUARDRAIL, payload: guard }],
178
+ };
179
+ }
180
+ //# sourceMappingURL=PhraseListGuardrail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PhraseListGuardrail.js","sourceRoot":"","sources":["../../../../src/safety/guardrails/builtin/PhraseListGuardrail.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,26 @@ export interface GuardrailOutputOptions {
45
45
  inputEvaluations?: GuardrailEvaluationResult[] | null;
46
46
  /** RAG sources to thread through to output guardrails for grounding verification */
47
47
  ragSources?: import('../../cognition/rag').RagRetrievedChunk[];
48
+ /**
49
+ * Hold every TEXT_DELTA until the final guards have judged the whole reply. Allowed or flagged, the held deltas
50
+ * go out before the final chunk; blocked or sanitized, they are dropped, so the caller never sees text the guards
51
+ * refused. An actionable tool call closes the window: the text so far is judged as a final reply before it.
52
+ */
53
+ holdUntilFinal?: boolean;
54
+ /** Called once with the final verdict on the reply: blocked, sanitized, flagged or allowed. A throw is logged and ignored. */
55
+ onVerdict?: (verdict: GuardrailOutputVerdict) => void | Promise<void>;
56
+ }
57
+ /** The verdict on a reply, as {@link GuardrailOutputOptions.onVerdict} receives it. */
58
+ export interface GuardrailOutputVerdict {
59
+ streamId: string;
60
+ action: GuardrailAction;
61
+ /** The id of the guard that blocked, when it has one. */
62
+ guardrailId?: string;
63
+ reasonCode?: string;
64
+ /** The text the caller receives: the replacement after a block with one, the reply after a pass, else null. */
65
+ finalText: string | null;
66
+ /** The reply's text as the guards judged it, before any rewrite; null for a verdict on a streamed delta, which judged no whole reply. */
67
+ originalText: string | null;
48
68
  }
49
69
  /**
50
70
  * Metadata entry attached to response chunks.
@@ -1 +1 @@
1
- {"version":3,"file":"guardrailDispatcher.d.ts","sourceRoot":"","sources":["../../../src/safety/guardrails/guardrailDispatcher.ts"],"names":[],"mappings":"AAgCA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,eAAe,EAGhB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,iBAAiB,EACvB,MAAM,qBAAqB,CAAC;AAG7B;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,GAC3D,iBAAiB,EAAE,CAMrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,iBAAiB,GACrB,GAAG,IAAI,iBAAiB,GAAG;IAC5B,cAAc,EAAE,WAAW,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,CAAC,CAAC;CAClE,CAEA;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,mEAAmE;IACnE,cAAc,EAAE,YAAY,CAAC;IAE7B,iGAAiG;IACjG,UAAU,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAC;IAE9C,qEAAqE;IACrE,WAAW,CAAC,EAAE,yBAAyB,EAAE,CAAC;CAC3C;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,QAAQ,EAAE,MAAM,CAAC;IAEjB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,yBAAyB,EAAE,GAAG,IAAI,CAAC;IAEtD,oFAAoF;IACpF,UAAU,CAAC,EAAE,OAAO,qBAAqB,EAAE,iBAAiB,EAAE,CAAC;CAChE;AAED;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,eAAe,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAsB,uBAAuB,CAC3C,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,EAC5D,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAIhC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAuB,4BAA4B,CACjD,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,yBAAyB,EACrC,OAAO,CAAC,EAAE,sBAAsB,GAC/B,cAAc,CAAC,eAAe,EAAE,IAAI,EAAE,SAAS,CAAC,CAkBlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAuB,oBAAoB,CACzC,OAAO,EAAE,iBAAiB,GAAG,iBAAiB,EAAE,GAAG,SAAS,EAC5D,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,CAIlD;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,yBAAyB,GAAG,sBAAsB,CAOjG;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE;IACL,KAAK,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;IAC1D,MAAM,CAAC,EAAE,sBAAsB,GAAG,sBAAsB,EAAE,CAAC;CAC5D,GACA,eAAe,CAkCjB"}
1
+ {"version":3,"file":"guardrailDispatcher.d.ts","sourceRoot":"","sources":["../../../src/safety/guardrails/guardrailDispatcher.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"guardrailDispatcher.js","sourceRoot":"","sources":["../../../src/safety/guardrails/guardrailDispatcher.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"guardrailDispatcher.js","sourceRoot":"","sources":["../../../src/safety/guardrails/guardrailDispatcher.ts"],"names":[],"mappings":"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"}
@@ -46,8 +46,10 @@
46
46
  * ```
47
47
  */
48
48
  export { GuardrailAction, type GuardrailConfig, type GuardrailContext, type GuardrailEvaluationResult, type GuardrailInputPayload, type GuardrailOutputPayload, type IGuardrailService, } from './IGuardrailService';
49
- export { createGuardrailBlockedStream, evaluateInputGuardrails, type GuardrailInputOutcome, type GuardrailOutputOptions, wrapOutputGuardrails, } from './guardrailDispatcher';
49
+ export { createGuardrailBlockedStream, evaluateInputGuardrails, type GuardrailInputOutcome, type GuardrailOutputOptions, type GuardrailOutputVerdict, wrapOutputGuardrails, } from './guardrailDispatcher';
50
+ export { assertRequiredGuardrails, checkRequiredGuardrails, withRequiredPosture, type ActiveGuardrail, type GuardrailStage, type RequiredGuardrailReport, type RequiredGuardrailSpec, } from './requiredGuardrails';
50
51
  export { ParallelGuardrailDispatcher } from './ParallelGuardrailDispatcher';
52
+ export { PhraseListGuardrail, StaticPhraseListSource, createLlmPhraseJudge, createPhraseListPack, normalizePhraseText, type PhraseEntry, type PhraseJudge, type PhraseJudgeVerdict, type PhraseListGuardrailOptions, type PhraseListSnapshot, type PhraseListSource, } from './builtin/PhraseListGuardrail';
51
53
  export { type CrossAgentOutputPayload, type ICrossAgentGuardrailService, isCrossAgentGuardrail, shouldObserveAgent, } from './ICrossAgentGuardrailService';
52
54
  export { SentenceBoundaryBuffer } from './SentenceBoundaryBuffer';
53
55
  export { type CrossAgentEvaluationResult, type CrossAgentGuardrailContext, evaluateCrossAgentGuardrails, filterCrossAgentGuardrails, wrapWithCrossAgentGuardrails, } from './crossAgentGuardrailDispatcher';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/safety/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/safety/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAGH,OAAO,EACL,eAAe,EACf,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC9B,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,GACvB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EACvB,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC3B,KAAK,sBAAsB,EAC3B,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,uBAAuB,EAC5B,KAAK,qBAAqB,GAC3B,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAG5E,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,0BAA0B,EAC/B,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,GACtB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,2BAA2B,EAChC,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAGlE,OAAO,EACL,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
@@ -49,8 +49,12 @@
49
49
  export { GuardrailAction, } from './IGuardrailService.js';
50
50
  // Guardrail dispatcher functions
51
51
  export { createGuardrailBlockedStream, evaluateInputGuardrails, wrapOutputGuardrails, } from './guardrailDispatcher.js';
52
+ // Guards a deployment requires: the boot and request checks and the fail-closed posture
53
+ export { assertRequiredGuardrails, checkRequiredGuardrails, withRequiredPosture, } from './requiredGuardrails.js';
52
54
  // Two-phase parallel guardrail dispatcher
53
55
  export { ParallelGuardrailDispatcher } from './ParallelGuardrailDispatcher.js';
56
+ // A guard over a reviewed phrase list, with a judge behind it and a fixed reply per rule
57
+ export { PhraseListGuardrail, StaticPhraseListSource, createLlmPhraseJudge, createPhraseListPack, normalizePhraseText, } from './builtin/PhraseListGuardrail.js';
54
58
  // Cross-agent guardrail interface and types
55
59
  export { isCrossAgentGuardrail, shouldObserveAgent, } from './ICrossAgentGuardrailService.js';
56
60
  // Sentence boundary buffer for streaming evaluation
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/safety/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,qCAAqC;AACrC,OAAO,EACL,eAAe,GAOhB,MAAM,qBAAqB,CAAC;AAE7B,iCAAiC;AACjC,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EAGvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,0CAA0C;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,4CAA4C;AAC5C,OAAO,EAGL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,oDAAoD;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,mCAAmC;AACnC,OAAO,EAGL,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/safety/guardrails/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,qCAAqC;AACrC,OAAO,EACL,eAAe,GAOhB,MAAM,qBAAqB,CAAC;AAE7B,iCAAiC;AACjC,OAAO,EACL,4BAA4B,EAC5B,uBAAuB,EAIvB,oBAAoB,GACrB,MAAM,uBAAuB,CAAC;AAE/B,wFAAwF;AACxF,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,GAKpB,MAAM,sBAAsB,CAAC;AAE9B,0CAA0C;AAC1C,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,yFAAyF;AACzF,OAAO,EACL,mBAAmB,EACnB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GAOpB,MAAM,+BAA+B,CAAC;AAEvC,4CAA4C;AAC5C,OAAO,EAGL,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,+BAA+B,CAAC;AAEvC,oDAAoD;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,mCAAmC;AACnC,OAAO,EAGL,4BAA4B,EAC5B,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { type IGuardrailService } from './IGuardrailService';
2
+ export type GuardrailStage = 'input' | 'output';
3
+ export interface RequiredGuardrailSpec {
4
+ /** The guard's id: its `IGuardrailService.id`, else the id of the descriptor it was registered under. */
5
+ id: string;
6
+ /** The stages it must evaluate: a guard required on `output` must implement `evaluateOutput`. */
7
+ stages: GuardrailStage[];
8
+ /** Its deadline per evaluation; past it the guard blocks. */
9
+ timeoutMs: number;
10
+ }
11
+ export interface ActiveGuardrail {
12
+ id: string;
13
+ service: IGuardrailService;
14
+ }
15
+ export interface RequiredGuardrailReport {
16
+ ok: boolean;
17
+ /** Required ids with no active guard. */
18
+ missing: string[];
19
+ /** Required stages an active guard does not implement. */
20
+ missingStage: Array<{
21
+ id: string;
22
+ stage: GuardrailStage;
23
+ }>;
24
+ }
25
+ /** Compares the active guards with the required ones. */
26
+ export declare function checkRequiredGuardrails(active: readonly ActiveGuardrail[], required: readonly RequiredGuardrailSpec[]): RequiredGuardrailReport;
27
+ /** Throws a configuration error naming every missing guard and stage. */
28
+ export declare function assertRequiredGuardrails(active: readonly ActiveGuardrail[], required: readonly RequiredGuardrailSpec[]): void;
29
+ /**
30
+ * The guard as a required one runs: under its id, fail-closed, with the spec's deadline, and with a malformed answer
31
+ * turned into a block. The original service is not changed.
32
+ */
33
+ export declare function withRequiredPosture(id: string, svc: IGuardrailService, spec: RequiredGuardrailSpec): IGuardrailService;
34
+ //# sourceMappingURL=requiredGuardrails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requiredGuardrails.d.ts","sourceRoot":"","sources":["../../../src/safety/guardrails/requiredGuardrails.ts"],"names":[],"mappings":"AAQA,OAAO,EAAmD,KAAK,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE9G,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,qBAAqB;IACpC,yGAAyG;IACzG,EAAE,EAAE,MAAM,CAAC;IACX,iGAAiG;IACjG,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,EAAE,EAAE,OAAO,CAAC;IACZ,yCAAyC;IACzC,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0DAA0D;IAC1D,YAAY,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;CAC5D;AAED,yDAAyD;AACzD,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,EAAE,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GAAG,uBAAuB,CAe/I;AAED,yEAAyE;AACzE,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,eAAe,EAAE,EAAE,QAAQ,EAAE,SAAS,qBAAqB,EAAE,GAAG,IAAI,CAW7H;AAWD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,qBAAqB,GAAG,iBAAiB,CAYtH"}
@@ -0,0 +1,68 @@
1
+ /**
2
+ * @module guardrails/requiredGuardrails
3
+ *
4
+ * Guards a deployment cannot run without. A product names them by id and stage; AgentOS refuses to start when one is
5
+ * missing, refuses a request when one has gone missing since, and runs each one fail-closed with a deadline, so a
6
+ * guard that throws, hangs or answers nonsense blocks instead of letting the reply through.
7
+ */
8
+ import { GMIError, GMIErrorCode } from '../../core/utils/errors.js';
9
+ import { GuardrailAction } from './IGuardrailService.js';
10
+ /** Compares the active guards with the required ones. */
11
+ export function checkRequiredGuardrails(active, required) {
12
+ const missing = [];
13
+ const missingStage = [];
14
+ for (const spec of required) {
15
+ const found = active.find((a) => a.id === spec.id);
16
+ if (!found) {
17
+ missing.push(spec.id);
18
+ continue;
19
+ }
20
+ for (const stage of spec.stages) {
21
+ const implemented = stage === 'input' ? typeof found.service.evaluateInput === 'function' : typeof found.service.evaluateOutput === 'function';
22
+ if (!implemented)
23
+ missingStage.push({ id: spec.id, stage });
24
+ }
25
+ }
26
+ return { ok: missing.length === 0 && missingStage.length === 0, missing, missingStage };
27
+ }
28
+ /** Throws a configuration error naming every missing guard and stage. */
29
+ export function assertRequiredGuardrails(active, required) {
30
+ const report = checkRequiredGuardrails(active, required);
31
+ if (report.ok)
32
+ return;
33
+ const parts = [
34
+ ...report.missing.map((id) => `${id} is not active`),
35
+ ...report.missingStage.map(({ id, stage }) => `${id} does not evaluate ${stage}`),
36
+ ];
37
+ throw new GMIError(`Required guardrails are missing: ${parts.join('; ')}.`, GMIErrorCode.CONFIGURATION_ERROR, {
38
+ missing: report.missing,
39
+ missingStage: report.missingStage,
40
+ });
41
+ }
42
+ const ACTIONS = new Set(Object.values(GuardrailAction));
43
+ /** An evaluation whose action is not one of {@link GuardrailAction} is a malformed answer, and a required guard's malformed answer blocks. */
44
+ function wellFormed(evaluation) {
45
+ if (evaluation === null || evaluation === undefined)
46
+ return null;
47
+ if (typeof evaluation === 'object' && ACTIONS.has(String(evaluation.action)))
48
+ return evaluation;
49
+ return { action: GuardrailAction.BLOCK, reason: 'The guardrail answered with no recognised action.', reasonCode: 'GUARDRAIL_MALFORMED', metadata: { failClosed: true } };
50
+ }
51
+ /**
52
+ * The guard as a required one runs: under its id, fail-closed, with the spec's deadline, and with a malformed answer
53
+ * turned into a block. The original service is not changed.
54
+ */
55
+ export function withRequiredPosture(id, svc, spec) {
56
+ const wrapped = {
57
+ id,
58
+ config: { ...svc.config, failClosed: true, timeoutMs: spec.timeoutMs },
59
+ };
60
+ if (typeof svc.evaluateInput === 'function') {
61
+ wrapped.evaluateInput = async (payload) => wellFormed(await svc.evaluateInput(payload));
62
+ }
63
+ if (typeof svc.evaluateOutput === 'function') {
64
+ wrapped.evaluateOutput = async (payload) => wellFormed(await svc.evaluateOutput(payload));
65
+ }
66
+ return wrapped;
67
+ }
68
+ //# sourceMappingURL=requiredGuardrails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"requiredGuardrails.js","sourceRoot":"","sources":["../../../src/safety/guardrails/requiredGuardrails.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@framers/agentos",
3
- "version": "0.13.2",
3
+ "version": "0.13.3",
4
4
  "description": "AgentOS: open-source TypeScript framework for autonomous AI agents. Unified graph orchestration, cognitive memory, runtime tool forging, multi-tier guardrails, voice pipeline, and 11 LLM providers.",
5
5
  "homepage": "https://agentos.sh",
6
6
  "repository": {