@polpo-ai/core 0.15.48 → 0.15.50

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 (65) hide show
  1. package/README.md +90 -14
  2. package/dist/__tests__/agent-model-routing.test.d.ts +2 -0
  3. package/dist/__tests__/agent-model-routing.test.d.ts.map +1 -0
  4. package/dist/__tests__/agent-model-routing.test.js +22 -0
  5. package/dist/__tests__/agent-model-routing.test.js.map +1 -0
  6. package/dist/__tests__/guardrail-policy-packs.test.d.ts +2 -0
  7. package/dist/__tests__/guardrail-policy-packs.test.d.ts.map +1 -0
  8. package/dist/__tests__/guardrail-policy-packs.test.js +287 -0
  9. package/dist/__tests__/guardrail-policy-packs.test.js.map +1 -0
  10. package/dist/__tests__/model-profiles.test.js +33 -2
  11. package/dist/__tests__/model-profiles.test.js.map +1 -1
  12. package/dist/__tests__/model-router.test.js +114 -0
  13. package/dist/__tests__/model-router.test.js.map +1 -1
  14. package/dist/guardrails/detectors.d.ts +12 -3
  15. package/dist/guardrails/detectors.d.ts.map +1 -1
  16. package/dist/guardrails/detectors.js +79 -4
  17. package/dist/guardrails/detectors.js.map +1 -1
  18. package/dist/guardrails/engine.d.ts.map +1 -1
  19. package/dist/guardrails/engine.js +6 -1
  20. package/dist/guardrails/engine.js.map +1 -1
  21. package/dist/guardrails/index.d.ts +4 -3
  22. package/dist/guardrails/index.d.ts.map +1 -1
  23. package/dist/guardrails/index.js +3 -2
  24. package/dist/guardrails/index.js.map +1 -1
  25. package/dist/guardrails/preflight-policy.d.ts +4 -0
  26. package/dist/guardrails/preflight-policy.d.ts.map +1 -0
  27. package/dist/guardrails/preflight-policy.js +43 -0
  28. package/dist/guardrails/preflight-policy.js.map +1 -0
  29. package/dist/guardrails/settings.d.ts +2 -1
  30. package/dist/guardrails/settings.d.ts.map +1 -1
  31. package/dist/guardrails/settings.js +175 -11
  32. package/dist/guardrails/settings.js.map +1 -1
  33. package/dist/guardrails/types.d.ts +47 -0
  34. package/dist/guardrails/types.d.ts.map +1 -1
  35. package/dist/index.d.ts +2 -2
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +1 -1
  38. package/dist/index.js.map +1 -1
  39. package/dist/model-profiles.d.ts +4 -0
  40. package/dist/model-profiles.d.ts.map +1 -1
  41. package/dist/model-profiles.js +8 -8
  42. package/dist/model-profiles.js.map +1 -1
  43. package/dist/model-router.d.ts +30 -0
  44. package/dist/model-router.d.ts.map +1 -1
  45. package/dist/model-router.js +201 -4
  46. package/dist/model-router.js.map +1 -1
  47. package/dist/runtime-context/index.d.ts +2 -2
  48. package/dist/runtime-context/index.d.ts.map +1 -1
  49. package/dist/runtime-context/index.js +1 -1
  50. package/dist/runtime-context/index.js.map +1 -1
  51. package/dist/runtime-context/runtime-context.d.ts +2 -0
  52. package/dist/runtime-context/runtime-context.d.ts.map +1 -1
  53. package/dist/runtime-context/runtime-context.js +39 -4
  54. package/dist/runtime-context/runtime-context.js.map +1 -1
  55. package/dist/runtime-context/runtime-context.test.js +38 -0
  56. package/dist/runtime-context/runtime-context.test.js.map +1 -1
  57. package/dist/runtime-context/types.d.ts +9 -0
  58. package/dist/runtime-context/types.d.ts.map +1 -1
  59. package/dist/task-runner.d.ts.map +1 -1
  60. package/dist/task-runner.js +2 -2
  61. package/dist/task-runner.js.map +1 -1
  62. package/dist/types/agent.d.ts +7 -1
  63. package/dist/types/agent.d.ts.map +1 -1
  64. package/dist/types/agent.js.map +1 -1
  65. package/package.json +1 -1
package/README.md CHANGED
@@ -134,14 +134,14 @@ remain concrete model IDs. A profile is selected only with the explicit
134
134
  }
