@felan-ai/agent-core 0.4.2 → 0.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +28 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/model-tiers.d.ts +23 -0
- package/dist/model-tiers.d.ts.map +1 -0
- package/dist/model-tiers.js +316 -0
- package/dist/model-tiers.js.map +1 -0
- package/dist/thinking.d.ts +4 -0
- package/dist/thinking.d.ts.map +1 -0
- package/dist/thinking.js +12 -0
- package/dist/thinking.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -66,6 +66,34 @@ resource, skill, and tool symbols needed to compose Felan applications, so
|
|
|
66
66
|
consumers import those symbols from `@felan-ai/agent-core` without declaring
|
|
67
67
|
Pi packages directly.
|
|
68
68
|
|
|
69
|
+
Agent Core also exposes shared `high`, `medium`, and `low` model tiers for
|
|
70
|
+
extensions that need model-strength selection:
|
|
71
|
+
|
|
72
|
+
```ts
|
|
73
|
+
import { selectModelForTier } from '@felan-ai/agent-core';
|
|
74
|
+
|
|
75
|
+
const models = ctx.scopedModels.length > 0
|
|
76
|
+
? ctx.scopedModels.map(({ model }) => model)
|
|
77
|
+
: ctx.modelRegistry.getAvailable();
|
|
78
|
+
const selection = selectModelForTier('low', models, {
|
|
79
|
+
preferredModel: ctx.model,
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
Callers provide the models already allowed and authenticated by their host.
|
|
84
|
+
Selection prefers candidates from the current provider and model family, then
|
|
85
|
+
falls back across the supplied model scope. `getModelFamily` and
|
|
86
|
+
`getModelStrength` classify the host's live model list with version-independent
|
|
87
|
+
family and role names, so new Opus, Sonnet, Haiku, Sol, Terra, Luna, Pro, Flash,
|
|
88
|
+
Max, and similar releases do not require an exact-ID catalog update. Aggregate
|
|
89
|
+
providers including OpenCode, OpenCode Go, OpenRouter, and GitHub Copilot are
|
|
90
|
+
classified from each model's identity rather than treated as one family.
|
|
91
|
+
Unknown naming schemes default to `medium`, and hosts can pass a custom
|
|
92
|
+
`classifyModel` function to `selectModelForTier`. Model tiers do not imply a
|
|
93
|
+
thinking level. `FELAN_THINKING_LEVELS` separately defines `off`, `low`,
|
|
94
|
+
`medium`, `high`, `xhigh`, and `max`; `minimal` is outside the Felan-facing
|
|
95
|
+
scale. Agent Core does not load model-tier configuration or resolve credentials.
|
|
96
|
+
|
|
69
97
|
Agent Core owns the runtime-neutral Felan base system prompt. Every composed
|
|
70
98
|
session uses this prompt; consumers extend it with `appendSystemPrompt` and
|
|
71
99
|
cannot replace it. Inline extensions can contribute model-facing behavior
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
export type { AgentRuntime, AgentRuntimeFileReadOptions, AgentRuntimeFileWriteOptions, AgentRuntimeKind, AgentRuntimeProcess, AgentRuntimeProcesses, AgentRuntimeProcessReadOptions, AgentRuntimeProcessSnapshot, AgentRuntimeShellProcessOptions, AgentRuntimeStorage, AgentRuntimeStorageScope, AgentRuntimeTerminals, ExecOptions, ExecResult, } from './runtime.js';
|
|
2
2
|
export { AGENT_CORE_VERSION } from './version.js';
|
|
3
|
+
export { MODEL_TIERS, formatModelReference, getModelFamily, getModelStrength, isModelTier, parseModelReference, selectModelForTier, } from './model-tiers.js';
|
|
4
|
+
export type { ModelReference, ModelTier, ModelTierClassifier, ModelTierSelection, } from './model-tiers.js';
|
|
5
|
+
export { FELAN_THINKING_LEVELS, isFelanThinkingLevel } from './thinking.js';
|
|
6
|
+
export type { FelanThinkingLevel } from './thinking.js';
|
|
3
7
|
export { HostAgentRuntime } from './host-agent-runtime.js';
|
|
4
8
|
export type { HostAgentRuntimeOptions, HostShellOptions } from './host-agent-runtime.js';
|
|
5
9
|
export { bindFelanExtension, loadFelanExtensions, } from './extensions.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,2BAA2B,EAC3B,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,oCAAoC,GACrC,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,qCAAqC,EACrC,qCAAqC,EACrC,qCAAqC,EACrC,6BAA6B,EAC7B,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,+BAA+B,EAC/B,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,MAAM,GACP,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,GAAG,EACH,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,OAAO,EACP,UAAU,EACV,cAAc,EACd,eAAe,EACf,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,YAAY,EACZ,2BAA2B,EAC3B,4BAA4B,EAC5B,gBAAgB,EAChB,mBAAmB,EACnB,qBAAqB,EACrB,8BAA8B,EAC9B,2BAA2B,EAC3B,+BAA+B,EAC/B,mBAAmB,EACnB,wBAAwB,EACxB,qBAAqB,EACrB,WAAW,EACX,UAAU,GACX,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,cAAc,EACd,SAAS,EACT,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAC5E,YAAY,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,YAAY,EAAE,uBAAuB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAC9D,YAAY,EAAE,eAAe,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AACpF,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,wBAAwB,EACxB,cAAc,EACd,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AACrE,YAAY,EAAE,oCAAoC,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,oCAAoC,GACrC,MAAM,cAAc,CAAC;AACtB,YAAY,EACV,qCAAqC,EACrC,qCAAqC,EACrC,qCAAqC,EACrC,6BAA6B,EAC7B,cAAc,GACf,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EACV,iBAAiB,EACjB,yBAAyB,EACzB,6BAA6B,EAC7B,oBAAoB,EACpB,yBAAyB,EACzB,wBAAwB,EACxB,gCAAgC,EAChC,+BAA+B,EAC/B,SAAS,EACT,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACZ,cAAc,EACd,iBAAiB,EACjB,KAAK,EACL,cAAc,GACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,MAAM,GACP,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EACV,GAAG,EACH,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,OAAO,EACP,UAAU,EACV,cAAc,EACd,eAAe,EACf,KAAK,EACL,QAAQ,EACR,mBAAmB,EACnB,SAAS,GACV,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
export { AGENT_CORE_VERSION } from './version.js';
|
|
2
|
+
export { MODEL_TIERS, formatModelReference, getModelFamily, getModelStrength, isModelTier, parseModelReference, selectModelForTier, } from './model-tiers.js';
|
|
3
|
+
export { FELAN_THINKING_LEVELS, isFelanThinkingLevel } from './thinking.js';
|
|
2
4
|
export { HostAgentRuntime } from './host-agent-runtime.js';
|
|
3
5
|
export { bindFelanExtension, loadFelanExtensions, } from './extensions.js';
|
|
4
6
|
export { formatCapabilitiesSection } from './capabilities.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,oCAAoC,GACrC,MAAM,cAAc,CAAC;AAQtB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AAwBzC,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,MAAM,GACP,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EACL,WAAW,EACX,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,WAAW,EACX,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAO1B,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,yBAAyB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAM9D,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AACtD,OAAO,EACL,sBAAsB,EACtB,6BAA6B,EAC7B,oCAAoC,GACrC,MAAM,cAAc,CAAC;AAQtB,OAAO,EACL,YAAY,EACZ,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,UAAU,EACV,WAAW,EACX,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,iCAAiC,CAAC;AAwBzC,OAAO,EACL,uBAAuB,EACvB,UAAU,EACV,iCAAiC,EACjC,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,MAAM,GACP,MAAM,uBAAuB,CAAC;AAe/B,OAAO,EAAE,gBAAgB,EAAE,MAAM,qCAAqC,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Api, Model } from '@earendil-works/pi-ai';
|
|
2
|
+
export declare const MODEL_TIERS: readonly ["high", "medium", "low"];
|
|
3
|
+
export type ModelTier = typeof MODEL_TIERS[number];
|
|
4
|
+
export interface ModelReference {
|
|
5
|
+
readonly provider: string;
|
|
6
|
+
readonly id: string;
|
|
7
|
+
readonly name?: string;
|
|
8
|
+
}
|
|
9
|
+
export type ModelTierClassifier<TModel extends ModelReference = ModelReference> = (model: TModel) => ModelTier | undefined;
|
|
10
|
+
export interface ModelTierSelection<TModel extends ModelReference = Model<Api>> {
|
|
11
|
+
readonly model: TModel;
|
|
12
|
+
readonly tier: ModelTier;
|
|
13
|
+
}
|
|
14
|
+
export declare function isModelTier(value: string | undefined): value is ModelTier;
|
|
15
|
+
export declare function parseModelReference(value: string): ModelReference | undefined;
|
|
16
|
+
export declare function formatModelReference(model: ModelReference): string;
|
|
17
|
+
export declare function getModelFamily(model: ModelReference): string;
|
|
18
|
+
export declare function getModelStrength(model: ModelReference): ModelTier;
|
|
19
|
+
export declare function selectModelForTier<TModel extends ModelReference>(tier: ModelTier, models: readonly TModel[], options?: {
|
|
20
|
+
readonly preferredModel?: ModelReference;
|
|
21
|
+
readonly classifyModel?: ModelTierClassifier<TModel>;
|
|
22
|
+
}): ModelTierSelection<TModel> | undefined;
|
|
23
|
+
//# sourceMappingURL=model-tiers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-tiers.d.ts","sourceRoot":"","sources":["../src/model-tiers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AAExD,eAAO,MAAM,WAAW,oCAAqC,CAAC;AAC9D,MAAM,MAAM,SAAS,GAAG,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,mBAAmB,CAAC,MAAM,SAAS,cAAc,GAAG,cAAc,IAAI,CAChF,KAAK,EAAE,MAAM,KACV,SAAS,GAAG,SAAS,CAAC;AAE3B,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,cAAc,GAAG,KAAK,CAAC,GAAG,CAAC;IAC5E,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;CAC1B;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,SAAS,CAEzE;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAQ7E;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAElE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAK5D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,CAkBjE;AAED,wBAAgB,kBAAkB,CAAC,MAAM,SAAS,cAAc,EAC9D,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,SAAS,MAAM,EAAE,EACzB,OAAO,GAAE;IACP,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAC;IACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,mBAAmB,CAAC,MAAM,CAAC,CAAC;CACjD,GACL,kBAAkB,CAAC,MAAM,CAAC,GAAG,SAAS,CAkBxC"}
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
export const MODEL_TIERS = ['high', 'medium', 'low'];
|
|
2
|
+
export function isModelTier(value) {
|
|
3
|
+
return MODEL_TIERS.includes(value);
|
|
4
|
+
}
|
|
5
|
+
export function parseModelReference(value) {
|
|
6
|
+
const normalized = value.trim();
|
|
7
|
+
const separator = normalized.indexOf('/');
|
|
8
|
+
if (separator <= 0 || separator === normalized.length - 1)
|
|
9
|
+
return undefined;
|
|
10
|
+
const provider = normalized.slice(0, separator).trim();
|
|
11
|
+
const id = normalized.slice(separator + 1).trim();
|
|
12
|
+
return provider && id ? { provider, id } : undefined;
|
|
13
|
+
}
|
|
14
|
+
export function formatModelReference(model) {
|
|
15
|
+
return `${model.provider}/${model.id}`;
|
|
16
|
+
}
|
|
17
|
+
export function getModelFamily(model) {
|
|
18
|
+
const provider = model.provider.toLowerCase();
|
|
19
|
+
const text = `${normalizedModelId(model)} ${model.name?.toLowerCase() ?? ''}`;
|
|
20
|
+
if (AGGREGATE_PROVIDERS.has(provider))
|
|
21
|
+
return inferModelFamily(text) ?? provider;
|
|
22
|
+
return PROVIDER_FAMILIES.get(provider) ?? inferModelFamily(text) ?? provider;
|
|
23
|
+
}
|
|
24
|
+
export function getModelStrength(model) {
|
|
25
|
+
const family = getModelFamily(model);
|
|
26
|
+
const id = normalizedModelId(model);
|
|
27
|
+
if (family === 'openai')
|
|
28
|
+
return classifyOpenAi(id);
|
|
29
|
+
if (family === 'anthropic')
|
|
30
|
+
return classifyAnthropic(id);
|
|
31
|
+
if (family === 'google')
|
|
32
|
+
return classifyGoogle(id);
|
|
33
|
+
if (family === 'deepseek')
|
|
34
|
+
return classifyDeepSeek(id);
|
|
35
|
+
if (family === 'qwen')
|
|
36
|
+
return classifyQwen(id);
|
|
37
|
+
if (family === 'kimi')
|
|
38
|
+
return classifyKimi(id);
|
|
39
|
+
if (family === 'zai')
|
|
40
|
+
return classifyZai(id);
|
|
41
|
+
if (family === 'mistral')
|
|
42
|
+
return classifyMistral(id);
|
|
43
|
+
if (family === 'xai')
|
|
44
|
+
return classifyXai(id);
|
|
45
|
+
if (family === 'minimax')
|
|
46
|
+
return /(?:^|-)m3(?:-|$)/u.test(id) ? 'high' : 'medium';
|
|
47
|
+
if (family === 'xiaomi')
|
|
48
|
+
return roleTier(id, /(?:^|-)pro(?:-|$)/u, /(?:^|-)(?:flash|mini)(?:-|$)/u);
|
|
49
|
+
if (family === 'amazon')
|
|
50
|
+
return roleTier(id, /(?:^|-)premier(?:-|$)/u, /(?:^|-)(?:lite|micro)(?:-|$)/u);
|
|
51
|
+
if (family === 'nvidia')
|
|
52
|
+
return roleTier(id, /(?:^|-)ultra(?:-|$)/u, /(?:^|-)nano(?:-|$)/u);
|
|
53
|
+
return classifyGeneric(id);
|
|
54
|
+
}
|
|
55
|
+
export function selectModelForTier(tier, models, options = {}) {
|
|
56
|
+
const classify = options.classifyModel ?? getModelStrength;
|
|
57
|
+
const candidates = models
|
|
58
|
+
.map((model, index) => ({ model, index }))
|
|
59
|
+
.filter(({ model }) => classify(model) === tier)
|
|
60
|
+
.map(({ model, index }) => ({
|
|
61
|
+
model,
|
|
62
|
+
index,
|
|
63
|
+
rank: selectionRank(model, options.preferredModel),
|
|
64
|
+
priority: modelPriority(model, tier),
|
|
65
|
+
}))
|
|
66
|
+
.sort((left, right) => (left.rank - right.rank
|
|
67
|
+
|| right.priority - left.priority
|
|
68
|
+
|| left.index - right.index));
|
|
69
|
+
const selected = candidates[0]?.model;
|
|
70
|
+
return selected ? { model: selected, tier } : undefined;
|
|
71
|
+
}
|
|
72
|
+
function selectionRank(model, preferredModel) {
|
|
73
|
+
if (!preferredModel)
|
|
74
|
+
return 4;
|
|
75
|
+
if (formatModelReference(model).toLowerCase() === formatModelReference(preferredModel).toLowerCase())
|
|
76
|
+
return 0;
|
|
77
|
+
const sameProvider = model.provider.toLowerCase() === preferredModel.provider.toLowerCase();
|
|
78
|
+
const sameFamily = getModelFamily(model) === getModelFamily(preferredModel);
|
|
79
|
+
if (sameProvider && sameFamily)
|
|
80
|
+
return 1;
|
|
81
|
+
if (sameProvider)
|
|
82
|
+
return 2;
|
|
83
|
+
if (sameFamily)
|
|
84
|
+
return 3;
|
|
85
|
+
return 4;
|
|
86
|
+
}
|
|
87
|
+
function modelPriority(model, tier) {
|
|
88
|
+
const family = getModelFamily(model);
|
|
89
|
+
const id = normalizedModelId(model);
|
|
90
|
+
let role = 0;
|
|
91
|
+
if (family === 'openai') {
|
|
92
|
+
if (tier === 'high')
|
|
93
|
+
role = tokenPriority(id, ['sol', 'pro']);
|
|
94
|
+
if (tier === 'medium')
|
|
95
|
+
role = tokenPriority(id, ['terra']);
|
|
96
|
+
if (tier === 'low')
|
|
97
|
+
role = tokenPriority(id, ['luna', 'nano', 'mini', 'spark']);
|
|
98
|
+
}
|
|
99
|
+
else if (family === 'anthropic') {
|
|
100
|
+
if (tier === 'high')
|
|
101
|
+
role = tokenPriority(id, ['fable', 'opus']);
|
|
102
|
+
}
|
|
103
|
+
else if (family === 'google') {
|
|
104
|
+
if (tier === 'high')
|
|
105
|
+
role = tokenPriority(id, ['pro']);
|
|
106
|
+
if (tier === 'medium')
|
|
107
|
+
role = tokenPriority(id, ['flash']);
|
|
108
|
+
if (tier === 'low')
|
|
109
|
+
role = tokenPriority(id, ['flash-lite']);
|
|
110
|
+
}
|
|
111
|
+
else if (family === 'deepseek' && tier === 'high') {
|
|
112
|
+
role = tokenPriority(id, ['pro', 'r1', 'reasoner']);
|
|
113
|
+
}
|
|
114
|
+
else if (family === 'qwen') {
|
|
115
|
+
if (tier === 'high')
|
|
116
|
+
role = tokenPriority(id, ['max']);
|
|
117
|
+
if (tier === 'low')
|
|
118
|
+
role = tokenPriority(id, ['flash', 'mini']);
|
|
119
|
+
}
|
|
120
|
+
else if (family === 'kimi' && tier === 'high') {
|
|
121
|
+
role = tokenPriority(id, ['k3', 'thinking']);
|
|
122
|
+
}
|
|
123
|
+
else if (family === 'mistral') {
|
|
124
|
+
if (tier === 'high')
|
|
125
|
+
role = tokenPriority(id, ['large']);
|
|
126
|
+
if (tier === 'low')
|
|
127
|
+
role = tokenPriority(id, ['small', 'ministral', 'nemo']);
|
|
128
|
+
}
|
|
129
|
+
return role * 1_000_000 + modelVersionScore(id);
|
|
130
|
+
}
|
|
131
|
+
function tokenPriority(id, tokens) {
|
|
132
|
+
const index = tokens.findIndex((token) => new RegExp(`(?:^|-)${token}(?:-|$)`, 'u').test(id));
|
|
133
|
+
return index === -1 ? 0 : tokens.length - index;
|
|
134
|
+
}
|
|
135
|
+
function modelVersionScore(id) {
|
|
136
|
+
const values = [...id.matchAll(/\d+(?:\.\d+)?/gu)].map((match) => Number(match[0]));
|
|
137
|
+
if (values.length === 0)
|
|
138
|
+
return 0;
|
|
139
|
+
const primary = values[0];
|
|
140
|
+
const secondary = Number.isInteger(primary) && (values[1] ?? 100) < 100 ? values[1] : 0;
|
|
141
|
+
return primary * 1_000 + secondary;
|
|
142
|
+
}
|
|
143
|
+
function classifyOpenAi(id) {
|
|
144
|
+
if (/(?:^|-)(?:luna|nano|mini|spark)(?:-|$)/u.test(id))
|
|
145
|
+
return 'low';
|
|
146
|
+
if (/(?:^|-)(?:sol|pro)(?:-|$)/u.test(id) || /(?:^|-)o[13](?:-|$)/u.test(id))
|
|
147
|
+
return 'high';
|
|
148
|
+
if (/gpt-5\.5(?:-|$)/u.test(id))
|
|
149
|
+
return 'high';
|
|
150
|
+
return classifyGeneric(id);
|
|
151
|
+
}
|
|
152
|
+
function classifyAnthropic(id) {
|
|
153
|
+
if (/(?:^|-)(?:fable|opus)(?:-|$)/u.test(id))
|
|
154
|
+
return 'high';
|
|
155
|
+
if (/(?:^|-)haiku(?:-|$)/u.test(id))
|
|
156
|
+
return 'low';
|
|
157
|
+
return 'medium';
|
|
158
|
+
}
|
|
159
|
+
function classifyGoogle(id) {
|
|
160
|
+
if (/flash[-_.]?lite/u.test(id))
|
|
161
|
+
return 'low';
|
|
162
|
+
if (/(?:^|-)(?:pro|max)(?:-|$)/u.test(id) || id.includes('deep-research'))
|
|
163
|
+
return 'high';
|
|
164
|
+
if (/(?:^|-)flash(?:-|$)/u.test(id))
|
|
165
|
+
return 'medium';
|
|
166
|
+
return classifyGeneric(id);
|
|
167
|
+
}
|
|
168
|
+
function classifyDeepSeek(id) {
|
|
169
|
+
if (/(?:^|-)flash(?:-|$)/u.test(id))
|
|
170
|
+
return 'low';
|
|
171
|
+
if (/(?:^|-)(?:pro|r1|reasoner)(?:-|$)/u.test(id))
|
|
172
|
+
return 'high';
|
|
173
|
+
return 'medium';
|
|
174
|
+
}
|
|
175
|
+
function classifyQwen(id) {
|
|
176
|
+
if (/(?:^|-)(?:flash|mini)(?:-|$)/u.test(id))
|
|
177
|
+
return 'low';
|
|
178
|
+
if (/(?:^|-)max(?:-|$)/u.test(id))
|
|
179
|
+
return 'high';
|
|
180
|
+
return parameterTier(id) ?? 'medium';
|
|
181
|
+
}
|
|
182
|
+
function classifyKimi(id) {
|
|
183
|
+
if (/(?:^|-)k3(?:-|$)/u.test(id) || /(?:^|-)thinking(?:-|$)/u.test(id))
|
|
184
|
+
return 'high';
|
|
185
|
+
if (/kimi-k2(?:-|$)/u.test(id) && !/kimi-k2\.[5-9]/u.test(id))
|
|
186
|
+
return 'low';
|
|
187
|
+
return 'medium';
|
|
188
|
+
}
|
|
189
|
+
function classifyZai(id) {
|
|
190
|
+
if (/(?:^|-)(?:flash|air)(?:-|$)/u.test(id))
|
|
191
|
+
return 'low';
|
|
192
|
+
if (/glm-5(?:\.[0-9]+)?(?:-|$)/u.test(id) && !/(?:^|-)turbo(?:-|$)/u.test(id))
|
|
193
|
+
return 'high';
|
|
194
|
+
return 'medium';
|
|
195
|
+
}
|
|
196
|
+
function classifyMistral(id) {
|
|
197
|
+
if (/(?:^|-)(?:small|ministral|nemo)(?:-|$)/u.test(id))
|
|
198
|
+
return 'low';
|
|
199
|
+
if (/(?:^|-)large(?:-|$)/u.test(id))
|
|
200
|
+
return 'high';
|
|
201
|
+
return 'medium';
|
|
202
|
+
}
|
|
203
|
+
function classifyXai(id) {
|
|
204
|
+
if (/(?:^|-)(?:fast|non-reasoning)(?:-|$)/u.test(id))
|
|
205
|
+
return 'low';
|
|
206
|
+
if (/(?:^|-)grok(?:-|$)/u.test(id) && !id.includes('build'))
|
|
207
|
+
return 'high';
|
|
208
|
+
return 'medium';
|
|
209
|
+
}
|
|
210
|
+
function classifyGeneric(id) {
|
|
211
|
+
if (/(?:^|-)(?:flash-lite|nano|mini|small|lite|micro|air|scout|edge|spark)(?:-|$)/u.test(id)) {
|
|
212
|
+
return 'low';
|
|
213
|
+
}
|
|
214
|
+
if (/(?:^|-)(?:fable|opus|sol|ultra|premier|max|pro|large|reasoner|thinking)(?:-|$)/u.test(id)) {
|
|
215
|
+
return 'high';
|
|
216
|
+
}
|
|
217
|
+
return parameterTier(id) ?? 'medium';
|
|
218
|
+
}
|
|
219
|
+
function roleTier(id, high, low) {
|
|
220
|
+
if (low.test(id))
|
|
221
|
+
return 'low';
|
|
222
|
+
if (high.test(id))
|
|
223
|
+
return 'high';
|
|
224
|
+
return classifyGeneric(id);
|
|
225
|
+
}
|
|
226
|
+
function parameterTier(id) {
|
|
227
|
+
const sizes = [...id.matchAll(/(?:^|-)(\d+(?:\.\d+)?)b(?:-|$)/gu)]
|
|
228
|
+
.map((match) => Number(match[1]))
|
|
229
|
+
.filter(Number.isFinite);
|
|
230
|
+
if (sizes.length === 0)
|
|
231
|
+
return undefined;
|
|
232
|
+
const largest = Math.max(...sizes);
|
|
233
|
+
if (largest >= 100)
|
|
234
|
+
return 'high';
|
|
235
|
+
if (largest <= 32)
|
|
236
|
+
return 'low';
|
|
237
|
+
return 'medium';
|
|
238
|
+
}
|
|
239
|
+
function normalizedModelId(model) {
|
|
240
|
+
return model.id.toLowerCase().replace(/^~/u, '');
|
|
241
|
+
}
|
|
242
|
+
function inferModelFamily(text) {
|
|
243
|
+
if (text.includes('claude') || text.includes('anthropic'))
|
|
244
|
+
return 'anthropic';
|
|
245
|
+
if (text.includes('gpt') || /(?:^|[/_.-])o[134](?:[/_.-]|$)/u.test(text))
|
|
246
|
+
return 'openai';
|
|
247
|
+
if (text.includes('gemini') || text.includes('gemma'))
|
|
248
|
+
return 'google';
|
|
249
|
+
if (text.includes('deepseek'))
|
|
250
|
+
return 'deepseek';
|
|
251
|
+
if (text.includes('qwen'))
|
|
252
|
+
return 'qwen';
|
|
253
|
+
if (text.includes('kimi') || text.includes('moonshot'))
|
|
254
|
+
return 'kimi';
|
|
255
|
+
if (text.includes('glm') || text.includes('z-ai'))
|
|
256
|
+
return 'zai';
|
|
257
|
+
if (/mistral|mixtral|codestral|devstral|magistral|ministral/u.test(text))
|
|
258
|
+
return 'mistral';
|
|
259
|
+
if (text.includes('grok') || text.includes('x-ai'))
|
|
260
|
+
return 'xai';
|
|
261
|
+
if (text.includes('minimax'))
|
|
262
|
+
return 'minimax';
|
|
263
|
+
if (text.includes('mimo') || text.includes('xiaomi'))
|
|
264
|
+
return 'xiaomi';
|
|
265
|
+
if (text.includes('llama') || text.includes('meta-llama'))
|
|
266
|
+
return 'meta';
|
|
267
|
+
if (text.includes('nova') || text.includes('amazon'))
|
|
268
|
+
return 'amazon';
|
|
269
|
+
if (text.includes('nemotron') || text.includes('nvidia'))
|
|
270
|
+
return 'nvidia';
|
|
271
|
+
if (text.includes('command-r') || text.includes('cohere'))
|
|
272
|
+
return 'cohere';
|
|
273
|
+
return undefined;
|
|
274
|
+
}
|
|
275
|
+
const PROVIDER_FAMILIES = new Map([
|
|
276
|
+
['anthropic', 'anthropic'],
|
|
277
|
+
['azure-openai-responses', 'openai'],
|
|
278
|
+
['deepseek', 'deepseek'],
|
|
279
|
+
['google', 'google'],
|
|
280
|
+
['google-vertex', 'google'],
|
|
281
|
+
['kimi-coding', 'kimi'],
|
|
282
|
+
['minimax', 'minimax'],
|
|
283
|
+
['minimax-cn', 'minimax'],
|
|
284
|
+
['mistral', 'mistral'],
|
|
285
|
+
['moonshotai', 'kimi'],
|
|
286
|
+
['moonshotai-cn', 'kimi'],
|
|
287
|
+
['openai', 'openai'],
|
|
288
|
+
['openai-codex', 'openai'],
|
|
289
|
+
['xai', 'xai'],
|
|
290
|
+
['xiaomi', 'xiaomi'],
|
|
291
|
+
['zai', 'zai'],
|
|
292
|
+
['zai-coding-cn', 'zai'],
|
|
293
|
+
]);
|
|
294
|
+
const AGGREGATE_PROVIDERS = new Set([
|
|
295
|
+
'amazon-bedrock',
|
|
296
|
+
'baseten',
|
|
297
|
+
'cerebras',
|
|
298
|
+
'cloudflare-ai-gateway',
|
|
299
|
+
'cloudflare-workers-ai',
|
|
300
|
+
'fireworks',
|
|
301
|
+
'github-copilot',
|
|
302
|
+
'groq',
|
|
303
|
+
'huggingface',
|
|
304
|
+
'nvidia',
|
|
305
|
+
'opencode',
|
|
306
|
+
'opencode-go',
|
|
307
|
+
'openrouter',
|
|
308
|
+
'qwen-token-plan',
|
|
309
|
+
'qwen-token-plan-cn',
|
|
310
|
+
'together',
|
|
311
|
+
'vercel-ai-gateway',
|
|
312
|
+
'xiaomi-token-plan-ams',
|
|
313
|
+
'xiaomi-token-plan-cn',
|
|
314
|
+
'xiaomi-token-plan-sgp',
|
|
315
|
+
]);
|
|
316
|
+
//# sourceMappingURL=model-tiers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"model-tiers.js","sourceRoot":"","sources":["../src/model-tiers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const FELAN_THINKING_LEVELS: readonly ["off", "low", "medium", "high", "xhigh", "max"];
|
|
2
|
+
export type FelanThinkingLevel = typeof FELAN_THINKING_LEVELS[number];
|
|
3
|
+
export declare function isFelanThinkingLevel(value: string | undefined): value is FelanThinkingLevel;
|
|
4
|
+
//# sourceMappingURL=thinking.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking.d.ts","sourceRoot":"","sources":["../src/thinking.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,2DAOxB,CAAC;AAEX,MAAM,MAAM,kBAAkB,GAAG,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC;AAEtE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,kBAAkB,CAE3F"}
|
package/dist/thinking.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"thinking.js","sourceRoot":"","sources":["../src/thinking.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACnC,KAAK;IACL,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;CACG,CAAC;AAIX,MAAM,UAAU,oBAAoB,CAAC,KAAyB;IAC5D,OAAO,qBAAqB,CAAC,QAAQ,CAAC,KAA2B,CAAC,CAAC;AACrE,CAAC"}
|