@polpo-ai/core 0.15.36 → 0.15.38
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 +102 -0
- package/dist/__tests__/model-profiles.test.d.ts +2 -0
- package/dist/__tests__/model-profiles.test.d.ts.map +1 -0
- package/dist/__tests__/model-profiles.test.js +221 -0
- package/dist/__tests__/model-profiles.test.js.map +1 -0
- package/dist/__tests__/model-router.test.d.ts +2 -0
- package/dist/__tests__/model-router.test.d.ts.map +1 -0
- package/dist/__tests__/model-router.test.js +458 -0
- package/dist/__tests__/model-router.test.js.map +1 -0
- package/dist/__tests__/runtime-plan.test.d.ts +2 -0
- package/dist/__tests__/runtime-plan.test.d.ts.map +1 -0
- package/dist/__tests__/runtime-plan.test.js +358 -0
- package/dist/__tests__/runtime-plan.test.js.map +1 -0
- package/dist/__tests__/task-runner-model-profiles.test.d.ts +2 -0
- package/dist/__tests__/task-runner-model-profiles.test.d.ts.map +1 -0
- package/dist/__tests__/task-runner-model-profiles.test.js +84 -0
- package/dist/__tests__/task-runner-model-profiles.test.js.map +1 -0
- package/dist/adapter.d.ts +8 -1
- package/dist/adapter.d.ts.map +1 -1
- package/dist/assessment-orchestrator.d.ts +1 -0
- package/dist/assessment-orchestrator.d.ts.map +1 -1
- package/dist/assessment-orchestrator.js +11 -4
- package/dist/assessment-orchestrator.js.map +1 -1
- package/dist/escalation-manager.d.ts.map +1 -1
- package/dist/escalation-manager.js +6 -1
- package/dist/escalation-manager.js.map +1 -1
- package/dist/events.d.ts +2 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/loop/types.d.ts +3 -3
- package/dist/loop/types.d.ts.map +1 -1
- package/dist/mission-executor.d.ts.map +1 -1
- package/dist/mission-executor.js +2 -2
- package/dist/mission-executor.js.map +1 -1
- package/dist/model-profiles.d.ts +39 -0
- package/dist/model-profiles.d.ts.map +1 -0
- package/dist/model-profiles.js +181 -0
- package/dist/model-profiles.js.map +1 -0
- package/dist/model-router.d.ts +98 -0
- package/dist/model-router.d.ts.map +1 -0
- package/dist/model-router.js +358 -0
- package/dist/model-router.js.map +1 -0
- package/dist/runtime-plan/events.d.ts +5 -0
- package/dist/runtime-plan/events.d.ts.map +1 -0
- package/dist/runtime-plan/events.js +10 -0
- package/dist/runtime-plan/events.js.map +1 -0
- package/dist/runtime-plan/index.d.ts +5 -0
- package/dist/runtime-plan/index.d.ts.map +1 -0
- package/dist/runtime-plan/index.js +4 -0
- package/dist/runtime-plan/index.js.map +1 -0
- package/dist/runtime-plan/planner.d.ts +10 -0
- package/dist/runtime-plan/planner.d.ts.map +1 -0
- package/dist/runtime-plan/planner.js +322 -0
- package/dist/runtime-plan/planner.js.map +1 -0
- package/dist/runtime-plan/settings.d.ts +18 -0
- package/dist/runtime-plan/settings.d.ts.map +1 -0
- package/dist/runtime-plan/settings.js +63 -0
- package/dist/runtime-plan/settings.js.map +1 -0
- package/dist/runtime-plan/types.d.ts +112 -0
- package/dist/runtime-plan/types.d.ts.map +1 -0
- package/dist/runtime-plan/types.js +2 -0
- package/dist/runtime-plan/types.js.map +1 -0
- package/dist/schemas.d.ts +79 -19
- package/dist/schemas.d.ts.map +1 -1
- package/dist/schemas.js +16 -2
- package/dist/schemas.js.map +1 -1
- package/dist/task-runner.d.ts.map +1 -1
- package/dist/task-runner.js +5 -2
- package/dist/task-runner.js.map +1 -1
- package/dist/types/agent.d.ts +5 -3
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js.map +1 -1
- package/dist/types/config.d.ts +24 -3
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/config.js.map +1 -1
- package/package.json +13 -1
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
import { MODEL_PROFILE_NAME_PATTERN, ModelProfileResolutionError, resolveModelProfileSelection, } from "./model-profiles.js";
|
|
2
|
+
export const MODEL_ROUTER_MODES = ["off", "auto"];
|
|
3
|
+
export const DEFAULT_MODEL_ROUTE_MIN_CONFIDENCE = 0.7;
|
|
4
|
+
export const DEFAULT_MODEL_ROUTE_TIMEOUT_MS = 1_000;
|
|
5
|
+
export const DEFAULT_MODEL_ROUTE_MAX_INPUT_CHARS = 4_096;
|
|
6
|
+
export const MAX_MODEL_ROUTE_INPUT_CHARS = 16_384;
|
|
7
|
+
export const MAX_MODEL_ROUTE_LABELS = 16;
|
|
8
|
+
export const MAX_MODEL_ROUTE_LABEL_CHARS = 64;
|
|
9
|
+
export const MAX_MODEL_ROUTE_REASON_CHARS = 512;
|
|
10
|
+
export class ModelRouteCancelledError extends Error {
|
|
11
|
+
code = "MODEL_ROUTE_CANCELLED";
|
|
12
|
+
constructor() {
|
|
13
|
+
super("Model routing was cancelled");
|
|
14
|
+
this.name = "ModelRouteCancelledError";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function modelRouteRuntimePlanFields(route) {
|
|
18
|
+
const warnings = route.status === "fallback"
|
|
19
|
+
? [`Model router used fallback profile "${route.profile}"`]
|
|
20
|
+
: [];
|
|
21
|
+
return Object.freeze({
|
|
22
|
+
model: Object.freeze({
|
|
23
|
+
selection: route.selection,
|
|
24
|
+
profile: route.profile,
|
|
25
|
+
source: route.source,
|
|
26
|
+
}),
|
|
27
|
+
audit: Object.freeze({
|
|
28
|
+
reasons: Object.freeze([route.reason]),
|
|
29
|
+
warnings: Object.freeze(warnings),
|
|
30
|
+
...(route.confidence !== undefined
|
|
31
|
+
? { confidence: route.confidence }
|
|
32
|
+
: {}),
|
|
33
|
+
latencyMs: Object.freeze({ modelRouter: route.latencyMs }),
|
|
34
|
+
fallbackUsed: route.fallbackUsed,
|
|
35
|
+
}),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function finiteRange(value, fallback, label, minimum, maximum) {
|
|
39
|
+
if (value === undefined)
|
|
40
|
+
return fallback;
|
|
41
|
+
if (typeof value !== "number" ||
|
|
42
|
+
!Number.isFinite(value) ||
|
|
43
|
+
value < minimum ||
|
|
44
|
+
value > maximum) {
|
|
45
|
+
throw new Error(`${label} must be a finite number between ${minimum} and ${maximum}`);
|
|
46
|
+
}
|
|
47
|
+
return value;
|
|
48
|
+
}
|
|
49
|
+
function positiveInteger(value, fallback, label, maximum) {
|
|
50
|
+
if (value === undefined)
|
|
51
|
+
return fallback;
|
|
52
|
+
if (typeof value !== "number" ||
|
|
53
|
+
!Number.isInteger(value) ||
|
|
54
|
+
value <= 0 ||
|
|
55
|
+
value > maximum) {
|
|
56
|
+
throw new Error(`${label} must be a positive integer no greater than ${maximum}`);
|
|
57
|
+
}
|
|
58
|
+
return value;
|
|
59
|
+
}
|
|
60
|
+
function normalizedUniqueStrings(value, label, options = {}) {
|
|
61
|
+
if (!Array.isArray(value)) {
|
|
62
|
+
throw new Error(`${label} must be an array of strings`);
|
|
63
|
+
}
|
|
64
|
+
const output = [];
|
|
65
|
+
const seen = new Set();
|
|
66
|
+
for (const item of value) {
|
|
67
|
+
if (typeof item !== "string") {
|
|
68
|
+
throw new Error(`${label} must contain only strings`);
|
|
69
|
+
}
|
|
70
|
+
const normalized = item.trim();
|
|
71
|
+
if (!normalized)
|
|
72
|
+
continue;
|
|
73
|
+
if (options.maximumChars && normalized.length > options.maximumChars) {
|
|
74
|
+
throw new Error(`${label} values must not exceed ${options.maximumChars} characters`);
|
|
75
|
+
}
|
|
76
|
+
if (options.pattern && !options.pattern.test(normalized)) {
|
|
77
|
+
throw new Error(`${label} contains invalid value "${normalized}"`);
|
|
78
|
+
}
|
|
79
|
+
if (seen.has(normalized))
|
|
80
|
+
continue;
|
|
81
|
+
seen.add(normalized);
|
|
82
|
+
output.push(normalized);
|
|
83
|
+
if (options.maximumItems && output.length > options.maximumItems) {
|
|
84
|
+
throw new Error(`${label} must not contain more than ${options.maximumItems} values`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return output;
|
|
88
|
+
}
|
|
89
|
+
function normalizeConfig(config) {
|
|
90
|
+
if (!config || typeof config !== "object" || Array.isArray(config)) {
|
|
91
|
+
throw new Error("Model router config must be an object");
|
|
92
|
+
}
|
|
93
|
+
const mode = config.mode ?? "off";
|
|
94
|
+
if (!MODEL_ROUTER_MODES.includes(mode)) {
|
|
95
|
+
throw new Error(`Model router mode must be one of: ${MODEL_ROUTER_MODES.join(", ")}`);
|
|
96
|
+
}
|
|
97
|
+
if (typeof config.fallbackProfile !== "string" ||
|
|
98
|
+
!MODEL_PROFILE_NAME_PATTERN.test(config.fallbackProfile)) {
|
|
99
|
+
throw new Error("Model router fallbackProfile must be a valid profile name");
|
|
100
|
+
}
|
|
101
|
+
const allowedProfiles = normalizedUniqueStrings(config.allowedProfiles, "Model router allowedProfiles", { pattern: MODEL_PROFILE_NAME_PATTERN });
|
|
102
|
+
if (allowedProfiles.length === 0) {
|
|
103
|
+
throw new Error("Model router allowedProfiles must contain at least one profile");
|
|
104
|
+
}
|
|
105
|
+
return Object.freeze({
|
|
106
|
+
mode,
|
|
107
|
+
fallbackProfile: config.fallbackProfile,
|
|
108
|
+
allowedProfiles: Object.freeze(allowedProfiles),
|
|
109
|
+
minConfidence: finiteRange(config.minConfidence, DEFAULT_MODEL_ROUTE_MIN_CONFIDENCE, "Model router minConfidence", 0, 1),
|
|
110
|
+
timeoutMs: positiveInteger(config.timeoutMs, DEFAULT_MODEL_ROUTE_TIMEOUT_MS, "Model router timeoutMs", 60_000),
|
|
111
|
+
maxInputChars: positiveInteger(config.maxInputChars, DEFAULT_MODEL_ROUTE_MAX_INPUT_CHARS, "Model router maxInputChars", MAX_MODEL_ROUTE_INPUT_CHARS),
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
function normalizeLabels(value) {
|
|
115
|
+
if (value === undefined)
|
|
116
|
+
return [];
|
|
117
|
+
const labels = normalizedUniqueStrings(value, "Model router labels", {
|
|
118
|
+
maximumItems: MAX_MODEL_ROUTE_LABELS,
|
|
119
|
+
});
|
|
120
|
+
return labels.map((label) => label.slice(0, MAX_MODEL_ROUTE_LABEL_CHARS));
|
|
121
|
+
}
|
|
122
|
+
function resolveProfile(profile, input, config) {
|
|
123
|
+
return resolveModelProfileSelection({ profile }, {
|
|
124
|
+
profiles: input.profiles,
|
|
125
|
+
allowedProfiles: config.allowedProfiles,
|
|
126
|
+
allowedModels: input.allowedModels,
|
|
127
|
+
}).selection;
|
|
128
|
+
}
|
|
129
|
+
function result(value) {
|
|
130
|
+
return Object.freeze({
|
|
131
|
+
...value,
|
|
132
|
+
labels: Object.freeze([...(value.labels ?? [])]),
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function fallbackResult(input, config, details) {
|
|
136
|
+
return result({
|
|
137
|
+
status: details.status,
|
|
138
|
+
source: details.source,
|
|
139
|
+
profile: config.fallbackProfile,
|
|
140
|
+
selection: resolveProfile(config.fallbackProfile, input, config),
|
|
141
|
+
...(details.confidence !== undefined
|
|
142
|
+
? { confidence: details.confidence }
|
|
143
|
+
: {}),
|
|
144
|
+
reason: details.reason,
|
|
145
|
+
labels: details.labels,
|
|
146
|
+
latencyMs: details.latencyMs ?? 0,
|
|
147
|
+
fallbackUsed: details.fallbackUsed,
|
|
148
|
+
});
|
|
149
|
+
}
|
|
150
|
+
function parseDecision(value, allowedProfiles) {
|
|
151
|
+
let parsed = value;
|
|
152
|
+
if (typeof value === "string") {
|
|
153
|
+
parsed = JSON.parse(value);
|
|
154
|
+
}
|
|
155
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
156
|
+
throw new Error("Model route decision must be an object");
|
|
157
|
+
}
|
|
158
|
+
const prototype = Object.getPrototypeOf(parsed);
|
|
159
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
160
|
+
throw new Error("Model route decision must be a plain object");
|
|
161
|
+
}
|
|
162
|
+
const record = parsed;
|
|
163
|
+
const expectedKeys = ["confidence", "labels", "profile", "reason"];
|
|
164
|
+
const actualKeys = Object.keys(record).sort();
|
|
165
|
+
if (actualKeys.length !== expectedKeys.length ||
|
|
166
|
+
actualKeys.some((key, index) => key !== expectedKeys[index])) {
|
|
167
|
+
throw new Error("Model route decision contains unsupported fields");
|
|
168
|
+
}
|
|
169
|
+
if (typeof record.profile !== "string" ||
|
|
170
|
+
!allowedProfiles.includes(record.profile)) {
|
|
171
|
+
throw new ModelProfileResolutionError("DISALLOWED_PROFILE", "Model route decision selected a disallowed profile", { profile: typeof record.profile === "string" ? record.profile : undefined });
|
|
172
|
+
}
|
|
173
|
+
if (typeof record.confidence !== "number" ||
|
|
174
|
+
!Number.isFinite(record.confidence) ||
|
|
175
|
+
record.confidence < 0 ||
|
|
176
|
+
record.confidence > 1) {
|
|
177
|
+
throw new Error("Model route decision confidence must be between 0 and 1");
|
|
178
|
+
}
|
|
179
|
+
if (typeof record.reason !== "string" || !record.reason.trim()) {
|
|
180
|
+
throw new Error("Model route decision reason must be a non-empty string");
|
|
181
|
+
}
|
|
182
|
+
const reason = record.reason
|
|
183
|
+
.replace(/[\u0000-\u001f\u007f]/g, " ")
|
|
184
|
+
.replace(/\s+/g, " ")
|
|
185
|
+
.trim();
|
|
186
|
+
if (!reason || reason.length > MAX_MODEL_ROUTE_REASON_CHARS) {
|
|
187
|
+
throw new Error(`Model route decision reason must not exceed ${MAX_MODEL_ROUTE_REASON_CHARS} characters`);
|
|
188
|
+
}
|
|
189
|
+
const labels = normalizedUniqueStrings(record.labels, "Model route decision labels", {
|
|
190
|
+
maximumItems: MAX_MODEL_ROUTE_LABELS,
|
|
191
|
+
maximumChars: MAX_MODEL_ROUTE_LABEL_CHARS,
|
|
192
|
+
});
|
|
193
|
+
return Object.freeze({
|
|
194
|
+
profile: record.profile,
|
|
195
|
+
confidence: record.confidence,
|
|
196
|
+
reason,
|
|
197
|
+
labels: Object.freeze(labels),
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
async function classifyWithDeadline(classifier, input, timeoutMs, callerSignal) {
|
|
201
|
+
if (callerSignal?.aborted)
|
|
202
|
+
throw new ModelRouteCancelledError();
|
|
203
|
+
const controller = new AbortController();
|
|
204
|
+
let timeout;
|
|
205
|
+
let onCallerAbort;
|
|
206
|
+
const classifierOutcome = Promise.resolve()
|
|
207
|
+
.then(() => classifier.classify(input, { signal: controller.signal }))
|
|
208
|
+
.then((value) => ({ type: "decision", value }), () => ({ type: "error" }));
|
|
209
|
+
const timeoutOutcome = new Promise((resolve) => {
|
|
210
|
+
timeout = setTimeout(() => {
|
|
211
|
+
controller.abort(new Error("Model router timeout"));
|
|
212
|
+
resolve({ type: "timeout" });
|
|
213
|
+
}, timeoutMs);
|
|
214
|
+
});
|
|
215
|
+
const outcomes = [classifierOutcome, timeoutOutcome];
|
|
216
|
+
if (callerSignal) {
|
|
217
|
+
outcomes.push(new Promise((_resolve, reject) => {
|
|
218
|
+
onCallerAbort = () => {
|
|
219
|
+
controller.abort(new ModelRouteCancelledError());
|
|
220
|
+
reject(new ModelRouteCancelledError());
|
|
221
|
+
};
|
|
222
|
+
callerSignal.addEventListener("abort", onCallerAbort, { once: true });
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
try {
|
|
226
|
+
return await Promise.race(outcomes);
|
|
227
|
+
}
|
|
228
|
+
finally {
|
|
229
|
+
if (timeout)
|
|
230
|
+
clearTimeout(timeout);
|
|
231
|
+
if (callerSignal && onCallerAbort) {
|
|
232
|
+
callerSignal.removeEventListener("abort", onCallerAbort);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
export async function resolveModelRoute(input, options = {}) {
|
|
237
|
+
const config = normalizeConfig(input.config);
|
|
238
|
+
// Resolve the fallback before any classifier work. This proves that both the
|
|
239
|
+
// project registry and model allowlist permit every possible fallback path.
|
|
240
|
+
resolveProfile(config.fallbackProfile, input, config);
|
|
241
|
+
if (input.explicitProfile !== undefined) {
|
|
242
|
+
if (typeof input.explicitProfile !== "string" ||
|
|
243
|
+
!MODEL_PROFILE_NAME_PATTERN.test(input.explicitProfile)) {
|
|
244
|
+
throw new Error("Explicit model profile must be a valid profile name");
|
|
245
|
+
}
|
|
246
|
+
return result({
|
|
247
|
+
status: "explicit",
|
|
248
|
+
source: "request",
|
|
249
|
+
profile: input.explicitProfile,
|
|
250
|
+
selection: resolveProfile(input.explicitProfile, input, config),
|
|
251
|
+
confidence: 1,
|
|
252
|
+
reason: "Explicit model profile request",
|
|
253
|
+
latencyMs: 0,
|
|
254
|
+
fallbackUsed: false,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
if (config.mode === "off") {
|
|
258
|
+
return fallbackResult(input, config, {
|
|
259
|
+
status: "disabled",
|
|
260
|
+
source: "agent",
|
|
261
|
+
reason: "Model router is disabled",
|
|
262
|
+
fallbackUsed: false,
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
if (config.allowedProfiles.length === 1) {
|
|
266
|
+
return fallbackResult(input, config, {
|
|
267
|
+
status: "skipped",
|
|
268
|
+
source: "agent",
|
|
269
|
+
reason: "Only one model profile is allowed",
|
|
270
|
+
fallbackUsed: false,
|
|
271
|
+
});
|
|
272
|
+
}
|
|
273
|
+
const compactInput = (input.input ?? "").trim().slice(0, config.maxInputChars);
|
|
274
|
+
if (!compactInput) {
|
|
275
|
+
return fallbackResult(input, config, {
|
|
276
|
+
status: "skipped",
|
|
277
|
+
source: "agent",
|
|
278
|
+
reason: "Model router input was empty",
|
|
279
|
+
fallbackUsed: false,
|
|
280
|
+
});
|
|
281
|
+
}
|
|
282
|
+
if (!options.classifier) {
|
|
283
|
+
return fallbackResult(input, config, {
|
|
284
|
+
status: "skipped",
|
|
285
|
+
source: "agent",
|
|
286
|
+
reason: "Model router classifier is unavailable",
|
|
287
|
+
fallbackUsed: false,
|
|
288
|
+
});
|
|
289
|
+
}
|
|
290
|
+
const classifierInput = Object.freeze({
|
|
291
|
+
version: 1,
|
|
292
|
+
surface: input.surface,
|
|
293
|
+
source: input.source,
|
|
294
|
+
input: compactInput,
|
|
295
|
+
profiles: Object.freeze([...config.allowedProfiles]),
|
|
296
|
+
labels: Object.freeze(normalizeLabels(input.labels)),
|
|
297
|
+
});
|
|
298
|
+
const startedAt = Date.now();
|
|
299
|
+
const outcome = await classifyWithDeadline(options.classifier, classifierInput, config.timeoutMs, options.signal);
|
|
300
|
+
const latencyMs = Math.max(0, Date.now() - startedAt);
|
|
301
|
+
if (outcome.type === "timeout") {
|
|
302
|
+
return fallbackResult(input, config, {
|
|
303
|
+
status: "fallback",
|
|
304
|
+
source: "router",
|
|
305
|
+
reason: `Model router timed out after ${config.timeoutMs}ms`,
|
|
306
|
+
latencyMs,
|
|
307
|
+
fallbackUsed: true,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
if (outcome.type === "error") {
|
|
311
|
+
return fallbackResult(input, config, {
|
|
312
|
+
status: "fallback",
|
|
313
|
+
source: "router",
|
|
314
|
+
reason: "Model router classifier failed",
|
|
315
|
+
latencyMs,
|
|
316
|
+
fallbackUsed: true,
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
let decision;
|
|
320
|
+
try {
|
|
321
|
+
decision = parseDecision(outcome.value, config.allowedProfiles);
|
|
322
|
+
// Re-resolve the exact selected profile before returning. The classifier
|
|
323
|
+
// never receives model ids and cannot bypass registry/model allowlists.
|
|
324
|
+
resolveProfile(decision.profile, input, config);
|
|
325
|
+
}
|
|
326
|
+
catch {
|
|
327
|
+
return fallbackResult(input, config, {
|
|
328
|
+
status: "fallback",
|
|
329
|
+
source: "router",
|
|
330
|
+
reason: "Model router returned an invalid decision",
|
|
331
|
+
latencyMs,
|
|
332
|
+
fallbackUsed: true,
|
|
333
|
+
});
|
|
334
|
+
}
|
|
335
|
+
if (decision.confidence < config.minConfidence) {
|
|
336
|
+
return fallbackResult(input, config, {
|
|
337
|
+
status: "fallback",
|
|
338
|
+
source: "router",
|
|
339
|
+
reason: `Model router confidence was below ${config.minConfidence}`,
|
|
340
|
+
labels: decision.labels,
|
|
341
|
+
latencyMs,
|
|
342
|
+
confidence: decision.confidence,
|
|
343
|
+
fallbackUsed: true,
|
|
344
|
+
});
|
|
345
|
+
}
|
|
346
|
+
return result({
|
|
347
|
+
status: "routed",
|
|
348
|
+
source: "router",
|
|
349
|
+
profile: decision.profile,
|
|
350
|
+
selection: resolveProfile(decision.profile, input, config),
|
|
351
|
+
confidence: decision.confidence,
|
|
352
|
+
reason: decision.reason,
|
|
353
|
+
labels: decision.labels,
|
|
354
|
+
latencyMs,
|
|
355
|
+
fallbackUsed: false,
|
|
356
|
+
});
|
|
357
|
+
}
|
|
358
|
+
//# sourceMappingURL=model-router.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-router.js","sourceRoot":"","sources":["../src/model-router.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { RuntimePlan, RuntimePlanResolvedEvent } from "./types.js";
|
|
2
|
+
export declare const RUNTIME_PLAN_EVENT: "runtime:plan";
|
|
3
|
+
export declare const RUNTIME_PLAN_RESOLVED_TYPE: "runtime.plan.resolved";
|
|
4
|
+
export declare function createRuntimePlanResolvedEvent(plan: RuntimePlan): RuntimePlanResolvedEvent;
|
|
5
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime-plan/events.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAExE,eAAO,MAAM,kBAAkB,EAAG,cAAuB,CAAC;AAC1D,eAAO,MAAM,0BAA0B,EAAG,uBAAgC,CAAC;AAE3E,wBAAgB,8BAA8B,CAC5C,IAAI,EAAE,WAAW,GAChB,wBAAwB,CAK1B"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { freezeRuntimePlan } from "./planner.js";
|
|
2
|
+
export const RUNTIME_PLAN_EVENT = "runtime:plan";
|
|
3
|
+
export const RUNTIME_PLAN_RESOLVED_TYPE = "runtime.plan.resolved";
|
|
4
|
+
export function createRuntimePlanResolvedEvent(plan) {
|
|
5
|
+
return freezeRuntimePlan({
|
|
6
|
+
type: RUNTIME_PLAN_RESOLVED_TYPE,
|
|
7
|
+
plan: freezeRuntimePlan(plan),
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runtime-plan/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAGjD,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAuB,CAAC;AAC1D,MAAM,CAAC,MAAM,0BAA0B,GAAG,uBAAgC,CAAC;AAE3E,MAAM,UAAU,8BAA8B,CAC5C,IAAiB;IAEjB,OAAO,iBAAiB,CAAC;QACvB,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,iBAAiB,CAAC,IAAI,CAAC;KAC9B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { RUNTIME_DECISION_SOURCES, RUNTIME_EXECUTION_MODES, RUNTIME_GUARDRAIL_ACTIONS, RUNTIME_GUARDRAIL_PHASES, RUNTIME_GUARDRAIL_RISKS, RUNTIME_INVOCATION_SOURCES, RUNTIME_PLAN_DEFAULTS, RUNTIME_SURFACES, RUNTIME_TOOL_EXPOSURES, } from "./settings.js";
|
|
2
|
+
export { createRuntimePlan, normalizeRuntimePlan } from "./planner.js";
|
|
3
|
+
export { RUNTIME_PLAN_EVENT, RUNTIME_PLAN_RESOLVED_TYPE, createRuntimePlanResolvedEvent, } from "./events.js";
|
|
4
|
+
export type { CreateRuntimePlanInput, RuntimeContextPolicy, RuntimeDecisionAudit, RuntimeDecisionSource, RuntimeExecutionMode, RuntimeGuardrailAction, RuntimeGuardrailDecision, RuntimeGuardrailPhase, RuntimeGuardrailRisk, RuntimeInvocationSource, RuntimePlan, RuntimePlanFactoryOptions, RuntimePlanGuardrailDecision, RuntimePlanJsonPrimitive, RuntimePlanJsonValue, RuntimePlanResolvedEvent, RuntimeSurface, RuntimeToolExposure, } from "./types.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime-plan/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,sBAAsB,EACtB,wBAAwB,EACxB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,WAAW,EACX,yBAAyB,EACzB,4BAA4B,EAC5B,wBAAwB,EACxB,oBAAoB,EACpB,wBAAwB,EACxB,cAAc,EACd,mBAAmB,GACpB,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { RUNTIME_DECISION_SOURCES, RUNTIME_EXECUTION_MODES, RUNTIME_GUARDRAIL_ACTIONS, RUNTIME_GUARDRAIL_PHASES, RUNTIME_GUARDRAIL_RISKS, RUNTIME_INVOCATION_SOURCES, RUNTIME_PLAN_DEFAULTS, RUNTIME_SURFACES, RUNTIME_TOOL_EXPOSURES, } from "./settings.js";
|
|
2
|
+
export { createRuntimePlan, normalizeRuntimePlan } from "./planner.js";
|
|
3
|
+
export { RUNTIME_PLAN_EVENT, RUNTIME_PLAN_RESOLVED_TYPE, createRuntimePlanResolvedEvent, } from "./events.js";
|
|
4
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime-plan/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,EAC1B,qBAAqB,EACrB,gBAAgB,EAChB,sBAAsB,GACvB,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,0BAA0B,EAC1B,8BAA8B,GAC/B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CreateRuntimePlanInput, RuntimePlan, RuntimePlanFactoryOptions } from "./types.js";
|
|
2
|
+
export declare function freezeRuntimePlan<T>(value: T): T;
|
|
3
|
+
export declare function createRuntimePlan(input: CreateRuntimePlanInput, factory?: RuntimePlanFactoryOptions): RuntimePlan;
|
|
4
|
+
/**
|
|
5
|
+
* Rebuild a plan crossing a host boundary from the public allowlisted shape.
|
|
6
|
+
* This strips unknown fields and re-applies every invariant even when a
|
|
7
|
+
* JavaScript host bypasses the TypeScript contract.
|
|
8
|
+
*/
|
|
9
|
+
export declare function normalizeRuntimePlan(value: unknown): RuntimePlan;
|
|
10
|
+
//# sourceMappingURL=planner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"planner.d.ts","sourceRoot":"","sources":["../../src/runtime-plan/planner.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,sBAAsB,EAItB,WAAW,EACX,yBAAyB,EAE1B,MAAM,YAAY,CAAC;AAgMpB,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAMhD;AAED,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,sBAAsB,EAC7B,OAAO,GAAE,yBAA8B,GACtC,WAAW,CA2Gb;AASD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,CA0EhE"}
|