135
135
  ```
136
136
 
137
- Agents can select a profile and optionally narrow which profiles, including
138
- nested references, they may use:
137
+ Agents can select a profile and optionally narrow which root profiles they may
138
+ use:
139
139
 
140
140
  ```jsonc
141
141
  {
142
142
  "name": "support",
143
143
  "model": { "profile": "balanced" },
144
- "allowedModelProfiles": ["balanced", "fast"]
144
+ "allowedModelProfiles": ["balanced"]
145
145
  }
146
146
  ```
147
147
 
@@ -149,6 +149,21 @@ Resolution is recursive, deterministic, deduplicates concrete models while
149
149
  preserving order, and fails closed for unknown profiles, cycles, invalid
150
150
  allowlists, excessive depth, or too many fallbacks. The runtime resolves the
151
151
  profile before provider setup; providers receive only concrete model IDs.
152
+ Nested aliases inherit the grant of the selected root alias, so changing
153
+ `balanced` to reuse another project alias does not invalidate existing agent
154
+ assignments. Selecting that nested alias directly still requires its own grant.
155
+
156
+ An agent's configured direct model or profile stays pinned by default. Set
157
+ `modelRouting.mode` to `auto` only when that agent should delegate selection to
158
+ the project router:
159
+
160
+ ```jsonc
161
+ {
162
+ "name": "support",
163
+ "allowedModelProfiles": ["fast", "balanced"],
164
+ "modelRouting": { "mode": "auto" }
165
+ }
166
+ ```
152
167
 
153
168
  ## Model routing
154
169
 
@@ -173,6 +188,15 @@ const route = await resolveModelRoute({
173
188
  mode: "auto",
174
189
  fallbackProfile: "balanced",
175
190
  allowedProfiles: ["fast", "balanced"],
191
+ rules: [{
192
+ id: "free-users",
193
+ profile: "fast",
194
+ when: { allLabels: ["tier:free"] },
195
+ }],
196
+ profileHints: {
197
+ fast: "Short, low-complexity requests.",
198
+ balanced: "Requests that need stronger reasoning.",
199
+ },
176
200
  },
177
201
  }, {
178
202
  classifier: createStructuredModelRouteClassifier({ model: routerModel }),
@@ -182,11 +206,14 @@ const route = await resolveModelRoute({
182
206
  const { model, audit } = modelRouteRuntimePlanFields(route);
183
207
  ```
184
208
 
185
- Explicit authorized profiles skip classification. Disabled routing,
186
- single-profile allowlists, missing input, and missing classifiers resolve
187
- deterministically. Timeout, provider failure, malformed output, unknown
188
- profiles, and low confidence use the configured fallback; caller cancellation
189
- stops planning instead of starting execution with a fallback.
209
+ Explicit authorized profiles skip all automation. Ordered deterministic rules
210
+ match trusted labels, runtime surface, and invocation source before any
211
+ classifier is created. Disabled routing, single-profile allowlists, missing
212
+ input, and missing classifiers resolve deterministically. Timeout, provider
213
+ failure, malformed output, unknown profiles, and low confidence use the
214
+ configured fallback; caller cancellation stops planning instead of starting
215
+ execution with a fallback. Rules and classifiers can only narrow the configured
216
+ profile allowlist and never select raw model IDs.
190
217
 
191
218
  ## Runtime inspection
192
219
 
@@ -265,8 +292,56 @@ retrieved Memory and Brain runtime context, so both can coexist on one run.
265
292
 
266
293
  ## Guardrails
267
294
 
