@polpo-ai/core 0.15.49 → 0.15.51

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 (82) 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__/execution-router.test.js +182 -0
  7. package/dist/__tests__/execution-router.test.js.map +1 -1
  8. package/dist/__tests__/guardrail-policy-packs.test.d.ts +2 -0
  9. package/dist/__tests__/guardrail-policy-packs.test.d.ts.map +1 -0
  10. package/dist/__tests__/guardrail-policy-packs.test.js +287 -0
  11. package/dist/__tests__/guardrail-policy-packs.test.js.map +1 -0
  12. package/dist/__tests__/model-profiles.test.js +33 -2
  13. package/dist/__tests__/model-profiles.test.js.map +1 -1
  14. package/dist/__tests__/model-router.test.js +114 -0
  15. package/dist/__tests__/model-router.test.js.map +1 -1
  16. package/dist/__tests__/task-execution-router.test.js +31 -0
  17. package/dist/__tests__/task-execution-router.test.js.map +1 -1
  18. package/dist/execution-router.d.ts +30 -1
  19. package/dist/execution-router.d.ts.map +1 -1
  20. package/dist/execution-router.js +205 -7
  21. package/dist/execution-router.js.map +1 -1
  22. package/dist/guardrails/detectors.d.ts +12 -3
  23. package/dist/guardrails/detectors.d.ts.map +1 -1
  24. package/dist/guardrails/detectors.js +79 -4
  25. package/dist/guardrails/detectors.js.map +1 -1
  26. package/dist/guardrails/engine.d.ts.map +1 -1
  27. package/dist/guardrails/engine.js +6 -1
  28. package/dist/guardrails/engine.js.map +1 -1
  29. package/dist/guardrails/index.d.ts +4 -3
  30. package/dist/guardrails/index.d.ts.map +1 -1
  31. package/dist/guardrails/index.js +3 -2
  32. package/dist/guardrails/index.js.map +1 -1
  33. package/dist/guardrails/preflight-policy.d.ts +4 -0
  34. package/dist/guardrails/preflight-policy.d.ts.map +1 -0
  35. package/dist/guardrails/preflight-policy.js +43 -0
  36. package/dist/guardrails/preflight-policy.js.map +1 -0
  37. package/dist/guardrails/settings.d.ts +2 -1
  38. package/dist/guardrails/settings.d.ts.map +1 -1
  39. package/dist/guardrails/settings.js +175 -11
  40. package/dist/guardrails/settings.js.map +1 -1
  41. package/dist/guardrails/types.d.ts +47 -0
  42. package/dist/guardrails/types.d.ts.map +1 -1
  43. package/dist/hooks.d.ts +3 -1
  44. package/dist/hooks.d.ts.map +1 -1
  45. package/dist/hooks.js.map +1 -1
  46. package/dist/index.d.ts +2 -2
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +1 -1
  49. package/dist/index.js.map +1 -1
  50. package/dist/model-profiles.d.ts +4 -0
  51. package/dist/model-profiles.d.ts.map +1 -1
  52. package/dist/model-profiles.js +8 -8
  53. package/dist/model-profiles.js.map +1 -1
  54. package/dist/model-router.d.ts +30 -0
  55. package/dist/model-router.d.ts.map +1 -1
  56. package/dist/model-router.js +201 -4
  57. package/dist/model-router.js.map +1 -1
  58. package/dist/runtime-context/index.d.ts +2 -2
  59. package/dist/runtime-context/index.d.ts.map +1 -1
  60. package/dist/runtime-context/index.js +1 -1
  61. package/dist/runtime-context/index.js.map +1 -1
  62. package/dist/runtime-context/runtime-context.d.ts +2 -0
  63. package/dist/runtime-context/runtime-context.d.ts.map +1 -1
  64. package/dist/runtime-context/runtime-context.js +39 -4
  65. package/dist/runtime-context/runtime-context.js.map +1 -1
  66. package/dist/runtime-context/runtime-context.test.js +38 -0
  67. package/dist/runtime-context/runtime-context.test.js.map +1 -1
  68. package/dist/runtime-context/types.d.ts +9 -0
  69. package/dist/runtime-context/types.d.ts.map +1 -1
  70. package/dist/task-manager.d.ts +3 -1
  71. package/dist/task-manager.d.ts.map +1 -1
  72. package/dist/task-manager.js +4 -0
  73. package/dist/task-manager.js.map +1 -1
  74. package/dist/task-runner.d.ts.map +1 -1
  75. package/dist/task-runner.js +2 -2
  76. package/dist/task-runner.js.map +1 -1
  77. package/dist/types/agent.d.ts +7 -1
  78. package/dist/types/agent.d.ts.map +1 -1
  79. package/dist/types/agent.js.map +1 -1
  80. package/dist/types/task.d.ts +5 -0
  81. package/dist/types/task.d.ts.map +1 -1
  82. package/package.json +1 -1
