@gaunt-sloth/core 2.0.0-alpha.10 → 2.0.0-alpha.11
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/config/types.d.ts +1 -1
- package/dist/config/types.js +1 -0
- package/dist/config/types.js.map +1 -1
- package/dist/constants.d.ts +8 -0
- package/dist/constants.js +8 -0
- package/dist/constants.js.map +1 -1
- package/dist/core/GthLangChainAgent.js +25 -1
- package/dist/core/GthLangChainAgent.js.map +1 -1
- package/dist/core/types.d.ts +20 -0
- package/dist/history/historyFormat.d.ts +12 -3
- package/dist/history/historyFormat.js +50 -8
- package/dist/history/historyFormat.js.map +1 -1
- package/dist/history/historyStore.d.ts +77 -0
- package/dist/history/historyStore.js +159 -5
- package/dist/history/historyStore.js.map +1 -1
- package/dist/history/recordSession.d.ts +10 -1
- package/dist/history/recordSession.js +27 -0
- package/dist/history/recordSession.js.map +1 -1
- package/dist/providers/huggingface.d.ts +25 -0
- package/dist/providers/huggingface.js +69 -0
- package/dist/providers/huggingface.js.map +1 -0
- package/dist/providers/modelCatalog.d.ts +109 -0
- package/dist/providers/modelCatalog.js +245 -0
- package/dist/providers/modelCatalog.js.map +1 -0
- package/dist/providers/modelDiscovery.js +13 -0
- package/dist/providers/modelDiscovery.js.map +1 -1
- package/dist/utils/consoleUtils.d.ts +13 -0
- package/dist/utils/consoleUtils.js +31 -0
- package/dist/utils/consoleUtils.js.map +1 -1
- package/dist/utils/systemPromptNotes.d.ts +89 -0
- package/dist/utils/systemPromptNotes.js +184 -0
- package/dist/utils/systemPromptNotes.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"historyStore.js","sourceRoot":"","sources":["../../src/history/historyStore.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"historyStore.js","sourceRoot":"","sources":["../../src/history/historyStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* - even with history **on**, a DB problem (locked/corrupt/read-only fs) can never abort or alter
|
|
10
10
|
* the run: the worst case is that one session isn't recorded.
|
|
11
11
|
*/
|
|
12
|
-
import type { SessionRecord } from '#src/history/historyStore.js';
|
|
12
|
+
import type { ConversationMeta, SessionRecord } from '#src/history/historyStore.js';
|
|
13
13
|
/** The subset of the resolved config the recorder reads (structural, to avoid a hard type dep). */
|
|
14
14
|
export interface HistoryConfigView {
|
|
15
15
|
history?: {
|
|
@@ -26,3 +26,12 @@ export interface HistoryConfigView {
|
|
|
26
26
|
* (or after a run) without a try/catch of their own.
|
|
27
27
|
*/
|
|
28
28
|
export declare function recordSessionSafe(config: HistoryConfigView, record: SessionRecord): number | null;
|
|
29
|
+
/**
|
|
30
|
+
* GS2-19 — open one conversation for an interactive session IFF `history.enabled`, returning its id
|
|
31
|
+
* (or `null` when disabled / anything failed). The session passes that id on every
|
|
32
|
+
* {@link recordSessionSafe} so all its turns group under one conversation. Same guarantees as the
|
|
33
|
+
* recorder: a no-op by default, fully fail-soft, never throws. When it returns `null` under an
|
|
34
|
+
* enabled store (a rare open failure), turns simply fall back to per-turn 1-turn conversations —
|
|
35
|
+
* grouping is lost but nothing is dropped or crashed.
|
|
36
|
+
*/
|
|
37
|
+
export declare function openConversationSafe(config: HistoryConfigView, meta: ConversationMeta): number | null;
|
|
@@ -26,4 +26,31 @@ export function recordSessionSafe(config, record) {
|
|
|
26
26
|
return null;
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* GS2-19 — open one conversation for an interactive session IFF `history.enabled`, returning its id
|
|
31
|
+
* (or `null` when disabled / anything failed). The session passes that id on every
|
|
32
|
+
* {@link recordSessionSafe} so all its turns group under one conversation. Same guarantees as the
|
|
33
|
+
* recorder: a no-op by default, fully fail-soft, never throws. When it returns `null` under an
|
|
34
|
+
* enabled store (a rare open failure), turns simply fall back to per-turn 1-turn conversations —
|
|
35
|
+
* grouping is lost but nothing is dropped or crashed.
|
|
36
|
+
*/
|
|
37
|
+
export function openConversationSafe(config, meta) {
|
|
38
|
+
try {
|
|
39
|
+
if (!config?.history?.enabled)
|
|
40
|
+
return null;
|
|
41
|
+
const dbPath = resolveHistoryDbPath(config.history.dbPath, /* ensureDir */ true);
|
|
42
|
+
const store = openHistoryStore(dbPath, { create: true });
|
|
43
|
+
if (!store)
|
|
44
|
+
return null;
|
|
45
|
+
try {
|
|
46
|
+
return store.openConversation(meta);
|
|
47
|
+
}
|
|
48
|
+
finally {
|
|
49
|
+
store.close();
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
29
56
|
//# sourceMappingURL=recordSession.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recordSession.js","sourceRoot":"","sources":["../../src/history/recordSession.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAOtF;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB,EAAE,MAAqB;IAChF,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"recordSession.js","sourceRoot":"","sources":["../../src/history/recordSession.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAOtF;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAyB,EAAE,MAAqB;IAChF,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9B,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAyB,EACzB,IAAsB;IAEtB,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO;YAAE,OAAO,IAAI,CAAC;QAC3C,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,eAAe,CAAC,IAAI,CAAC,CAAC;QACjF,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK;YAAE,OAAO,IAAI,CAAC;QACxB,IAAI,CAAC;YACH,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { BaseChatModel, type BaseChatModelParams } from '@langchain/core/language_models/chat_models';
|
|
2
|
+
import { OpenAIChatInput } from '@langchain/openai';
|
|
3
|
+
import { ChatOpenAIFields } from '@langchain/openai';
|
|
4
|
+
/**
|
|
5
|
+
* Hugging Face Inference Providers — OpenAI-compatible router.
|
|
6
|
+
*
|
|
7
|
+
* HF exposes a single OpenAI-compatible Chat Completions endpoint at
|
|
8
|
+
* `https://router.huggingface.co/v1` that fans requests out to the configured
|
|
9
|
+
* inference provider (Cerebras, Groq, Together, SambaNova, hf-inference, …). It
|
|
10
|
+
* supports tool/function calling, streaming and structured outputs, so we reuse
|
|
11
|
+
* LangChain's `ChatOpenAI` exactly like the OpenRouter provider — no dedicated
|
|
12
|
+
* `@langchain/huggingface` package is needed (the JS `@langchain/community`
|
|
13
|
+
* `HuggingFaceInference` is a text-completion LLM with no `bindTools`, so it is
|
|
14
|
+
* unusable for the agent loop).
|
|
15
|
+
*
|
|
16
|
+
* Auth uses a Hugging Face user access token with the "Inference Providers"
|
|
17
|
+
* permission, read from `HF_TOKEN` (canonical) or the `HUGGINGFACEHUB_API_TOKEN`
|
|
18
|
+
* / `HF_API_KEY` aliases.
|
|
19
|
+
*
|
|
20
|
+
* Model ids are Hub repo ids, e.g. `openai/gpt-oss-120b`. You may append a
|
|
21
|
+
* provider/policy suffix understood by the router (`:groq`, `:cheapest`,
|
|
22
|
+
* `:fastest`); it is part of the model id and passes straight through.
|
|
23
|
+
*/
|
|
24
|
+
export declare function processJsonConfig(llmConfig: OpenAIChatInput & ChatOpenAIFields & BaseChatModelParams): Promise<BaseChatModel>;
|
|
25
|
+
export declare function init(configFileName: string, force?: boolean, model?: string): void;
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { displayWarning } from '#src/utils/consoleUtils.js';
|
|
2
|
+
import { env } from '#src/utils/systemUtils.js';
|
|
3
|
+
import { writeConfigFileWithMessages } from '#src/utils/fileUtils.js';
|
|
4
|
+
import { buildInitConfigContent, getCuratedFallbackModel } from '#src/providers/modelDiscovery.js';
|
|
5
|
+
/**
|
|
6
|
+
* Hugging Face Inference Providers — OpenAI-compatible router.
|
|
7
|
+
*
|
|
8
|
+
* HF exposes a single OpenAI-compatible Chat Completions endpoint at
|
|
9
|
+
* `https://router.huggingface.co/v1` that fans requests out to the configured
|
|
10
|
+
* inference provider (Cerebras, Groq, Together, SambaNova, hf-inference, …). It
|
|
11
|
+
* supports tool/function calling, streaming and structured outputs, so we reuse
|
|
12
|
+
* LangChain's `ChatOpenAI` exactly like the OpenRouter provider — no dedicated
|
|
13
|
+
* `@langchain/huggingface` package is needed (the JS `@langchain/community`
|
|
14
|
+
* `HuggingFaceInference` is a text-completion LLM with no `bindTools`, so it is
|
|
15
|
+
* unusable for the agent loop).
|
|
16
|
+
*
|
|
17
|
+
* Auth uses a Hugging Face user access token with the "Inference Providers"
|
|
18
|
+
* permission, read from `HF_TOKEN` (canonical) or the `HUGGINGFACEHUB_API_TOKEN`
|
|
19
|
+
* / `HF_API_KEY` aliases.
|
|
20
|
+
*
|
|
21
|
+
* Model ids are Hub repo ids, e.g. `openai/gpt-oss-120b`. You may append a
|
|
22
|
+
* provider/policy suffix understood by the router (`:groq`, `:cheapest`,
|
|
23
|
+
* `:fastest`); it is part of the model id and passes straight through.
|
|
24
|
+
*/
|
|
25
|
+
// Function to process JSON config and create Hugging Face LLM instance
|
|
26
|
+
// noinspection JSUnusedGlobalSymbols
|
|
27
|
+
export async function processJsonConfig(llmConfig) {
|
|
28
|
+
const { ChatOpenAI } = await import('@langchain/openai');
|
|
29
|
+
// Use environment variable if available, otherwise use the config value
|
|
30
|
+
const huggingFaceToken = getApiKey(llmConfig);
|
|
31
|
+
if (!huggingFaceToken) {
|
|
32
|
+
throw new Error('You need to define HF_TOKEN environment variable (a Hugging Face access token ' +
|
|
33
|
+
'with the "Inference Providers" permission), or set apiKey in your config file.');
|
|
34
|
+
}
|
|
35
|
+
const configFields = {
|
|
36
|
+
...llmConfig,
|
|
37
|
+
apiKey: huggingFaceToken,
|
|
38
|
+
model: llmConfig.model || getCuratedFallbackModel('huggingface'),
|
|
39
|
+
configuration: {
|
|
40
|
+
baseURL: 'https://router.huggingface.co/v1',
|
|
41
|
+
...(llmConfig.configuration || {}),
|
|
42
|
+
},
|
|
43
|
+
};
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
45
|
+
delete configFields.type;
|
|
46
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
47
|
+
delete configFields.apiKeyEnvironmentVariable;
|
|
48
|
+
return new ChatOpenAI(configFields);
|
|
49
|
+
}
|
|
50
|
+
function getApiKey(llmConfig) {
|
|
51
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
52
|
+
const conf = llmConfig;
|
|
53
|
+
if (conf.apiKeyEnvironmentVariable && env[conf.apiKeyEnvironmentVariable]) {
|
|
54
|
+
return env[conf.apiKeyEnvironmentVariable];
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
return llmConfig.apiKey || env.HF_TOKEN || env.HUGGINGFACEHUB_API_TOKEN || env.HF_API_KEY;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
export function init(configFileName, force = false, model) {
|
|
61
|
+
// Determine which content to use based on file extension
|
|
62
|
+
if (!configFileName.endsWith('.json')) {
|
|
63
|
+
throw new Error('Only JSON config is supported.');
|
|
64
|
+
}
|
|
65
|
+
writeConfigFileWithMessages(configFileName, buildInitConfigContent('huggingface', model), force);
|
|
66
|
+
displayWarning(`You need to edit your ${configFileName} to configure model, ` +
|
|
67
|
+
'or define HF_TOKEN environment variable.');
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=huggingface.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"huggingface.js","sourceRoot":"","sources":["../../src/providers/huggingface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,2BAA2B,CAAC;AAQhD,OAAO,EAAE,2BAA2B,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,kCAAkC,CAAC;AAEnG;;;;;;;;;;;;;;;;;;;GAmBG;AACH,uEAAuE;AACvE,qCAAqC;AACrC,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,SAAmE;IAEnE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IACzD,wEAAwE;IACxE,MAAM,gBAAgB,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;IAC9C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CACb,gFAAgF;YAC9E,gFAAgF,CACnF,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG;QACnB,GAAG,SAAS;QACZ,MAAM,EAAE,gBAAgB;QACxB,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,uBAAuB,CAAC,aAAa,CAAC;QAChE,aAAa,EAAE;YACb,OAAO,EAAE,kCAAkC;YAC3C,GAAG,CAAC,SAAS,CAAC,aAAa,IAAI,EAAE,CAAC;SACnC;KACF,CAAC;IACF,8DAA8D;IAC9D,OAAQ,YAAoB,CAAC,IAAI,CAAC;IAClC,8DAA8D;IAC9D,OAAQ,YAAoB,CAAC,yBAAyB,CAAC;IACvD,OAAO,IAAI,UAAU,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,SAAS,CAAC,SAAmE;IACpF,8DAA8D;IAC9D,MAAM,IAAI,GAAG,SAA0C,CAAC;IACxD,IAAI,IAAI,CAAC,yBAAyB,IAAI,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC;QAC1E,OAAO,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,OAAO,SAAS,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,wBAAwB,IAAI,GAAG,CAAC,UAAU,CAAC;IAC5F,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,cAAsB,EAAE,KAAK,GAAG,KAAK,EAAE,KAAc;IACxE,yDAAyD;IACzD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IAED,2BAA2B,CAAC,cAAc,EAAE,sBAAsB,CAAC,aAAa,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;IACjG,cAAc,CACZ,yBAAyB,cAAc,uBAAuB;QAC5D,0CAA0C,CAC7C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import type { ProviderId } from '#src/providers/modelDiscovery.js';
|
|
2
|
+
/** The single models.dev dataset endpoint (whole catalog; sliced per-provider on our side). */
|
|
3
|
+
export declare const MODELS_DEV_URL = "https://models.dev/api.json";
|
|
4
|
+
/**
|
|
5
|
+
* Cache freshness window. Pricing/limit metadata is near-static, so a day between refreshes is
|
|
6
|
+
* plenty; `gth models --refresh` is the manual escape hatch when a newer number is needed sooner.
|
|
7
|
+
*/
|
|
8
|
+
export declare const CATALOG_TTL_MS: number;
|
|
9
|
+
/**
|
|
10
|
+
* Catalog fetch timeout. Deliberately generous (and separate from `/v1/models` discovery's 2 s
|
|
11
|
+
* interactive-path probe): `api.json` is a few MB and this fetch runs off the explicit `gth models`
|
|
12
|
+
* cache-fill path, not a first-run keystroke, so latency headroom matters more than snappiness.
|
|
13
|
+
*/
|
|
14
|
+
export declare const CATALOG_TIMEOUT_MS = 10000;
|
|
15
|
+
/** Shown next to any enriched price/metadata. Costs from models.dev are US$ per 1M tokens. */
|
|
16
|
+
export declare const CATALOG_ATTRIBUTION = "* model prices provided by models.dev";
|
|
17
|
+
/**
|
|
18
|
+
* Map a Gaunt Sloth {@link ProviderId} to its models.dev top-level provider key. Cloud providers
|
|
19
|
+
* only; local/self-hosted providers (`ollama`) are intentionally absent so they get NO catalog
|
|
20
|
+
* lookup. Returns `undefined` for any provider without a models.dev slice.
|
|
21
|
+
*/
|
|
22
|
+
export declare const MODELS_DEV_PROVIDER_KEY: Partial<Record<ProviderId, string>>;
|
|
23
|
+
/** Per-token cost metadata (US$ per 1M tokens), as published by models.dev. */
|
|
24
|
+
export interface ModelCost {
|
|
25
|
+
input?: number;
|
|
26
|
+
output?: number;
|
|
27
|
+
cacheRead?: number;
|
|
28
|
+
cacheWrite?: number;
|
|
29
|
+
}
|
|
30
|
+
/** Context / output token limits. */
|
|
31
|
+
export interface ModelLimit {
|
|
32
|
+
context?: number;
|
|
33
|
+
output?: number;
|
|
34
|
+
}
|
|
35
|
+
/** Input/output modalities (e.g. `text`, `image`, `pdf`). */
|
|
36
|
+
export interface ModelModalities {
|
|
37
|
+
input?: string[];
|
|
38
|
+
output?: string[];
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Normalised catalog metadata for one model id — the models.dev fields we surface, camelCased and
|
|
42
|
+
* detached from models.dev's raw JSON shape so a schema change there is absorbed in the parser.
|
|
43
|
+
*/
|
|
44
|
+
export interface ModelCatalogEntry {
|
|
45
|
+
/** models.dev display name (e.g. "Claude Opus 4.5"). */
|
|
46
|
+
name?: string;
|
|
47
|
+
cost?: ModelCost;
|
|
48
|
+
limit?: ModelLimit;
|
|
49
|
+
modalities?: ModelModalities;
|
|
50
|
+
/** True when the model exposes an extended-reasoning / thinking mode. */
|
|
51
|
+
reasoning?: boolean;
|
|
52
|
+
/** True when the model supports tool/function calling. */
|
|
53
|
+
toolCall?: boolean;
|
|
54
|
+
}
|
|
55
|
+
/** A provider's catalog slice: model-id → metadata, plus provenance for TTL / display. */
|
|
56
|
+
export interface ProviderCatalog {
|
|
57
|
+
/** Gaunt Sloth provider id this slice belongs to. */
|
|
58
|
+
providerId: ProviderId;
|
|
59
|
+
/** models.dev provider key it was sliced from. */
|
|
60
|
+
providerKey: string;
|
|
61
|
+
/** Epoch ms the slice was fetched (drives TTL freshness). */
|
|
62
|
+
fetchedAt: number;
|
|
63
|
+
/** Metadata keyed by model id, exactly as models.dev keys them. */
|
|
64
|
+
models: Record<string, ModelCatalogEntry>;
|
|
65
|
+
}
|
|
66
|
+
/** Options shared by catalog reads; every field is injectable for hermetic tests. */
|
|
67
|
+
export interface CatalogOptions {
|
|
68
|
+
/** Force a network refresh even when a fresh cache exists (backs `gth models --refresh`). */
|
|
69
|
+
refresh?: boolean;
|
|
70
|
+
/** Override the cache directory (defaults to `~/.gsloth/model-catalog`). */
|
|
71
|
+
cacheDir?: string;
|
|
72
|
+
/** Override "now" for TTL math (defaults to `Date.now()`). */
|
|
73
|
+
now?: number;
|
|
74
|
+
/** Override the fetch implementation (defaults to the global `fetch`). */
|
|
75
|
+
fetchImpl?: typeof fetch;
|
|
76
|
+
/** Override the TTL window in ms (defaults to {@link CATALOG_TTL_MS}). */
|
|
77
|
+
ttlMs?: number;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Get the models.dev catalog slice for one provider, cache-first.
|
|
81
|
+
*
|
|
82
|
+
* - **Local / self-hosted** (`ollama`, or any provider without a {@link MODELS_DEV_PROVIDER_KEY}):
|
|
83
|
+
* returns `null` immediately, with **no network call**.
|
|
84
|
+
* - **Cloud, fresh cache** (and not `refresh`): returns the cached slice, no network call.
|
|
85
|
+
* - **Cloud, missing / stale cache, or `refresh`**: fetches `api.json` once, slices this provider,
|
|
86
|
+
* writes the slice to the per-provider cache, and returns it.
|
|
87
|
+
* - **Fetch fails**: returns the stale cached slice if one exists (degrade, don't blank), else `null`.
|
|
88
|
+
*
|
|
89
|
+
* NEVER throws — catalog availability must never block model use.
|
|
90
|
+
*/
|
|
91
|
+
export declare function getProviderCatalog(providerId: ProviderId, options?: CatalogOptions): Promise<ProviderCatalog | null>;
|
|
92
|
+
/** A {@link ModelInfo}-shaped record decorated with optional catalog metadata. */
|
|
93
|
+
export interface EnrichedModel {
|
|
94
|
+
id: string;
|
|
95
|
+
preferred: boolean;
|
|
96
|
+
/** models.dev metadata for this id, when the catalog has an entry; absent = unenriched. */
|
|
97
|
+
enrichment?: ModelCatalogEntry;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Enrich a provider's discovered model list with catalog metadata, cache-first.
|
|
101
|
+
*
|
|
102
|
+
* `/v1/models` stays authoritative: every input model is returned, in order, whether or not
|
|
103
|
+
* models.dev knows it. Matched ids gain an `enrichment`; unmatched ids (and every model when the
|
|
104
|
+
* catalog is unavailable or the provider is local) are returned untouched. NEVER throws.
|
|
105
|
+
*/
|
|
106
|
+
export declare function enrichModels(providerId: ProviderId, models: ReadonlyArray<{
|
|
107
|
+
id: string;
|
|
108
|
+
preferred: boolean;
|
|
109
|
+
}>, options?: CatalogOptions): Promise<EnrichedModel[]>;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @packageDocumentation
|
|
3
|
+
* Model catalog (GS2-6 / B16) — enriches CLOUD model entries with cost, context-limit and
|
|
4
|
+
* capability metadata sourced from {@link https://models.dev | models.dev} (MIT-licensed).
|
|
5
|
+
*
|
|
6
|
+
* ## What this is (and is not)
|
|
7
|
+
* This is an **enrichment** layer, never a gate. The authoritative set of callable models stays
|
|
8
|
+
* `/v1/models` live discovery (see `modelDiscovery.ts`). models.dev only decorates cloud model
|
|
9
|
+
* ids with `{ cost, limit, modalities, reasoning, toolCall }` where a match exists; a cloud model
|
|
10
|
+
* that models.dev has never heard of is still listed and still callable, just unenriched. If
|
|
11
|
+
* models.dev is unreachable (offline / on-prem no-egress / down) every model keeps working — it
|
|
12
|
+
* simply carries no metadata until the cache fills. Nothing here ever blocks model use.
|
|
13
|
+
*
|
|
14
|
+
* ## Fetch / cache shape
|
|
15
|
+
* models.dev publishes a **single** dataset at {@link MODELS_DEV_URL} (`api.json`, ~3 MB); there is
|
|
16
|
+
* no per-provider endpoint. So "lazy, per-provider" is realised on the **cache side**: on a miss for
|
|
17
|
+
* provider *X* we fetch `api.json` once, **slice out just X's models**, and persist that slice to a
|
|
18
|
+
* per-provider cache file (`~/.gsloth/model-catalog/<providerKey>.json`). Subsequent reads are served
|
|
19
|
+
* **cache-first** from that per-provider file and never touch the network within the {@link CATALOG_TTL_MS}
|
|
20
|
+
* TTL. A stale cache is refreshed on read, or on demand via `gth models --refresh`. If a refresh fetch
|
|
21
|
+
* fails but a stale slice exists, the stale slice is returned (degrade, don't blank).
|
|
22
|
+
*
|
|
23
|
+
* ## Local / self-hosted
|
|
24
|
+
* Only cloud providers have a models.dev key (see {@link MODELS_DEV_PROVIDER_KEY}). `ollama` and any
|
|
25
|
+
* other local/self-hosted provider return `null` from {@link getProviderCatalog} **without any network
|
|
26
|
+
* call** — they rely solely on `/v1/models` discovery.
|
|
27
|
+
*
|
|
28
|
+
* ## Attribution
|
|
29
|
+
* Wherever enriched prices/metadata are shown, surface {@link CATALOG_ATTRIBUTION}. models.dev is MIT
|
|
30
|
+
* licensed; we do not bundle or redistribute a seed dataset here, so no license file needs shipping.
|
|
31
|
+
*/
|
|
32
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
33
|
+
import { resolve } from 'node:path';
|
|
34
|
+
import { getGlobalGslothDir } from '#src/utils/globalConfigUtils.js';
|
|
35
|
+
import { displayDebug } from '#src/utils/consoleUtils.js';
|
|
36
|
+
/** The single models.dev dataset endpoint (whole catalog; sliced per-provider on our side). */
|
|
37
|
+
export const MODELS_DEV_URL = 'https://models.dev/api.json';
|
|
38
|
+
/**
|
|
39
|
+
* Cache freshness window. Pricing/limit metadata is near-static, so a day between refreshes is
|
|
40
|
+
* plenty; `gth models --refresh` is the manual escape hatch when a newer number is needed sooner.
|
|
41
|
+
*/
|
|
42
|
+
export const CATALOG_TTL_MS = 24 * 60 * 60 * 1000; // 24h
|
|
43
|
+
/**
|
|
44
|
+
* Catalog fetch timeout. Deliberately generous (and separate from `/v1/models` discovery's 2 s
|
|
45
|
+
* interactive-path probe): `api.json` is a few MB and this fetch runs off the explicit `gth models`
|
|
46
|
+
* cache-fill path, not a first-run keystroke, so latency headroom matters more than snappiness.
|
|
47
|
+
*/
|
|
48
|
+
export const CATALOG_TIMEOUT_MS = 10_000;
|
|
49
|
+
/** Shown next to any enriched price/metadata. Costs from models.dev are US$ per 1M tokens. */
|
|
50
|
+
export const CATALOG_ATTRIBUTION = '* model prices provided by models.dev';
|
|
51
|
+
/**
|
|
52
|
+
* Map a Gaunt Sloth {@link ProviderId} to its models.dev top-level provider key. Cloud providers
|
|
53
|
+
* only; local/self-hosted providers (`ollama`) are intentionally absent so they get NO catalog
|
|
54
|
+
* lookup. Returns `undefined` for any provider without a models.dev slice.
|
|
55
|
+
*/
|
|
56
|
+
export const MODELS_DEV_PROVIDER_KEY = {
|
|
57
|
+
anthropic: 'anthropic',
|
|
58
|
+
openai: 'openai',
|
|
59
|
+
'google-genai': 'google',
|
|
60
|
+
vertexai: 'google-vertex',
|
|
61
|
+
groq: 'groq',
|
|
62
|
+
deepseek: 'deepseek',
|
|
63
|
+
xai: 'xai',
|
|
64
|
+
openrouter: 'openrouter',
|
|
65
|
+
huggingface: 'huggingface',
|
|
66
|
+
// ollama — local, no models.dev entry (excluded on purpose).
|
|
67
|
+
};
|
|
68
|
+
/** Resolve the per-provider cache directory. */
|
|
69
|
+
function catalogCacheDir(options) {
|
|
70
|
+
return options.cacheDir ?? resolve(getGlobalGslothDir(), 'model-catalog');
|
|
71
|
+
}
|
|
72
|
+
/** Resolve the cache file path for one models.dev provider key. */
|
|
73
|
+
function catalogCacheFile(providerKey, options) {
|
|
74
|
+
return resolve(catalogCacheDir(options), `${providerKey}.json`);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Coerce one models.dev raw model object into a {@link ModelCatalogEntry}, keeping only the fields
|
|
78
|
+
* we surface and only when they are the expected type (defensive against dataset drift).
|
|
79
|
+
*/
|
|
80
|
+
function normaliseEntry(raw) {
|
|
81
|
+
const m = (raw ?? {});
|
|
82
|
+
const entry = {};
|
|
83
|
+
if (typeof m.name === 'string')
|
|
84
|
+
entry.name = m.name;
|
|
85
|
+
if (typeof m.reasoning === 'boolean')
|
|
86
|
+
entry.reasoning = m.reasoning;
|
|
87
|
+
if (typeof m.tool_call === 'boolean')
|
|
88
|
+
entry.toolCall = m.tool_call;
|
|
89
|
+
const cost = m.cost;
|
|
90
|
+
if (cost && typeof cost === 'object') {
|
|
91
|
+
const c = {};
|
|
92
|
+
if (typeof cost.input === 'number')
|
|
93
|
+
c.input = cost.input;
|
|
94
|
+
if (typeof cost.output === 'number')
|
|
95
|
+
c.output = cost.output;
|
|
96
|
+
if (typeof cost.cache_read === 'number')
|
|
97
|
+
c.cacheRead = cost.cache_read;
|
|
98
|
+
if (typeof cost.cache_write === 'number')
|
|
99
|
+
c.cacheWrite = cost.cache_write;
|
|
100
|
+
if (Object.keys(c).length > 0)
|
|
101
|
+
entry.cost = c;
|
|
102
|
+
}
|
|
103
|
+
const limit = m.limit;
|
|
104
|
+
if (limit && typeof limit === 'object') {
|
|
105
|
+
const l = {};
|
|
106
|
+
if (typeof limit.context === 'number')
|
|
107
|
+
l.context = limit.context;
|
|
108
|
+
if (typeof limit.output === 'number')
|
|
109
|
+
l.output = limit.output;
|
|
110
|
+
if (Object.keys(l).length > 0)
|
|
111
|
+
entry.limit = l;
|
|
112
|
+
}
|
|
113
|
+
const modalities = m.modalities;
|
|
114
|
+
if (modalities && typeof modalities === 'object') {
|
|
115
|
+
const mod = {};
|
|
116
|
+
if (Array.isArray(modalities.input))
|
|
117
|
+
mod.input = modalities.input.filter((x) => typeof x === 'string');
|
|
118
|
+
if (Array.isArray(modalities.output))
|
|
119
|
+
mod.output = modalities.output.filter((x) => typeof x === 'string');
|
|
120
|
+
if ((mod.input?.length ?? 0) > 0 || (mod.output?.length ?? 0) > 0)
|
|
121
|
+
entry.modalities = mod;
|
|
122
|
+
}
|
|
123
|
+
return entry;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Slice one provider's models out of the full models.dev `api.json` payload and normalise them.
|
|
127
|
+
* Returns `{}` when the provider key is absent or malformed — an empty-but-present slice, which the
|
|
128
|
+
* caller still caches (models.dev simply has no data for that provider yet).
|
|
129
|
+
*/
|
|
130
|
+
function sliceProvider(payload, providerKey) {
|
|
131
|
+
const providerBlock = payload?.[providerKey];
|
|
132
|
+
const models = providerBlock?.models;
|
|
133
|
+
if (!models || typeof models !== 'object')
|
|
134
|
+
return {};
|
|
135
|
+
const out = {};
|
|
136
|
+
for (const [id, raw] of Object.entries(models)) {
|
|
137
|
+
out[id] = normaliseEntry(raw);
|
|
138
|
+
}
|
|
139
|
+
return out;
|
|
140
|
+
}
|
|
141
|
+
/** Read and validate a cached per-provider slice; returns null on any miss / parse failure. */
|
|
142
|
+
function readCache(providerKey, options) {
|
|
143
|
+
const file = catalogCacheFile(providerKey, options);
|
|
144
|
+
if (!existsSync(file))
|
|
145
|
+
return null;
|
|
146
|
+
try {
|
|
147
|
+
const parsed = JSON.parse(readFileSync(file, 'utf8'));
|
|
148
|
+
if (parsed && typeof parsed.fetchedAt === 'number' && parsed.models)
|
|
149
|
+
return parsed;
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
catch (e) {
|
|
153
|
+
displayDebug(`Model catalog cache for "${providerKey}" is unreadable: ${errMsg(e)}`);
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
/** Persist a per-provider slice to the cache (best-effort; a write failure is non-fatal). */
|
|
158
|
+
function writeCache(catalog, options) {
|
|
159
|
+
try {
|
|
160
|
+
const dir = catalogCacheDir(options);
|
|
161
|
+
if (!existsSync(dir))
|
|
162
|
+
mkdirSync(dir, { recursive: true });
|
|
163
|
+
writeFileSync(catalogCacheFile(catalog.providerKey, options), JSON.stringify(catalog), 'utf8');
|
|
164
|
+
}
|
|
165
|
+
catch (e) {
|
|
166
|
+
displayDebug(`Failed to write model catalog cache for "${catalog.providerKey}": ${errMsg(e)}`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
function errMsg(e) {
|
|
170
|
+
return e instanceof Error ? e.message : String(e);
|
|
171
|
+
}
|
|
172
|
+
/** True when a cached slice is still within the TTL window. */
|
|
173
|
+
function isFresh(cache, options) {
|
|
174
|
+
const now = options.now ?? Date.now();
|
|
175
|
+
const ttl = options.ttlMs ?? CATALOG_TTL_MS;
|
|
176
|
+
return now - cache.fetchedAt < ttl;
|
|
177
|
+
}
|
|
178
|
+
/**
|
|
179
|
+
* Get the models.dev catalog slice for one provider, cache-first.
|
|
180
|
+
*
|
|
181
|
+
* - **Local / self-hosted** (`ollama`, or any provider without a {@link MODELS_DEV_PROVIDER_KEY}):
|
|
182
|
+
* returns `null` immediately, with **no network call**.
|
|
183
|
+
* - **Cloud, fresh cache** (and not `refresh`): returns the cached slice, no network call.
|
|
184
|
+
* - **Cloud, missing / stale cache, or `refresh`**: fetches `api.json` once, slices this provider,
|
|
185
|
+
* writes the slice to the per-provider cache, and returns it.
|
|
186
|
+
* - **Fetch fails**: returns the stale cached slice if one exists (degrade, don't blank), else `null`.
|
|
187
|
+
*
|
|
188
|
+
* NEVER throws — catalog availability must never block model use.
|
|
189
|
+
*/
|
|
190
|
+
export async function getProviderCatalog(providerId, options = {}) {
|
|
191
|
+
const providerKey = MODELS_DEV_PROVIDER_KEY[providerId];
|
|
192
|
+
if (!providerKey)
|
|
193
|
+
return null; // local / unmapped provider → no catalog lookup at all.
|
|
194
|
+
const cached = readCache(providerKey, options);
|
|
195
|
+
if (cached && !options.refresh && isFresh(cached, options)) {
|
|
196
|
+
return cached;
|
|
197
|
+
}
|
|
198
|
+
const fetchImpl = options.fetchImpl ?? fetch;
|
|
199
|
+
try {
|
|
200
|
+
const res = await fetchImpl(MODELS_DEV_URL, {
|
|
201
|
+
method: 'GET',
|
|
202
|
+
headers: { Accept: 'application/json' },
|
|
203
|
+
signal: AbortSignal.timeout(CATALOG_TIMEOUT_MS),
|
|
204
|
+
});
|
|
205
|
+
if (!res.ok) {
|
|
206
|
+
displayDebug(`models.dev returned HTTP ${res.status}; using cached catalog if available.`);
|
|
207
|
+
return cached; // may be stale; may be null.
|
|
208
|
+
}
|
|
209
|
+
const payload = await res.json();
|
|
210
|
+
const catalog = {
|
|
211
|
+
providerId,
|
|
212
|
+
providerKey,
|
|
213
|
+
fetchedAt: options.now ?? Date.now(),
|
|
214
|
+
models: sliceProvider(payload, providerKey),
|
|
215
|
+
};
|
|
216
|
+
writeCache(catalog, options);
|
|
217
|
+
return catalog;
|
|
218
|
+
}
|
|
219
|
+
catch (e) {
|
|
220
|
+
// Offline / on-prem no-egress / timeout / malformed — degrade to the stale slice or nothing.
|
|
221
|
+
displayDebug(`models.dev fetch failed: ${errMsg(e)}; using cached catalog if available.`);
|
|
222
|
+
return cached;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Enrich a provider's discovered model list with catalog metadata, cache-first.
|
|
227
|
+
*
|
|
228
|
+
* `/v1/models` stays authoritative: every input model is returned, in order, whether or not
|
|
229
|
+
* models.dev knows it. Matched ids gain an `enrichment`; unmatched ids (and every model when the
|
|
230
|
+
* catalog is unavailable or the provider is local) are returned untouched. NEVER throws.
|
|
231
|
+
*/
|
|
232
|
+
export async function enrichModels(providerId, models, options = {}) {
|
|
233
|
+
let catalog = null;
|
|
234
|
+
try {
|
|
235
|
+
catalog = await getProviderCatalog(providerId, options);
|
|
236
|
+
}
|
|
237
|
+
catch {
|
|
238
|
+
catalog = null; // defensive: getProviderCatalog already swallows, but never let enrichment throw.
|
|
239
|
+
}
|
|
240
|
+
return models.map((m) => {
|
|
241
|
+
const enrichment = catalog?.models[m.id];
|
|
242
|
+
return enrichment ? { ...m, enrichment } : { id: m.id, preferred: m.preferred };
|
|
243
|
+
});
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=modelCatalog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modelCatalog.js","sourceRoot":"","sources":["../../src/providers/modelCatalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -150,6 +150,19 @@ export const PROVIDER_DESCRIPTORS = [
|
|
|
150
150
|
filter: chatOnly,
|
|
151
151
|
},
|
|
152
152
|
},
|
|
153
|
+
{
|
|
154
|
+
id: 'huggingface',
|
|
155
|
+
label: 'Hugging Face (Inference Providers)',
|
|
156
|
+
apiKeyEnvironmentVariables: ['HF_TOKEN', 'HUGGINGFACEHUB_API_TOKEN', 'HF_API_KEY'],
|
|
157
|
+
preferredModels: ['openai/gpt-oss-120b', 'Qwen/Qwen3-Coder-480B-A35B-Instruct'],
|
|
158
|
+
discovery: {
|
|
159
|
+
kind: 'openai',
|
|
160
|
+
// HF's OpenAI-compatible router exposes /v1/models across all inference providers.
|
|
161
|
+
modelsUrl: () => 'https://router.huggingface.co/v1/models',
|
|
162
|
+
authHeader: bearer,
|
|
163
|
+
filter: chatOnly,
|
|
164
|
+
},
|
|
165
|
+
},
|
|
153
166
|
{
|
|
154
167
|
id: 'ollama',
|
|
155
168
|
label: 'Ollama (local)',
|