268
- Runtime hosts can opt into the shared ordered policy engine and wrap every
269
- locally executed tool with the same middleware:
295
+ Runtime hosts can opt into the shared ordered policy engine across input,
296
+ retrieved context, model preflight, tool input/output, and final output.
297
+ Nothing is enabled when `settings.guardrails` is absent.
298
+
299
+ New configurations use one product-level pack:
300
+
301
+ ```json
302
+ {
303
+ "settings": {
304
+ "guardrails": {
305
+ "policyPack": "standard"
306
+ }
307
+ }
308
+ }
309
+ ```
310
+
311
+ - `standard` redacts common secret shapes, validates tool arguments, blocks
312
+ private-network targets, and requires approval for destructive operations.
313
+ - `strict` additionally blocks destructive operations and policy failures,
314
+ and buffers streaming output so output rules can enforce before delivery.
315
+ - `custom` keeps the standard baseline and adds bounded literal content rules.
316
+ User-authored regular expressions and private classifier prompts are not
317
+ accepted.
318
+
319
+ For example:
320
+
321
+ ```json
322
+ {
323
+ "settings": {
324
+ "guardrails": {
325
+ "policyPack": "custom",
326
+ "contentRules": [{
327
+ "id": "support.private-content",
328
+ "phases": ["input", "context", "model.preflight", "output"],
329
+ "action": "redact",
330
+ "risk": "high",
331
+ "containsAny": ["private marker"],
332
+ "replacement": "[PRIVATE]"
333
+ }]
334
+ }
335
+ }
336
+ }
337
+ ```
338
+
339
+ Runtime hosts may inject process-local policies, including bounded model
340
+ classifiers, through `RuntimeGuardrailHostAdapters.policies`. Those functions,
341
+ credentials, and private prompts never enter serializable settings or
342
+ `RunnerConfig`.
343
+
344
+ The same middleware wraps every locally executed tool:
270
345
 
271
346
  ```ts
272
347
  import {
@@ -315,17 +390,18 @@ are enabled automatically. Provider-executed tools and client-side tools are
315
390
  declared to the model but execute outside the local runtime, so they require
316
391
  provider/client enforcement rather than this middleware.
317
392
 
318
- The Node host can explicitly enable the deterministic OSS pack for both
319
- in-process and subprocess task runs:
393
+ The legacy split `toolPolicyPack` / `outputPolicyPack` configuration remains
394
+ accepted for backward compatibility but does not enable the new preflight
395
+ phases. The Node host applies the product-level pack to both in-process and
396
+ subprocess task runs:
320
397
 
321
398
  ```json