@@ -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":"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"}
@@ -108,6 +108,76 @@ describe("resolveModelRoute", () => {
108
108
  });
109
109
  expect(classify.classify).not.toHaveBeenCalled();
110
110
  });
111
+ it("applies the first matching deterministic rule before invoking the classifier", async () => {
112
+ const classify = classifier({
113
+ profile: "reasoning",
114
+ confidence: 1,
115
+ reason: "Should not run",
116
+ labels: [],
117
+ });
118
+ const result = await resolveModelRoute(input({
119
+ labels: ["plan:paid", "request:simple"],
120
+ config: {
121
+ mode: "auto",
122
+ fallbackProfile: "balanced",
123
+ allowedProfiles: ["fast", "balanced", "reasoning"],
124
+ rules: [
125
+ {
126
+ id: "paid-users",
127
+ profile: "reasoning",
128
+ when: { allLabels: ["plan:paid"] },
129
+ },
130
+ {
131
+ id: "simple-requests",
132
+ profile: "fast",
133
+ when: { allLabels: ["request:simple"] },
134
+ },
135
+ ],
136
+ },
137
+ }), { classifier: classify });
138
+ expect(result).toEqual({
139
+ status: "routed",
140
+ source: "router",
141
+ profile: "reasoning",
142
+ selection: "openai/gpt-5",
143
+ confidence: 1,
144
+ reason: 'Matched model router rule "paid-users"',
145
+ labels: ["plan:paid", "request:simple"],
146
+ latencyMs: 0,
147
+ fallbackUsed: false,
148
+ });
149
+ expect(classify.classify).not.toHaveBeenCalled();
150
+ });
151
+ it("matches deterministic rules against surface, source, and bounded labels", async () => {
152
+ const result = await resolveModelRoute(input({
153
+ surface: "channel",
154
+ source: "channel",
155
+ input: "",
156
+ labels: ["tier:free", "trusted"],
157
+ config: {
158
+ mode: "auto",
159
+ fallbackProfile: "balanced",
160
+ allowedProfiles: ["fast", "balanced"],
161
+ rules: [{
162
+ id: "free-channel",
163
+ profile: "fast",
164
+ when: {
165
+ surfaces: ["channel"],
166
+ sources: ["channel"],
167
+ allLabels: ["tier:free"],
168
+ noneLabels: ["risk:high"],
169
+ },
170
+ }],
171
+ },
172
+ }));
173
+ expect(result).toMatchObject({
174
+ status: "routed",
175
+ profile: "fast",
176
+ confidence: 1,
177
+ reason: 'Matched model router rule "free-channel"',
178
+ labels: ["tier:free", "trusted"],
179
+ });
180
+ });
111
181
  it("cannot use an explicit or classified profile outside the allowlist", async () => {
112
182
  await expect(resolveModelRoute(input({
113
183
  explicitProfile: "reasoning",
@@ -393,12 +463,22 @@ describe("resolveModelRoute", () => {
393
463
  fallbackProfile: "balanced",
394
464
  allowedProfiles: ["fast", "balanced", "reasoning"],
395
465
  maxInputChars: 128,
466
+ profileHints: {
467
+ fast: "Use for short, low-complexity requests.",
468
+ reasoning: "Use for careful multi-step analysis.",
469
+ },
470
+ guidance: "Prefer the least expensive profile that can complete the request.",
396
471
  },
397
472
  }), { classifier: classify });
398
473
  const classifierInput = vi.mocked(classify.classify).mock.calls[0]?.[0];
399
474
  expect(classifierInput.input).toHaveLength(128);
400
475
  expect(classifierInput.profiles).toEqual(["fast", "balanced", "reasoning"]);
401
476
  expect(classifierInput.labels).toEqual(["channel", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"]);
477
+ expect(classifierInput.profileHints).toEqual({
478
+ fast: "Use for short, low-complexity requests.",
479
+ reasoning: "Use for careful multi-step analysis.",
480
+ });
481
+ expect(classifierInput.guidance).toBe("Prefer the least expensive profile that can complete the request.");
402
482
  const serialized = JSON.stringify(classifierInput);
403
483
  expect(serialized).not.toContain(secret);
404
484
  expect(serialized).not.toContain(history);
@@ -452,6 +532,40 @@ describe("resolveModelRoute", () => {
452
532
  allowedProfiles: ["fast", "balanced"],
453
533
  },
454
534
  }), { classifier: classify })).rejects.toThrow("mode");
535
+ await expect(resolveModelRoute(input({
536
+ config: {
537
+ mode: "auto",
538
+ fallbackProfile: "balanced",
539
+ allowedProfiles: ["fast", "balanced"],
540
+ rules: [{
541
+ id: "empty",
542
+ profile: "fast",
543
+ when: {},
544
+ }],
545
+ },
546
+ }), { classifier: classify })).rejects.toThrow("at least one condition");
547
+ await expect(resolveModelRoute(input({
548
+ config: {
549
+ mode: "auto",
550
+ fallbackProfile: "balanced",
551
+ allowedProfiles: ["fast", "balanced"],
552
+ rules: [{
553
+ id: "widen",
554
+ profile: "reasoning",
555
+ when: { allLabels: ["tier:paid"] },
556
+ }],
557
+ },
558
+ }), { classifier: classify })).rejects.toThrow("allowedProfiles");
559
+ await expect(resolveModelRoute(input({
560
+ config: {
561
+ mode: "auto",
562
+ fallbackProfile: "balanced",
563
+ allowedProfiles: ["fast", "balanced"],
564
+ profileHints: {
565
+ reasoning: "Not an allowed candidate",
566
+ },
567
+ },
568
+ }), { classifier: classify })).rejects.toThrow("allowedProfiles");
455
569
  expect(classify.classify).not.toHaveBeenCalled();
456
570
  });
457
571
  });
