@animus-labs/cortex 0.2.2 → 0.2.4
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/dist/cortex-agent.d.ts +1 -0
- package/dist/cortex-agent.d.ts.map +1 -1
- package/dist/cortex-agent.js +29 -9
- package/dist/cortex-agent.js.map +1 -1
- package/dist/index.d.ts +4 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/provider-manager.d.ts +39 -3
- package/dist/provider-manager.d.ts.map +1 -1
- package/dist/provider-manager.js +187 -56
- package/dist/provider-manager.js.map +1 -1
- package/dist/provider-registry.d.ts +7 -9
- package/dist/provider-registry.d.ts.map +1 -1
- package/dist/provider-registry.js +11 -19
- package/dist/provider-registry.js.map +1 -1
- package/dist/utility-model-inference.d.ts +5 -0
- package/dist/utility-model-inference.d.ts.map +1 -0
- package/dist/utility-model-inference.js +174 -0
- package/dist/utility-model-inference.js.map +1 -0
- package/package.json +1 -1
- package/src/cortex-agent.ts +28 -9
- package/src/index.ts +4 -1
- package/src/provider-manager.ts +266 -64
- package/src/provider-registry.ts +12 -19
- package/src/utility-model-inference.ts +203 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This module contains:
|
|
5
5
|
* 1. PROVIDER_REGISTRY: metadata for all known providers (auth methods, env vars, key prefixes)
|
|
6
6
|
* 2. OAUTH_PROVIDER_IDS: the subset of providers that support OAuth
|
|
7
|
-
* 3.
|
|
7
|
+
* 3. UTILITY_MODEL_OVERRIDES: per-provider utility model overrides for inference exceptions
|
|
8
8
|
*
|
|
9
9
|
* OAuth flows are resolved through pi-ai's OAuth provider registry at runtime.
|
|
10
10
|
*
|
|
@@ -224,16 +224,8 @@ export const OAUTH_PROVIDER_IDS = [
|
|
|
224
224
|
'github-copilot',
|
|
225
225
|
];
|
|
226
226
|
// ---------------------------------------------------------------------------
|
|
227
|
-
//
|
|
227
|
+
// Model Defaults
|
|
228
228
|
// ---------------------------------------------------------------------------
|
|
229
|
-
/**
|
|
230
|
-
* Default utility model IDs per provider.
|
|
231
|
-
* Used when utilityModel is 'default' or undefined.
|
|
232
|
-
*
|
|
233
|
-
* These are the cheapest capable models for each provider,
|
|
234
|
-
* suitable for internal operations like WebFetch summarization
|
|
235
|
-
* and safety classification.
|
|
236
|
-
*/
|
|
237
229
|
/**
|
|
238
230
|
* Default primary model IDs per provider.
|
|
239
231
|
* Used when a user first connects a provider and no model is explicitly selected.
|
|
@@ -242,20 +234,20 @@ export const OAUTH_PROVIDER_IDS = [
|
|
|
242
234
|
export const PRIMARY_MODEL_DEFAULTS = {
|
|
243
235
|
anthropic: 'claude-sonnet-4-6',
|
|
244
236
|
openai: 'gpt-5.4',
|
|
237
|
+
'openai-codex': 'gpt-5.5',
|
|
245
238
|
google: 'gemini-3.1-pro-preview',
|
|
239
|
+
xai: 'grok-4',
|
|
246
240
|
groq: 'openai/gpt-oss-120b',
|
|
247
241
|
cerebras: 'gpt-oss-120b',
|
|
248
242
|
mistral: 'mistral-large-2512',
|
|
249
243
|
};
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
mistral: 'mistral-small-2506', // $0.06/$0.18 per 1M tokens
|
|
258
|
-
};
|
|
244
|
+
/**
|
|
245
|
+
* Per-provider utility model overrides for inference exceptions.
|
|
246
|
+
* Leave empty unless dynamic inference picks a bad utility model for a provider.
|
|
247
|
+
*/
|
|
248
|
+
export const UTILITY_MODEL_OVERRIDES = {};
|
|
249
|
+
/** Backwards-compatible alias. Prefer UTILITY_MODEL_OVERRIDES for new code. */
|
|
250
|
+
export const UTILITY_MODEL_DEFAULTS = UTILITY_MODEL_OVERRIDES;
|
|
259
251
|
/**
|
|
260
252
|
* Cache configuration for all known providers.
|
|
261
253
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../src/provider-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA2CH,8EAA8E;AAC9E,oBAAoB;AACpB,8EAA8E;AAE9E;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAmB;IAC/C;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC;QACjC,MAAM,EAAE,mBAAmB;QAC3B,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,qCAAqC;KAC9C;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,gBAAgB;QACxB,SAAS,EAAE,UAAU;QACrB,MAAM,EAAE,8BAA8B;KACvC;IACD;QACE,EAAE,EAAE,wBAAwB;QAC5B,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,sBAAsB;KAC/B;IACD;QACE,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,OAAO,CAAC;KACvB;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,gBAAgB;QACxB,MAAM,EAAE,4BAA4B;KACrC;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,sBAAsB;KAC/B;IACD;QACE,EAAE,EAAE,gBAAgB;QACpB,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,CAAC,OAAO,CAAC;KACvB;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,gCAAgC;KACzC;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,iBAAiB;QACzB,MAAM,EAAE,6BAA6B;KACtC;IACD;QACE,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,cAAc;QACtB,MAAM,EAAE,uBAAuB;KAChC;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,kBAAkB;QAC1B,MAAM,EAAE,mBAAmB;KAC5B;IACD;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,KAAK;QACX,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,aAAa;QACrB,MAAM,EAAE,cAAc;KACvB;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,oBAAoB;QAC5B,MAAM,EAAE,oBAAoB;KAC7B;IACD;QACE,EAAE,EAAE,mBAAmB;QACvB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,oBAAoB;KAC7B;IACD;QACE,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,aAAa;KACtB;IACD;QACE,EAAE,EAAE,SAAS;QACb,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,iBAAiB;KAC1B;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,oBAAoB;KAC7B;IACD;QACE,EAAE,EAAE,YAAY;QAChB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,kBAAkB;KAC3B;IACD;QACE,EAAE,EAAE,eAAe;QACnB,IAAI,EAAE,mBAAmB;QACzB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,kBAAkB;KAC3B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,UAAU;KACnB;IACD;QACE,EAAE,EAAE,WAAW;QACf,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,mBAAmB;KAC5B;IACD;QACE,EAAE,EAAE,UAAU;QACd,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,kBAAkB;KAC3B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,kBAAkB;KAC3B;IACD;QACE,EAAE,EAAE,aAAa;QACjB,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,cAAc;KACvB;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,oBAAoB;KAC7B;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,uBAAuB;QAC7B,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,oBAAoB;KAC7B;IACD;QACE,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,gBAAgB;KACzB;IACD;QACE,EAAE,EAAE,sBAAsB;QAC1B,IAAI,EAAE,yBAAyB;QAC/B,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,8BAA8B;KACvC;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,+BAA+B;KACxC;IACD;QACE,EAAE,EAAE,uBAAuB;QAC3B,IAAI,EAAE,6BAA6B;QACnC,WAAW,EAAE,CAAC,SAAS,CAAC;QACxB,MAAM,EAAE,+BAA+B;KACxC;CACF,CAAC;AAEF,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAa;IAC1C,WAAW;IACX,cAAc;IACd,gBAAgB;CACjB,CAAC;AAEF,8EAA8E;AAC9E,
|
|
1
|
+
{"version":3,"file":"provider-registry.js","sourceRoot":"","sources":["../src/provider-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
type RawModel = Record<string, unknown>;
|
|
2
|
+
export declare function inferUtilityModel(models: readonly RawModel[] | null | undefined): RawModel | null;
|
|
3
|
+
export declare function inferUtilityModelId(models: readonly RawModel[] | null | undefined): string | null;
|
|
4
|
+
export {};
|
|
5
|
+
//# sourceMappingURL=utility-model-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility-model-inference.d.ts","sourceRoot":"","sources":["../src/utility-model-inference.ts"],"names":[],"mappings":"AAAA,KAAK,QAAQ,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AA+BxC,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAcjG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAMjG"}
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
const MIN_UTILITY_CONTEXT_WINDOW = 32_000;
|
|
2
|
+
const SPECIAL_PURPOSE_MODEL_PATTERN = /(?:embedding|embed|rerank|moderation|whisper|tts|audio|speech|image-generation|vision|live|deep-research|safety|safeguard|guard|search|transcrib)/i;
|
|
3
|
+
const UTILITY_TERMS = [
|
|
4
|
+
{ pattern: /(?:^|[\s._/-])flash[\s._/-]?lite(?:$|[\s._/-])/, score: 110 },
|
|
5
|
+
{ pattern: /(?:^|[\s._/-])nano(?:$|[\s._/-])/, score: 100 },
|
|
6
|
+
{ pattern: /(?:^|[\s._/-])mini(?:$|[\s._/-])/, score: 95 },
|
|
7
|
+
{ pattern: /(?:^|[\s._/-])haiku(?:$|[\s._/-])/, score: 95 },
|
|
8
|
+
{ pattern: /(?:^|[\s._/-])small(?:$|[\s._/-])/, score: 85 },
|
|
9
|
+
{ pattern: /(?:^|[\s._/-])fast(?:$|[\s._/-])/, score: 80 },
|
|
10
|
+
{ pattern: /(?:^|[\s._/-])spark(?:$|[\s._/-])/, score: 80 },
|
|
11
|
+
{ pattern: /(?:^|[\s._/-])instant(?:$|[\s._/-])/, score: 75 },
|
|
12
|
+
{ pattern: /(?:^|[\s._/-])lite(?:$|[\s._/-])/, score: 70 },
|
|
13
|
+
{ pattern: /(?:^|[\s._/-])flash(?:$|[\s._/-])/, score: 65 },
|
|
14
|
+
{ pattern: /(?:^|[\s._/-])(?:7|8)b(?:$|[\s._/-])/, score: 65 },
|
|
15
|
+
{ pattern: /(?:^|[\s._/-])(?:12|20)b(?:$|[\s._/-])/, score: 45 },
|
|
16
|
+
{ pattern: /(?:^|[\s._/-])32b(?:$|[\s._/-])/, score: 25 },
|
|
17
|
+
];
|
|
18
|
+
export function inferUtilityModel(models) {
|
|
19
|
+
if (!Array.isArray(models))
|
|
20
|
+
return null;
|
|
21
|
+
const capable = models
|
|
22
|
+
.map(toUtilityCandidate)
|
|
23
|
+
.filter((candidate) => candidate !== null);
|
|
24
|
+
const utilityCandidates = capable.filter(candidate => candidate.utilityScore > 0);
|
|
25
|
+
if (utilityCandidates.length > 0) {
|
|
26
|
+
return [...utilityCandidates].sort(compareUtilityCandidates)[0].model;
|
|
27
|
+
}
|
|
28
|
+
if (capable.length === 0)
|
|
29
|
+
return null;
|
|
30
|
+
return [...capable].sort(compareFallbackCandidates)[0].model;
|
|
31
|
+
}
|
|
32
|
+
export function inferUtilityModelId(models) {
|
|
33
|
+
const model = inferUtilityModel(models);
|
|
34
|
+
const id = model?.['id'];
|
|
35
|
+
if (typeof id === 'string')
|
|
36
|
+
return id;
|
|
37
|
+
const name = model?.['name'];
|
|
38
|
+
return typeof name === 'string' ? name : null;
|
|
39
|
+
}
|
|
40
|
+
function toUtilityCandidate(model) {
|
|
41
|
+
const id = getString(model['id']) ?? getString(model['name']);
|
|
42
|
+
if (!id)
|
|
43
|
+
return null;
|
|
44
|
+
const name = getString(model['name']) ?? id;
|
|
45
|
+
const searchable = `${id} ${name}`.toLowerCase();
|
|
46
|
+
if (SPECIAL_PURPOSE_MODEL_PATTERN.test(searchable))
|
|
47
|
+
return null;
|
|
48
|
+
if (!supportsText(model))
|
|
49
|
+
return null;
|
|
50
|
+
const contextWindow = getNumber(model['contextWindow']) ?? 0;
|
|
51
|
+
if (contextWindow > 0 && contextWindow < MIN_UTILITY_CONTEXT_WINDOW)
|
|
52
|
+
return null;
|
|
53
|
+
return {
|
|
54
|
+
model,
|
|
55
|
+
id,
|
|
56
|
+
name,
|
|
57
|
+
utilityScore: inferUtilityScore(searchable),
|
|
58
|
+
recencyScore: inferRecencyScore(searchable),
|
|
59
|
+
costScore: inferCostScore(model),
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function compareUtilityCandidates(a, b) {
|
|
63
|
+
if (b.recencyScore !== a.recencyScore)
|
|
64
|
+
return b.recencyScore - a.recencyScore;
|
|
65
|
+
if (a.costScore !== b.costScore)
|
|
66
|
+
return a.costScore - b.costScore;
|
|
67
|
+
if (b.utilityScore !== a.utilityScore)
|
|
68
|
+
return b.utilityScore - a.utilityScore;
|
|
69
|
+
return a.id.localeCompare(b.id);
|
|
70
|
+
}
|
|
71
|
+
function compareFallbackCandidates(a, b) {
|
|
72
|
+
if (a.costScore !== b.costScore)
|
|
73
|
+
return a.costScore - b.costScore;
|
|
74
|
+
if (b.recencyScore !== a.recencyScore)
|
|
75
|
+
return b.recencyScore - a.recencyScore;
|
|
76
|
+
return a.id.localeCompare(b.id);
|
|
77
|
+
}
|
|
78
|
+
function supportsText(model) {
|
|
79
|
+
const input = model['input'];
|
|
80
|
+
if (!Array.isArray(input))
|
|
81
|
+
return true;
|
|
82
|
+
return input.includes('text');
|
|
83
|
+
}
|
|
84
|
+
function inferUtilityScore(searchable) {
|
|
85
|
+
let score = 0;
|
|
86
|
+
for (const term of UTILITY_TERMS) {
|
|
87
|
+
if (term.pattern.test(searchable)) {
|
|
88
|
+
score = Math.max(score, term.score);
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return score;
|
|
92
|
+
}
|
|
93
|
+
function inferRecencyScore(searchable) {
|
|
94
|
+
const dateScore = inferDateScore(searchable);
|
|
95
|
+
const versionScore = inferVersionScore(searchable);
|
|
96
|
+
return Math.max(dateScore, versionScore);
|
|
97
|
+
}
|
|
98
|
+
function inferDateScore(searchable) {
|
|
99
|
+
let score = 0;
|
|
100
|
+
for (const match of searchable.matchAll(/20\d{6}/g)) {
|
|
101
|
+
const value = Number(match[0]);
|
|
102
|
+
if (isValidDateScore(value)) {
|
|
103
|
+
score = Math.max(score, value);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
for (const match of searchable.matchAll(/(20\d{2})[-_/](0[1-9]|1[0-2])/g)) {
|
|
107
|
+
score = Math.max(score, Number(match[1]) * 10_000 + Number(match[2]) * 100);
|
|
108
|
+
}
|
|
109
|
+
for (const match of searchable.matchAll(/(0[1-9]|1[0-2])[-_/](20\d{2})/g)) {
|
|
110
|
+
score = Math.max(score, Number(match[2]) * 10_000 + Number(match[1]) * 100);
|
|
111
|
+
}
|
|
112
|
+
for (const match of searchable.matchAll(/(?:^|[^\d])(\d{4})(?:$|[^\da-z])/g)) {
|
|
113
|
+
const raw = match[1];
|
|
114
|
+
const year = Number(raw.slice(0, 2));
|
|
115
|
+
const month = Number(raw.slice(2, 4));
|
|
116
|
+
if (year >= 20 && year <= 40 && month >= 1 && month <= 12) {
|
|
117
|
+
score = Math.max(score, 20_000_000 + year * 10_000 + month * 100);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
return score;
|
|
121
|
+
}
|
|
122
|
+
function inferVersionScore(searchable) {
|
|
123
|
+
const scrubbed = searchable
|
|
124
|
+
.replace(/20\d{6}/g, ' ')
|
|
125
|
+
.replace(/(20\d{2})[-_/](0[1-9]|1[0-2])/g, ' ')
|
|
126
|
+
.replace(/(0[1-9]|1[0-2])[-_/](20\d{2})/g, ' ')
|
|
127
|
+
.replace(/(?:^|[^\d])(\d{4})(?:$|[^\da-z])/g, ' ')
|
|
128
|
+
.replace(/\b\d+(?:\.\d+)?b\b/g, ' ');
|
|
129
|
+
let score = 0;
|
|
130
|
+
for (const match of scrubbed.matchAll(/\d+(?:\.\d+)+/g)) {
|
|
131
|
+
score = Math.max(score, scoreVersionParts(match[0].split('.').map(Number)));
|
|
132
|
+
}
|
|
133
|
+
const tokens = scrubbed.split(/[^a-z0-9]+/).filter(Boolean);
|
|
134
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
135
|
+
if (!/^\d+$/.test(tokens[i]))
|
|
136
|
+
continue;
|
|
137
|
+
const parts = [];
|
|
138
|
+
for (let j = i; j < tokens.length && /^\d+$/.test(tokens[j]) && parts.length < 4; j++) {
|
|
139
|
+
parts.push(Number(tokens[j]));
|
|
140
|
+
}
|
|
141
|
+
if (parts.length >= 2) {
|
|
142
|
+
score = Math.max(score, scoreVersionParts(parts));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return score;
|
|
146
|
+
}
|
|
147
|
+
function scoreVersionParts(parts) {
|
|
148
|
+
const weights = [1_000_000, 10_000, 100, 1];
|
|
149
|
+
return parts.slice(0, weights.length).reduce((score, part, index) => (Number.isFinite(part) ? score + part * weights[index] : score), 0);
|
|
150
|
+
}
|
|
151
|
+
function inferCostScore(model) {
|
|
152
|
+
const cost = model['cost'] ?? model['pricing'];
|
|
153
|
+
if (!cost || typeof cost !== 'object')
|
|
154
|
+
return Number.MAX_SAFE_INTEGER;
|
|
155
|
+
const rawCost = cost;
|
|
156
|
+
const input = getNumber(rawCost['input']) ?? 0;
|
|
157
|
+
const output = getNumber(rawCost['output']) ?? 0;
|
|
158
|
+
if (input === 0 && output === 0)
|
|
159
|
+
return Number.MAX_SAFE_INTEGER - 1;
|
|
160
|
+
return input + output * 3;
|
|
161
|
+
}
|
|
162
|
+
function isValidDateScore(value) {
|
|
163
|
+
const year = Math.floor(value / 10_000);
|
|
164
|
+
const month = Math.floor((value % 10_000) / 100);
|
|
165
|
+
const day = value % 100;
|
|
166
|
+
return year >= 2020 && year <= 2040 && month >= 1 && month <= 12 && day >= 1 && day <= 31;
|
|
167
|
+
}
|
|
168
|
+
function getString(value) {
|
|
169
|
+
return typeof value === 'string' && value.length > 0 ? value : null;
|
|
170
|
+
}
|
|
171
|
+
function getNumber(value) {
|
|
172
|
+
return typeof value === 'number' && Number.isFinite(value) ? value : null;
|
|
173
|
+
}
|
|
174
|
+
//# sourceMappingURL=utility-model-inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utility-model-inference.js","sourceRoot":"","sources":["../src/utility-model-inference.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/cortex-agent.ts
CHANGED
|
@@ -26,7 +26,9 @@ import type { PiEventSource } from './event-bridge.js';
|
|
|
26
26
|
import { BudgetGuard } from './budget-guard.js';
|
|
27
27
|
import { classifyError } from './error-classifier.js';
|
|
28
28
|
import { parseWorkingTags } from './working-tags.js';
|
|
29
|
-
import {
|
|
29
|
+
import { getModel as getPiModel, getModels as getPiModels } from '@earendil-works/pi-ai';
|
|
30
|
+
import { UTILITY_MODEL_OVERRIDES } from './provider-registry.js';
|
|
31
|
+
import { inferUtilityModel } from './utility-model-inference.js';
|
|
30
32
|
import { McpClientManager } from './mcp-client.js';
|
|
31
33
|
import { CompactionManager, buildCompactionConfig } from './compaction/index.js';
|
|
32
34
|
import { isContextOverflow } from './compaction/failsafe.js';
|
|
@@ -2863,6 +2865,25 @@ export class CortexAgent {
|
|
|
2863
2865
|
* If 'default' or undefined, look up the provider default and preserve
|
|
2864
2866
|
* the raw provider-specific fields from the primary pi-ai model.
|
|
2865
2867
|
*/
|
|
2868
|
+
private inferDefaultUtilityModel(provider: string): PiModel | null {
|
|
2869
|
+
const overrideModelId = UTILITY_MODEL_OVERRIDES[provider];
|
|
2870
|
+
if (overrideModelId) {
|
|
2871
|
+
try {
|
|
2872
|
+
const overrideModel = (getPiModel as unknown as (provider: string, modelId: string) => unknown)(provider, overrideModelId);
|
|
2873
|
+
if (overrideModel) return overrideModel as PiModel;
|
|
2874
|
+
} catch {
|
|
2875
|
+
return null;
|
|
2876
|
+
}
|
|
2877
|
+
}
|
|
2878
|
+
|
|
2879
|
+
try {
|
|
2880
|
+
const models = (getPiModels as unknown as (provider: string) => PiModel[])(provider);
|
|
2881
|
+
return inferUtilityModel(models as unknown as Array<Record<string, unknown>>) as PiModel | null;
|
|
2882
|
+
} catch {
|
|
2883
|
+
return null;
|
|
2884
|
+
}
|
|
2885
|
+
}
|
|
2886
|
+
|
|
2866
2887
|
private resolveUtilityModels(
|
|
2867
2888
|
primaryModel: CortexModel,
|
|
2868
2889
|
primaryPiModel: PiModel,
|
|
@@ -2874,26 +2895,24 @@ export class CortexAgent {
|
|
|
2874
2895
|
const primaryProvider = primaryModel.provider;
|
|
2875
2896
|
|
|
2876
2897
|
if (!utilityModelConfig || utilityModelConfig === 'default') {
|
|
2877
|
-
const
|
|
2878
|
-
if (!
|
|
2898
|
+
const utilityPiModel = this.inferDefaultUtilityModel(primaryProvider);
|
|
2899
|
+
if (!utilityPiModel) {
|
|
2879
2900
|
return {
|
|
2880
2901
|
utilityModel: primaryModel,
|
|
2881
2902
|
utilityPiModel: primaryPiModel,
|
|
2882
2903
|
};
|
|
2883
2904
|
}
|
|
2884
2905
|
|
|
2885
|
-
const
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
id: defaultModelId,
|
|
2889
|
-
};
|
|
2906
|
+
const rawUtilityId = utilityPiModel['id'];
|
|
2907
|
+
const rawUtilityName = utilityPiModel['name'];
|
|
2908
|
+
const utilityModelId = typeof rawUtilityId === 'string' ? rawUtilityId : String(rawUtilityId ?? rawUtilityName);
|
|
2890
2909
|
|
|
2891
2910
|
return {
|
|
2892
2911
|
utilityPiModel,
|
|
2893
2912
|
utilityModel: wrapModel(
|
|
2894
2913
|
utilityPiModel,
|
|
2895
2914
|
primaryProvider,
|
|
2896
|
-
|
|
2915
|
+
utilityModelId,
|
|
2897
2916
|
utilityPiModel.contextWindow ?? primaryModel.contextWindow,
|
|
2898
2917
|
),
|
|
2899
2918
|
};
|
package/src/index.ts
CHANGED
|
@@ -260,11 +260,13 @@ export type {
|
|
|
260
260
|
// Model Wrapper (Phase 1D)
|
|
261
261
|
export { wrapModel, unwrapModel, isCortexModel } from './model-wrapper.js';
|
|
262
262
|
export type { CortexModel } from './model-wrapper.js';
|
|
263
|
+
export { inferUtilityModel, inferUtilityModelId } from './utility-model-inference.js';
|
|
263
264
|
|
|
264
265
|
// Provider Registry (Phase 1D)
|
|
265
266
|
export {
|
|
266
267
|
PROVIDER_REGISTRY,
|
|
267
268
|
OAUTH_PROVIDER_IDS,
|
|
269
|
+
UTILITY_MODEL_OVERRIDES,
|
|
268
270
|
UTILITY_MODEL_DEFAULTS,
|
|
269
271
|
PRIMARY_MODEL_DEFAULTS,
|
|
270
272
|
PROVIDER_CACHE_CONFIG,
|
|
@@ -279,8 +281,9 @@ export type {
|
|
|
279
281
|
} from './provider-registry.js';
|
|
280
282
|
|
|
281
283
|
// Provider Manager (Phase 1D)
|
|
282
|
-
export { ProviderManager } from './provider-manager.js';
|
|
284
|
+
export { ProviderManager, OAuthError } from './provider-manager.js';
|
|
283
285
|
export type {
|
|
286
|
+
OAuthErrorCode,
|
|
284
287
|
IProviderManager,
|
|
285
288
|
OAuthCallbacks,
|
|
286
289
|
OAuthCallbackPageContext,
|