322
399
  {
323
400
  "settings": {
324
401
  "guardrails": {
325
- "toolPolicyPack": "default",
402
+ "policyPack": "standard",
326
403
  "maxToolOutputCharacters": 256000,
327
404
  "readOnlyPolicyFailure": "audit",
328
- "outputPolicyPack": "default",
329
405
  "maxFinalOutputCharacters": 65536,
330
406
  "streamingOutputMode": "audit"
331
407
  }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=agent-model-routing.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-model-routing.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/agent-model-routing.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,22 @@
1
+ import { describe, expect, it } from "vitest";
2
+ import { validateAgentModelRoutingConfig } from "../model-router.js";
3
+ describe("validateAgentModelRoutingConfig", () => {
4
+ it.each([
5
+ undefined,
6
+ { mode: "off" },
7
+ { mode: "auto" },
8
+ ])("accepts a supported model routing mode %#", (config) => {
9
+ expect(validateAgentModelRoutingConfig(config)).toEqual(config);
10
+ });
11
+ it.each([
12
+ null,
13
+ "auto",
14
+ [],
15
+ {},
16
+ { mode: "future" },
17
+ { mode: "auto", hidden: true },
18
+ ])("rejects unsafe agent model routing config %#", (config) => {
19
+ expect(() => validateAgentModelRoutingConfig(config)).toThrow(/Agent model routing/);
20
+ });
21
+ });
22
+ //# sourceMappingURL=agent-model-routing.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-model-routing.test.js","sourceRoot":"","sources":["../../src/__tests__/agent-model-routing.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAErE,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,IAAI,CAAC;QACN,SAAS;QACT,EAAE,IAAI,EAAE,KAAc,EAAE;QACxB,EAAE,IAAI,EAAE,MAAe,EAAE;KAC1B,CAAC,CAAC,2CAA2C,EAAE,CAAC,MAAM,EAAE,EAAE;QACzD,MAAM,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,IAAI;QACJ,MAAM;QACN,EAAE;QACF,EAAE;QACF,EAAE,IAAI,EAAE,QAAQ,EAAE;QAClB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;KAC/B,CAAC,CAAC,8CAA8C,EAAE,CAAC,MAAM,EAAE,EAAE;QAC5D,MAAM,CAAC,GAAG,EAAE,CAAC,+BAA+B,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAC3D,qBAAqB,CACtB,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=guardrail-policy-packs.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrail-policy-packs.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/guardrail-policy-packs.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,287 @@
1
+ import { describe, expect, it, vi } from "vitest";
2
+ import { GuardrailBlockedError, createConfiguredRunOutputPolicy, createConfiguredRunPreflightPolicy, createConfiguredRunToolMiddleware, normalizeRuntimeGuardrailSettings, } from "../guardrails/index.js";
3
+ describe("guardrail policy packs", () => {
4
+ it("keeps the legacy default tool/output settings backward compatible", () => {
5
+ expect(normalizeRuntimeGuardrailSettings({
6
+ toolPolicyPack: "default",
7
+ outputPolicyPack: "default",
8
+ })).toEqual({
9
+ toolPolicyPack: "default",
10
+ outputPolicyPack: "default",
11
+ streamingOutputMode: "audit",
12
+ });
13
+ });
14
+ it("normalizes the explicit standard pack and keeps guardrails opt-in", () => {
15
+ expect(normalizeRuntimeGuardrailSettings(undefined)).toBeUndefined();
16
+ expect(normalizeRuntimeGuardrailSettings({})).toBeUndefined();
17
+ expect(normalizeRuntimeGuardrailSettings({
18
+ policyPack: "standard",
19
+ })).toEqual({
20
+ policyPack: "standard",
21
+ streamingOutputMode: "audit",
22
+ });
23
+ });
24
+ it("makes strict policy failures and destructive operations fail closed", async () => {
25
+ const settings = normalizeRuntimeGuardrailSettings({
26
+ policyPack: "strict",
27
+ });
28
+ const middleware = createConfiguredRunToolMiddleware(settings);
29
+ const next = vi.fn(async () => "should not run");
30
+ expect(settings).toEqual({
31
+ policyPack: "strict",
32
+ readOnlyPolicyFailure: "block",
33
+ streamingOutputMode: "buffer",
34
+ });
35
+ await expect(middleware?.execute({
36
+ name: "bash",
37
+ args: { command: "rm -rf /" },
38
+ sideEffect: "write",
39
+ context: {},
40
+ }, next)).rejects.toBeInstanceOf(GuardrailBlockedError);
41
+ expect(next).not.toHaveBeenCalled();
42
+ });
43
+ it("runs standard input policy before the model and redacts secrets", async () => {
44
+ const policy = createConfiguredRunPreflightPolicy({
45
+ policyPack: "standard",
46
+ });
47
+ await expect(policy?.evaluate({
48
+ phase: "input",
49
+ value: "token ghp_abcdefghijklmnopqrstuvwxyz1234567890",
50
+ mode: "enforce",
51
+ context: { surface: "agent" },
52
+ })).resolves.toMatchObject({
53
+ value: "token [REDACTED]",
54
+ enforced: true,
55
+ decisions: [expect.objectContaining({
56
+ policyId: "secrets.preflight",
57
+ action: "redact",
58
+ })],
59
+ });
60
+ });
61
+ it("keeps rewritten content unchanged in observational mode", async () => {
62
+ const policy = createConfiguredRunPreflightPolicy({
63
+ policyPack: "standard",
64
+ });
65
+ const input = "token ghp_abcdefghijklmnopqrstuvwxyz1234567890";
66
+ await expect(policy?.evaluate({
67
+ phase: "input",
68
+ value: input,
69
+ mode: "audit",
70
+ context: {},
71
+ })).resolves.toMatchObject({
72
+ value: input,
73
+ enforced: false,
74
+ decisions: [expect.objectContaining({ action: "redact" })],
75
+ });
76
+ });
77
+ it("supports bounded deterministic custom content rules", async () => {
78
+ const policy = createConfiguredRunPreflightPolicy({
79
+ policyPack: "custom",
80
+ contentRules: [{
81
+ id: "support.no-passwords",
82
+ phases: ["input", "output"],
83
+ action: "block",
84
+ risk: "high",
85
+ containsAny: ["password reset token", "one-time password"],
86
+ }],
87
+ });
88
+ await expect(policy?.evaluate({
89
+ phase: "input",
90
+ value: "Please expose the PASSWORD RESET TOKEN",
91
+ mode: "enforce",
92
+ context: {},
93
+ })).rejects.toMatchObject({
94
+ code: "guardrail_blocked",
95
+ decisions: [expect.objectContaining({
96
+ policyId: "support.no-passwords",
97
+ })],
98
+ });
99
+ });
100
+ it("redacts every literal match without regular-expression semantics", async () => {
101
+ const policy = createConfiguredRunPreflightPolicy({
102
+ policyPack: "custom",
103
+ contentRules: [{
104
+ id: "content.literal-redaction",
105
+ phases: ["input"],
106
+ action: "redact",
107
+ risk: "medium",
108
+ containsAny: ["A+B"],
109
+ replacement: "[TERM]",
110
+ }],
111
+ });
112
+ await expect(policy?.evaluate({
113
+ phase: "input",
114
+ value: "a+b A+B a.*b",
115
+ mode: "enforce",
116
+ context: {},
117
+ })).resolves.toMatchObject({
118
+ value: "[TERM] [TERM] a.*b",
119
+ });
120
+ });
121
+ it("blocks oversized input before running later host policies", async () => {
122
+ const hostPolicy = {
123
+ id: "host.must-not-run",
124
+ phases: ["input"],
125
+ evaluate: vi.fn(() => null),
126
+ };
127
+ const policy = createConfiguredRunPreflightPolicy({
128
+ policyPack: "standard",
129
+ maxInputCharacters: 8,
130
+ }, {
131
+ policies: [hostPolicy],
132
+ });
133
+ await expect(policy?.evaluate({
134
+ phase: "input",
135
+ value: "123456789",
136
+ mode: "enforce",
137
+ context: {},
138
+ })).rejects.toMatchObject({
139
+ code: "guardrail_blocked",
140
+ decisions: [expect.objectContaining({
141
+ policyId: "input.bounded-value",
142
+ })],
143
+ });
144
+ expect(hostPolicy.evaluate).not.toHaveBeenCalled();
145
+ });
146
+ it("accepts host policies without serializing classifier implementations", async () => {
147
+ const classify = vi.fn(() => ({
148
+ action: "block",
149
+ risk: "high",
150
+ reason: "Host classifier rejected the request",
151
+ }));
152
+ const hostPolicy = {
153
+ id: "host.content-classifier",
154
+ phases: ["model.preflight"],
155
+ evaluate: classify,
156
+ };
157
+ const policy = createConfiguredRunPreflightPolicy({ policyPack: "standard" }, { policies: [hostPolicy] });
158
+ await expect(policy?.evaluate({
159
+ phase: "model.preflight",
160
+ value: "bounded model input",
161
+ mode: "enforce",
162
+ context: {},
163
+ })).rejects.toBeInstanceOf(GuardrailBlockedError);
164
+ expect(classify).toHaveBeenCalledOnce();
165
+ });
166
+ it("fails closed when a host content classifier throws", async () => {
167
+ const policy = createConfiguredRunPreflightPolicy({ policyPack: "standard" }, {
168
+ policies: [{
169
+ id: "host.unavailable-classifier",
170
+ phases: ["input"],
171
+ evaluate: () => {
172
+ throw new Error("classifier unavailable");
173
+ },
174
+ }],
175
+ });
176
+ await expect(policy?.evaluate({
177
+ phase: "input",
178
+ value: "ordinary request",
179
+ mode: "enforce",
180
+ context: {},
181
+ })).rejects.toMatchObject({
182
+ code: "guardrail_blocked",
183
+ decisions: [expect.objectContaining({
184
+ policyId: "host.unavailable-classifier",
185
+ action: "block",
186
+ fallbackUsed: true,
187
+ })],
188
+ });
189
+ });
190
+ it("applies custom output rules through the same unified pack", async () => {
191
+ const policy = createConfiguredRunOutputPolicy({
192
+ policyPack: "custom",
193
+ contentRules: [{
194
+ id: "output.customer-name",
195
+ phases: ["output"],
196
+ action: "redact",
197
+ risk: "medium",
198
+ containsAny: ["Private Customer"],
199
+ replacement: "[CUSTOMER]",
200
+ }],
201
+ });
202
+ await expect(policy?.evaluate({
203
+ output: "Result for private customer",
204
+ mode: "enforce",
205
+ context: {},
206
+ })).resolves.toMatchObject({
207
+ output: "Result for [CUSTOMER]",
208
+ enforced: true,
209
+ });
210
+ });
211
+ it("preserves __proto__ as inert data while redacting nested input", async () => {
212
+ const value = JSON.parse('{"__proto__":{"polluted":"yes"},"token":"ghp_abcdefghijklmnopqrstuvwxyz1234567890"}');
213
+ const policy = createConfiguredRunPreflightPolicy({
214
+ policyPack: "standard",
215
+ });
216
+ const result = await policy?.evaluate({
217
+ phase: "input",
218
+ value,
219
+ mode: "enforce",
220
+ context: {},
221
+ });
222
+ expect(Object.prototype).not.toHaveProperty("polluted");
223
+ expect(Object.getPrototypeOf(result?.value)).toBe(Object.prototype);
224
+ expect(Object.prototype.hasOwnProperty.call(result?.value, "__proto__")).toBe(true);
225
+ expect(result?.value).toMatchObject({
226
+ token: "[REDACTED]",
227
+ });
228
+ });
229
+ it("rejects policy id collisions instead of producing ambiguous audit records", () => {
230
+ expect(() => createConfiguredRunPreflightPolicy({
231
+ policyPack: "custom",
232
+ contentRules: [{
233
+ id: "secrets.preflight",
234
+ phases: ["input"],
235
+ action: "block",
236
+ risk: "high",
237
+ containsAny: ["x"],
238
+ }],
239
+ })).toThrow('Duplicate guardrail policy id "secrets.preflight"');
240
+ });
241
+ it.each([
242
+ {
243
+ policyPack: "standard",
244
+ toolPolicyPack: "default",
245
+ },
246
+ {
247
+ policyPack: "custom",
248
+ },
249
+ {
250
+ policyPack: "standard",
251
+ contentRules: [],
252
+ },
253
+ {
254
+ policyPack: "custom",
255
+ contentRules: [{
256
+ id: "invalid",
257
+ phases: ["tool.before"],
258
+ action: "block",
259
+ risk: "high",
260
+ containsAny: ["x"],
261
+ }],
262
+ },
263
+ {
264
+ policyPack: "custom",
265
+ contentRules: [{
266
+ id: "invalid",
267
+ phases: ["input"],
268
+ action: "approval",
269
+ risk: "high",
270
+ containsAny: ["x"],
271
+ }],
272
+ },
273
+ {
274
+ policyPack: "custom",
275
+ contentRules: [{
276
+ id: "invalid id with spaces",
277
+ phases: ["input"],
278
+ action: "block",
279
+ risk: "high",
280
+ containsAny: ["x"],
281
+ }],
282
+ },
283
+ ])("rejects unsafe or ambiguous pack configuration %#", (settings) => {
284
+ expect(() => normalizeRuntimeGuardrailSettings(settings)).toThrow();
285
+ });
286
+ });
287
+ //# sourceMappingURL=guardrail-policy-packs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guardrail-policy-packs.test.js","sourceRoot":"","sources":["../../src/__tests__/guardrail-policy-packs.test.ts"],"names":[],"mappings":"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"}
@@ -171,8 +171,23 @@ describe("model profile resolution", () => {
171
171
  model: "google/gemini-2.5-flash",
172
172
  }));
173
173
  });