@@ -1 +1 @@
1
- {"version":3,"file":"model-router.test.js","sourceRoot":"","sources":["../../src/__tests__/model-router.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-router.test.js","sourceRoot":"","sources":["../../src/__tests__/model-router.test.ts"],"names":[],"mappings":"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"}
@@ -140,6 +140,37 @@ function harness(overrides = {}) {
140
140
  };
141
141
  }
142
142
  describe("TaskRunner execution routing", () => {
143
+ it("routes tasks from persisted labels before resolving a classifier", async () => {
144
+ const h = harness({
145
+ agentStore: {
146
+ getAgent: vi.fn(async () => agent({
147
+ executionRouter: {
148
+ mode: "auto",
149
+ allowedLoops: ["research", "build"],
150
+ rules: [{
151
+ id: "paid-build",
152
+ mode: "loop",
153
+ loop: "build",
154
+ when: {
155
+ allLabels: ["plan:paid"],
156
+ anyLabels: ["request:export"],
157
+ },
158
+ }],
159
+ },
160
+ })),
161
+ },
162
+ });
163
+ await new TaskRunner(h.ctx).spawnForTask(task({
164
+ routing: { labels: ["plan:paid", "request:export"] },
165
+ }));
166
+ expect(h.resolveExecutionRouteClassifier).not.toHaveBeenCalled();
167
+ expect(h.spawned[0].executionRoute).toMatchObject({
168
+ status: "routed",
169
+ mode: "loop",
170
+ loop: "build",
171
+ reason: 'Matched execution router rule "paid-build"',
172
+ });
173
+ });
143
174
  it("routes before context and spawn, then stamps an immutable loop decision", async () => {
144
175
  const h = harness();
145
176
  let classifierInput;