174
- it("validates nested profile references against the allowed profile set", () => {
175
- expect(() => resolveModelProfileSelection({ profile: "balanced" }, {
174
+ it("keeps nested profile dependencies behind the granted root profile", () => {
175
+ expect(resolveModelProfileSelection({ profile: "balanced" }, {
176
+ profiles: {
177
+ balanced: { profile: "fast" },
178
+ fast: "openai/gpt-4o-mini",
179
+ },
180
+ allowedProfiles: ["balanced"],
181
+ })).toEqual({
182
+ selection: "openai/gpt-4o-mini",
183
+ policy: {
184
+ primary: "openai/gpt-4o-mini",
185
+ fallbacks: [],
186
+ candidates: ["openai/gpt-4o-mini"],
187
+ },
188
+ profiles: ["balanced", "fast"],
189
+ });
190
+ expect(() => resolveModelProfileSelection({ profile: "fast" }, {
176
191
  profiles: {
177
192
  balanced: { profile: "fast" },
178
193
  fast: "openai/gpt-4o-mini",
@@ -183,6 +198,22 @@ describe("model profile resolution", () => {
183
198
  profile: "fast",
184
199
  }));
185
200
  });
201
+ it("validates every explicitly selected root profile in a model policy", () => {
202
+ expect(() => resolveModelProfileSelection({
203
+ primary: { profile: "balanced" },
204
+ fallbacks: [{ profile: "emergency" }],
205
+ }, {
206
+ profiles: {
207
+ balanced: { profile: "fast" },
208
+ fast: "openai/gpt-4o-mini",
209
+ emergency: "google/gemini-2.5-flash",
210
+ },
211
+ allowedProfiles: ["balanced"],
212
+ })).toThrowError(expect.objectContaining({
213
+ code: "DISALLOWED_PROFILE",
214
+ profile: "emergency",
215
+ }));
216
+ });
186
217
  it("does not mutate inputs and freezes the complete resolution result", () => {
187
218
  const selection = {
188
219
  primary: { profile: "fast" },
@@ -1 +1 @@
1
- {"version":3,"file":"model-profiles.test.js","sourceRoot":"","sources":["../../src/__tests__/model-profiles.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-profiles.test.js","sourceRoot":"","sources":["../../src/__tests__/model-profiles.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EACL,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,GACrB,MAAM,eAAe,CAAC;AAEvB,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,EAAE,CAAC,iFAAiF,EAAE,GAAG,EAAE;QACzF,MAAM,CAAC,4BAA4B,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;YACrD,SAAS,EAAE,QAAQ;YACnB,MAAM,EAAE;gBACN,OAAO,EAAE,QAAQ;gBACjB,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,CAAC,QAAQ,CAAC;aACvB;YACD,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,CAAC,4BAA4B,CACjC,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB;YACE,QAAQ,EAAE;gBACR,IAAI,EAAE;oBACJ,OAAO,EAAE,oBAAoB;oBAC7B,SAAS,EAAE,CAAC,yBAAyB,CAAC;iBACvC;aACF;SACF,CACF,CAAC,CAAC,OAAO,CAAC;YACT,SAAS,EAAE;gBACT,OAAO,EAAE,oBAAoB;gBAC7B,SAAS,EAAE,CAAC,yBAAyB,CAAC;aACvC;YACD,MAAM,EAAE;gBACN,OAAO,EAAE,oBAAoB;gBAC7B,SAAS,EAAE,CAAC,yBAAyB,CAAC;gBACtC,UAAU,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;aAC9D;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sEAAsE,EAAE,GAAG,EAAE;QAC9E,MAAM,MAAM,GAAG,4BAA4B,CACzC;YACE,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YAChC,SAAS,EAAE,CAAC,YAAY,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SACpD,EACD;YACE,QAAQ,EAAE;gBACR,QAAQ,EAAE;oBACR,OAAO,EAAE,2BAA2B;oBACpC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;iBACjC;gBACD,IAAI,EAAE,oBAAoB;gBAC1B,SAAS,EAAE;oBACT,OAAO,EAAE,yBAAyB;oBAClC,SAAS,EAAE,CAAC,YAAY,CAAC;iBAC1B;aACF;SACF,CACF,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC;YACvC,2BAA2B;YAC3B,oBAAoB;YACpB,YAAY;YACZ,yBAAyB;SAC1B,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,MAAM,GAAG,4BAA4B,CACzC;YACE,OAAO,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC5B,SAAS,EAAE,CAAC,oBAAoB,EAAE,YAAY,CAAC;SAChD,EACD;YACE,QAAQ,EAAE;gBACR,IAAI,EAAE;oBACJ,OAAO,EAAE,oBAAoB;oBAC7B,SAAS,EAAE,CAAC,YAAY,CAAC;iBAC1B;aACF;SACF,CACF,CAAC;QAEF,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC;YAC/B,OAAO,EAAE,oBAAoB;YAC7B,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2EAA2E,EAAE,GAAG,EAAE;QACnF,MAAM,CAAC,4BAA4B,CACjC,EAAE,OAAO,EAAE,QAAQ,EAAE,EACrB,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE,CAC/C,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,IAAI,CAAC;QACN,CAAC,EAAE,CAAC;QACJ,CAAC,MAAM,CAAC;QACR,CAAC,EAAE,CAAC;KACL,CAAC,CAAC,0CAA0C,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC1D,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB,EAAE,QAAQ,EAAE,QAAiB,EAAE,CAChC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,0BAA0B;SACjC,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,IAAI,CAAC;QACN,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACjB,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC;QAClB,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,CAAC;QAC/B,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;QACtB,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QACjB,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,CAAC;QACpD,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;KACrD,CAAC,CAAC,+CAA+C,EAAE,CAAC,SAAS,EAAE,EAAE;QAChE,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CAAC,SAAkB,EAAE;YAC5D,QAAQ,EAAE,EAAE;SACb,CAAC,CAAC,CAAC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,SAAS,EAAE,EACtB,EAAE,QAAQ,EAAE,EAAE,EAAE,CACjB,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,iBAAiB;YACvB,OAAO,EAAE,SAAS;SACnB,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,GAAG,EAAE,EAChB,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,CACtC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;SACjB,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,GAAG,EAAE,EAChB;YACE,QAAQ,EAAE;gBACR,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;gBACnB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;gBACnB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;aACpB;SACF,CACF,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,GAAG,EAAE,EAChB;YACE,QAAQ,EAAE;gBACR,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;gBACnB,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE;gBACnB,CAAC,EAAE,oBAAoB;aACxB;YACD,QAAQ,EAAE,CAAC;SACZ,CACF,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,wBAAwB;SAC/B,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB;YACE,QAAQ,EAAE;gBACR,IAAI,EAAE;oBACJ,OAAO,EAAE,SAAS;oBAClB,SAAS,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;iBAC7C;aACF;YACD,YAAY,EAAE,CAAC;SAChB,CACF,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,oBAAoB;SAC3B,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,WAAW,EAAE,EACxB;YACE,QAAQ,EAAE,EAAE,SAAS,EAAE,yBAAyB,EAAE;YAClD,eAAe,EAAE,CAAC,MAAM,CAAC;SAC1B,CACF,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC,CAAC;QAEJ,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB;YACE,QAAQ,EAAE;gBACR,IAAI,EAAE;oBACJ,OAAO,EAAE,oBAAoB;oBAC7B,SAAS,EAAE,CAAC,yBAAyB,CAAC;iBACvC;aACF;YACD,eAAe,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC;YACnC,aAAa,EAAE,CAAC,oBAAoB,CAAC;SACtC,CACF,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,kBAAkB;YACxB,KAAK,EAAE,yBAAyB;SACjC,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,CAAC,4BAA4B,CACjC,EAAE,OAAO,EAAE,UAAU,EAAE,EACvB;YACE,QAAQ,EAAE;gBACR,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;gBAC7B,IAAI,EAAE,oBAAoB;aAC3B;YACD,eAAe,EAAE,CAAC,UAAU,CAAC;SAC9B,CACF,CAAC,CAAC,OAAO,CAAC;YACT,SAAS,EAAE,oBAAoB;YAC/B,MAAM,EAAE;gBACN,OAAO,EAAE,oBAAoB;gBAC7B,SAAS,EAAE,EAAE;gBACb,UAAU,EAAE,CAAC,oBAAoB,CAAC;aACnC;YACD,QAAQ,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC;SAC/B,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC,EAAE,OAAO,EAAE,MAAM,EAAE,EACnB;YACE,QAAQ,EAAE;gBACR,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;gBAC7B,IAAI,EAAE,oBAAoB;aAC3B;YACD,eAAe,EAAE,CAAC,UAAU,CAAC;SAC9B,CACF,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,MAAM;SAChB,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,GAAG,EAAE,CAAC,4BAA4B,CACvC;YACE,OAAO,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE;YAChC,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;SACtC,EACD;YACE,QAAQ,EAAE;gBACR,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;gBAC7B,IAAI,EAAE,oBAAoB;gBAC1B,SAAS,EAAE,yBAAyB;aACrC;YACD,eAAe,EAAE,CAAC,UAAU,CAAC;SAC9B,CACF,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,gBAAgB,CAAC;YACtC,IAAI,EAAE,oBAAoB;YAC1B,OAAO,EAAE,WAAW;SACrB,CAAC,CAAC,CAAC;IACN,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mEAAmE,EAAE,GAAG,EAAE;QAC3E,MAAM,SAAS,GAAG;YAChB,OAAO,EAAE,EAAE,OAAO,EAAE,MAAe,EAAE;YACrC,SAAS,EAAE,CAAC,YAAY,CAAC;SAC1B,CAAC;QACF,MAAM,QAAQ,GAAG;YACf,IAAI,EAAE,oBAAoB;SAC3B,CAAC;QACF,MAAM,eAAe,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,cAAc,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QAEjD,MAAM,MAAM,GAAG,4BAA4B,CAAC,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAErE,MAAM,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC3C,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClD,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC;YACpC,OAAO,EAAE,MAAM;YACf,OAAO,EAAE,oBAAoB;SAC9B,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC;YACpC,OAAO,EAAE,oBAAoB;YAC7B,SAAS,EAAE,IAAI;SAChB,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxB,MAAM,CAAC,0BAA0B,CAAC,SAAS,CAAC;YAC1C,IAAI,EAAE;gBACJ,OAAO,EAAE,UAAU;gBACnB,SAAS,EAAE,CAAC,oBAAoB,CAAC;aAClC;SACF,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}