@pentoshi/clai 4.2.2 → 4.3.0
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 +14 -16
- package/dist/agent/compaction-summary.d.ts +1 -1
- package/dist/agent/compaction-summary.js +1 -1
- package/dist/agent/compaction-summary.js.map +1 -1
- package/dist/agent/runner.js +4 -4
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/tool-output-formatting.d.ts +6 -0
- package/dist/agent/tool-output-formatting.js +126 -40
- package/dist/agent/tool-output-formatting.js.map +1 -1
- package/dist/app/adapters/agent-event-adapter.d.ts +4 -0
- package/dist/app/adapters/agent-event-adapter.js +28 -3
- package/dist/app/adapters/agent-event-adapter.js.map +1 -1
- package/dist/app/commands/catalog.js +4 -21
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/controllers/session-controller.js +7 -0
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/events/app-event.d.ts +2 -0
- package/dist/app/events/app-event.js.map +1 -1
- package/dist/classic/app/use-feed.js +2 -1
- package/dist/classic/app/use-feed.js.map +1 -1
- package/dist/commands/providers.js +0 -4
- package/dist/commands/providers.js.map +1 -1
- package/dist/llm/adapters/openai-tools.d.ts +1 -0
- package/dist/llm/adapters/openai-tools.js +4 -1
- package/dist/llm/adapters/openai-tools.js.map +1 -1
- package/dist/llm/agentrouter.js +2 -0
- package/dist/llm/agentrouter.js.map +1 -1
- package/dist/llm/aws-mantle.js +2 -0
- package/dist/llm/aws-mantle.js.map +1 -1
- package/dist/llm/bynara.js +2 -0
- package/dist/llm/bynara.js.map +1 -1
- package/dist/llm/capabilities.d.ts +19 -0
- package/dist/llm/capabilities.js +165 -79
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/catalog-facts.d.ts +23 -0
- package/dist/llm/catalog-facts.js +253 -0
- package/dist/llm/catalog-facts.js.map +1 -0
- package/dist/llm/catalog-prefetch.d.ts +5 -0
- package/dist/llm/catalog-prefetch.js +38 -0
- package/dist/llm/catalog-prefetch.js.map +1 -0
- package/dist/llm/context-windows.d.ts +2 -0
- package/dist/llm/context-windows.js +20 -6
- package/dist/llm/context-windows.js.map +1 -1
- package/dist/llm/custom-profile-resolver.d.ts +5 -0
- package/dist/llm/custom-profile-resolver.js +8 -0
- package/dist/llm/custom-profile-resolver.js.map +1 -0
- package/dist/llm/custom-provider-profile.d.ts +7 -2
- package/dist/llm/custom-provider-profile.js +38 -8
- package/dist/llm/custom-provider-profile.js.map +1 -1
- package/dist/llm/custom-providers.js +2 -0
- package/dist/llm/custom-providers.js.map +1 -1
- package/dist/llm/effort-fallback.js +3 -0
- package/dist/llm/effort-fallback.js.map +1 -1
- package/dist/llm/fireworks.js +2 -0
- package/dist/llm/fireworks.js.map +1 -1
- package/dist/llm/free.js +2 -0
- package/dist/llm/free.js.map +1 -1
- package/dist/llm/hetzner.js +2 -0
- package/dist/llm/hetzner.js.map +1 -1
- package/dist/llm/http.d.ts +21 -2
- package/dist/llm/http.js +100 -141
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/learned-capabilities.d.ts +22 -0
- package/dist/llm/learned-capabilities.js +147 -0
- package/dist/llm/learned-capabilities.js.map +1 -0
- package/dist/llm/lightning.js +2 -0
- package/dist/llm/lightning.js.map +1 -1
- package/dist/llm/modal.js +2 -0
- package/dist/llm/modal.js.map +1 -1
- package/dist/llm/model-families.d.ts +20 -0
- package/dist/llm/model-families.js +227 -19
- package/dist/llm/model-families.js.map +1 -1
- package/dist/llm/nvidia.js +2 -0
- package/dist/llm/nvidia.js.map +1 -1
- package/dist/llm/openai.js +2 -0
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/openrouter.js +2 -0
- package/dist/llm/openrouter.js.map +1 -1
- package/dist/llm/orcarouter.js +2 -0
- package/dist/llm/orcarouter.js.map +1 -1
- package/dist/llm/provider-model-layers.d.ts +3 -0
- package/dist/llm/provider-model-layers.js +522 -0
- package/dist/llm/provider-model-layers.js.map +1 -0
- package/dist/llm/provider-profile-layers.d.ts +4 -1
- package/dist/llm/provider-profile-layers.js +8 -523
- package/dist/llm/provider-profile-layers.js.map +1 -1
- package/dist/llm/provider-profile.d.ts +13 -1
- package/dist/llm/provider-profile.js +18 -0
- package/dist/llm/provider-profile.js.map +1 -1
- package/dist/llm/provider-profiles.d.ts +5 -1
- package/dist/llm/provider-profiles.js +177 -4
- package/dist/llm/provider-profiles.js.map +1 -1
- package/dist/llm/provider.js +0 -15
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/qwen-cloud.js +2 -0
- package/dist/llm/qwen-cloud.js.map +1 -1
- package/dist/llm/reasoning-artifacts.d.ts +1 -0
- package/dist/llm/reasoning-artifacts.js +7 -5
- package/dist/llm/reasoning-artifacts.js.map +1 -1
- package/dist/llm/reasoning-controls.d.ts +16 -0
- package/dist/llm/reasoning-controls.js +210 -0
- package/dist/llm/reasoning-controls.js.map +1 -0
- package/dist/llm/reasoning-errors.d.ts +4 -0
- package/dist/llm/reasoning-errors.js +45 -0
- package/dist/llm/reasoning-errors.js.map +1 -0
- package/dist/llm/request-plan.d.ts +8 -6
- package/dist/llm/request-plan.js +47 -13
- package/dist/llm/request-plan.js.map +1 -1
- package/dist/llm/route-dialect-registry.d.ts +8 -0
- package/dist/llm/route-dialect-registry.js +33 -0
- package/dist/llm/route-dialect-registry.js.map +1 -0
- package/dist/llm/route-vocabulary.d.ts +2 -0
- package/dist/llm/route-vocabulary.js +23 -0
- package/dist/llm/route-vocabulary.js.map +1 -0
- package/dist/llm/router.d.ts +2 -0
- package/dist/llm/router.js +70 -20
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/tokenrouter.js +2 -0
- package/dist/llm/tokenrouter.js.map +1 -1
- package/dist/store/config.d.ts +11 -0
- package/dist/store/config.js +21 -3
- package/dist/store/config.js.map +1 -1
- package/dist/store/keys.d.ts +1 -1
- package/dist/store/keys.js +1 -1
- package/dist/store/session-workspace.d.ts +1 -0
- package/dist/store/session-workspace.js +21 -1
- package/dist/store/session-workspace.js.map +1 -1
- package/dist/tools/definitions.js +5 -10
- package/dist/tools/definitions.js.map +1 -1
- package/dist/tools/output-selection.js +47 -3
- package/dist/tools/output-selection.js.map +1 -1
- package/dist/tools/web/content-encoding.d.ts +6 -0
- package/dist/tools/web/content-encoding.js +57 -0
- package/dist/tools/web/content-encoding.js.map +1 -0
- package/dist/tools/web/fetch-core.js +23 -1
- package/dist/tools/web/fetch-core.js.map +1 -1
- package/dist/tui-v2/components/picker/picker.js +1 -1
- package/dist/tui-v2/components/picker/picker.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.js +0 -2
- package/dist/types.js.map +1 -1
- package/dist/ui-core/commands/command-handlers.js +2 -3
- package/dist/ui-core/commands/command-handlers.js.map +1 -1
- package/dist/ui-core/commands/picker-commands.js +34 -11
- package/dist/ui-core/commands/picker-commands.js.map +1 -1
- package/dist/ui-core/commands/session-commands.d.ts +2 -3
- package/dist/ui-core/commands/session-commands.js +44 -17
- package/dist/ui-core/commands/session-commands.js.map +1 -1
- package/dist/ui-core/rendering/format-help.js +1 -1
- package/dist/ui-core/rendering/format-help.js.map +1 -1
- package/dist/ui-core/state/transcript-reducer.js +78 -19
- package/dist/ui-core/state/transcript-reducer.js.map +1 -1
- package/dist/ui-core/state/transcript-types.d.ts +1 -0
- package/dist/ui-core/state/transcript-types.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -2
- package/dist/llm/groq.d.ts +0 -24
- package/dist/llm/groq.js +0 -155
- package/dist/llm/groq.js.map +0 -1
- package/dist/llm/kimchi.d.ts +0 -2
- package/dist/llm/kimchi.js +0 -96
- package/dist/llm/kimchi.js.map +0 -1
package/dist/llm/groq.js
DELETED
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { defaultModels, } from "./provider.js";
|
|
2
|
-
import { openAiCompatibleComplete, openAiCompatiblePing, openAiCompatibleStream, toCompletionResult, readJson, ingestOpenAiModelCatalog, } from "./http.js";
|
|
3
|
-
const baseUrl = "https://api.groq.com/openai/v1";
|
|
4
|
-
export const groqFallbackModels = [
|
|
5
|
-
"openai/gpt-oss-20b",
|
|
6
|
-
"openai/gpt-oss-120b",
|
|
7
|
-
"openai/gpt-oss-safeguard-20b",
|
|
8
|
-
"qwen/qwen3-32b",
|
|
9
|
-
"llama-3.3-70b-versatile",
|
|
10
|
-
"llama-3.1-8b-instant",
|
|
11
|
-
"meta-llama/llama-4-scout-17b-16e-instruct",
|
|
12
|
-
"groq/compound-mini",
|
|
13
|
-
"groq/compound",
|
|
14
|
-
];
|
|
15
|
-
const groqInputTokenBudgets = [
|
|
16
|
-
{ pattern: /qwen\/qwen3-32b/i, tokens: 5_500 },
|
|
17
|
-
{ pattern: /openai\/gpt-oss-20b/i, tokens: 7_500 },
|
|
18
|
-
];
|
|
19
|
-
export function groqInputTokenBudget(model) {
|
|
20
|
-
return groqInputTokenBudgets.find(({ pattern }) => pattern.test(model))
|
|
21
|
-
?.tokens;
|
|
22
|
-
}
|
|
23
|
-
let cachedModels = null;
|
|
24
|
-
let lastFetchTime = 0;
|
|
25
|
-
const CACHE_TTL_MS = 60 * 60 * 1000; // 1 hour cache TTL
|
|
26
|
-
/**
|
|
27
|
-
* Smallest completion allowance that can still produce a visible answer or a
|
|
28
|
-
* closed tool-call JSON once reasoning tokens are billed against the same
|
|
29
|
-
* Budget. The TPM guard below may never drop under this on a step
|
|
30
|
-
* that carries tools or reasoning.
|
|
31
|
-
*/
|
|
32
|
-
export const GROQ_VIABLE_COMPLETION_TOKENS = 8_192;
|
|
33
|
-
/**
|
|
34
|
-
* Groq bills reasoning against the completion allowance, and the shipped
|
|
35
|
-
* per-model TPM guard (1024/2048) used to be applied with a hard `Math.min`
|
|
36
|
-
* against the caller's budget — so a tool step that asked for 24 576 tokens got
|
|
37
|
-
* 1024 and finished with `length` before the tool JSON closed.
|
|
38
|
-
*
|
|
39
|
-
* The guard is kept as the *default* for plain chat, but a step that attaches
|
|
40
|
-
* tools or enables reasoning is never clamped below a viable floor.
|
|
41
|
-
*/
|
|
42
|
-
export function groqMaxTokens(model, requested, options) {
|
|
43
|
-
const m = model.toLowerCase();
|
|
44
|
-
const cap = /openai\/gpt-oss-120b/.test(m)
|
|
45
|
-
? 1_024
|
|
46
|
-
: /openai\/gpt-oss-20b|qwen\/qwen3-32b/.test(m)
|
|
47
|
-
? 2_048
|
|
48
|
-
: undefined;
|
|
49
|
-
if (!cap)
|
|
50
|
-
return requested;
|
|
51
|
-
const needsViableFloor = Boolean(options?.toolsAttached || options?.reasoningEnabled);
|
|
52
|
-
const effectiveCap = needsViableFloor
|
|
53
|
-
? Math.max(cap, GROQ_VIABLE_COMPLETION_TOKENS)
|
|
54
|
-
: cap;
|
|
55
|
-
return Math.min(requested ?? effectiveCap, effectiveCap);
|
|
56
|
-
}
|
|
57
|
-
export const groqProvider = {
|
|
58
|
-
id: "groq",
|
|
59
|
-
reasoningStyle: "groq",
|
|
60
|
-
displayName: "Groq",
|
|
61
|
-
defaultModel: defaultModels.groq,
|
|
62
|
-
envVar: "GROQ_API_KEY",
|
|
63
|
-
validateKey: (key) => /^gsk_[A-Za-z0-9_-]{8,}$/.test(key),
|
|
64
|
-
async listModels(auth) {
|
|
65
|
-
if (!auth.apiKey) {
|
|
66
|
-
return groqFallbackModels;
|
|
67
|
-
}
|
|
68
|
-
const now = Date.now();
|
|
69
|
-
if (cachedModels && now - lastFetchTime < CACHE_TTL_MS) {
|
|
70
|
-
return cachedModels;
|
|
71
|
-
}
|
|
72
|
-
try {
|
|
73
|
-
const response = await fetch(`${baseUrl}/models`, {
|
|
74
|
-
headers: {
|
|
75
|
-
authorization: `Bearer ${auth.apiKey}`,
|
|
76
|
-
},
|
|
77
|
-
});
|
|
78
|
-
if (!response.ok) {
|
|
79
|
-
throw new Error(`HTTP ${response.status} ${response.statusText}`);
|
|
80
|
-
}
|
|
81
|
-
const data = await readJson(response);
|
|
82
|
-
const models = ingestOpenAiModelCatalog("groq", data);
|
|
83
|
-
if (models.length > 0) {
|
|
84
|
-
cachedModels = models;
|
|
85
|
-
lastFetchTime = now;
|
|
86
|
-
return models;
|
|
87
|
-
}
|
|
88
|
-
return groqFallbackModels;
|
|
89
|
-
}
|
|
90
|
-
catch {
|
|
91
|
-
return groqFallbackModels;
|
|
92
|
-
}
|
|
93
|
-
},
|
|
94
|
-
async ping(auth) {
|
|
95
|
-
if (!auth.apiKey)
|
|
96
|
-
throw new Error("Groq API key is required");
|
|
97
|
-
await openAiCompatiblePing(baseUrl, auth.apiKey);
|
|
98
|
-
},
|
|
99
|
-
async complete(request, auth) {
|
|
100
|
-
if (!auth.apiKey)
|
|
101
|
-
throw new Error("Groq API key is required");
|
|
102
|
-
const model = request.model ?? defaultModels.groq;
|
|
103
|
-
const payload = await openAiCompatibleComplete({
|
|
104
|
-
provider: "Groq",
|
|
105
|
-
providerId: "groq",
|
|
106
|
-
baseUrl,
|
|
107
|
-
apiKey: auth.apiKey,
|
|
108
|
-
model,
|
|
109
|
-
messages: request.messages,
|
|
110
|
-
maxTokens: groqMaxTokens(model, request.maxTokens, {
|
|
111
|
-
toolsAttached: Boolean(request.tools?.length),
|
|
112
|
-
reasoningEnabled: Boolean(request.thinking?.enabled),
|
|
113
|
-
}),
|
|
114
|
-
temperature: request.temperature,
|
|
115
|
-
signal: request.signal,
|
|
116
|
-
reasoning: request.thinking,
|
|
117
|
-
reasoningStyle: "groq",
|
|
118
|
-
tools: request.tools,
|
|
119
|
-
toolChoice: request.toolChoice,
|
|
120
|
-
parallelToolCalls: request.parallelToolCalls,
|
|
121
|
-
reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
|
|
122
|
-
});
|
|
123
|
-
return toCompletionResult("groq", model, payload);
|
|
124
|
-
},
|
|
125
|
-
async stream(request, auth, onToken) {
|
|
126
|
-
if (!auth.apiKey)
|
|
127
|
-
throw new Error("Groq API key is required");
|
|
128
|
-
const model = request.model ?? defaultModels.groq;
|
|
129
|
-
const payload = await openAiCompatibleStream({
|
|
130
|
-
provider: "Groq",
|
|
131
|
-
providerId: "groq",
|
|
132
|
-
baseUrl,
|
|
133
|
-
apiKey: auth.apiKey,
|
|
134
|
-
model,
|
|
135
|
-
messages: request.messages,
|
|
136
|
-
maxTokens: groqMaxTokens(model, request.maxTokens, {
|
|
137
|
-
toolsAttached: Boolean(request.tools?.length),
|
|
138
|
-
reasoningEnabled: Boolean(request.thinking?.enabled),
|
|
139
|
-
}),
|
|
140
|
-
temperature: request.temperature,
|
|
141
|
-
signal: request.signal,
|
|
142
|
-
onToken,
|
|
143
|
-
onToolCallDelta: request.onToolCallDelta,
|
|
144
|
-
onStreamEvent: request.onStreamEvent,
|
|
145
|
-
reasoning: request.thinking,
|
|
146
|
-
reasoningStyle: "groq",
|
|
147
|
-
tools: request.tools,
|
|
148
|
-
toolChoice: request.toolChoice,
|
|
149
|
-
parallelToolCalls: request.parallelToolCalls,
|
|
150
|
-
reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
|
|
151
|
-
});
|
|
152
|
-
return toCompletionResult("groq", model, payload);
|
|
153
|
-
},
|
|
154
|
-
};
|
|
155
|
-
//# sourceMappingURL=groq.js.map
|
package/dist/llm/groq.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/llm/groq.ts"],"names":[],"mappings":"AACA,OAAO,EACL,aAAa,GAGd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EACR,wBAAwB,GACzB,MAAM,WAAW,CAAC;AAEnB,MAAM,OAAO,GAAG,gCAAgC,CAAC;AAEjD,MAAM,CAAC,MAAM,kBAAkB,GAAG;IAChC,oBAAoB;IACpB,qBAAqB;IACrB,8BAA8B;IAC9B,gBAAgB;IAChB,yBAAyB;IACzB,sBAAsB;IACtB,2CAA2C;IAC3C,oBAAoB;IACpB,eAAe;CAChB,CAAC;AAGF,MAAM,qBAAqB,GAA+C;IACxE,EAAE,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE;IAC9C,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,KAAK,EAAE;CACnD,CAAC;AAEF,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,OAAO,qBAAqB,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,EAAE,MAAM,CAAC;AACb,CAAC;AAED,IAAI,YAAY,GAAoB,IAAI,CAAC;AACzC,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,mBAAmB;AAExD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAEnD;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,KAAa,EACb,SAA6B,EAC7B,OAAiE;IAEjE,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,GAAG,GAAG,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,qCAAqC,CAAC,IAAI,CAAC,CAAC,CAAC;YAC7C,CAAC,CAAC,KAAK;YACP,CAAC,CAAC,SAAS,CAAC;IAChB,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC;IAC3B,MAAM,gBAAgB,GAAG,OAAO,CAC9B,OAAO,EAAE,aAAa,IAAI,OAAO,EAAE,gBAAgB,CACpD,CAAC;IACF,MAAM,YAAY,GAAG,gBAAgB;QACnC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,6BAA6B,CAAC;QAC9C,CAAC,CAAC,GAAG,CAAC;IACR,OAAO,IAAI,CAAC,GAAG,CAAC,SAAS,IAAI,YAAY,EAAE,YAAY,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,MAAM,YAAY,GAAgB;IACvC,EAAE,EAAE,MAAM;IACV,cAAc,EAAE,MAAM;IACtB,WAAW,EAAE,MAAM;IACnB,YAAY,EAAE,aAAa,CAAC,IAAI;IAChC,MAAM,EAAE,cAAc;IACtB,WAAW,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC;IACjE,KAAK,CAAC,UAAU,CAAC,IAAkB;QACjC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,IAAI,YAAY,IAAI,GAAG,GAAG,aAAa,GAAG,YAAY,EAAE,CAAC;YACvD,OAAO,YAAY,CAAC;QACtB,CAAC;QACD,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,EAAE;gBAChD,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;iBACvC;aACF,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CAAC,QAAQ,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YACpE,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAmC,QAAQ,CAAC,CAAC;YACxE,MAAM,MAAM,GAAG,wBAAwB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACtD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,YAAY,GAAG,MAAM,CAAC;gBACtB,aAAa,GAAG,GAAG,CAAC;gBACpB,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,kBAAkB,CAAC;QAC5B,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAkB;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9D,MAAM,oBAAoB,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IACD,KAAK,CAAC,QAAQ,CACZ,OAA0B,EAC1B,IAAkB;QAElB,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC;YAC7C,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,MAAM;YAClB,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE;gBACjD,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7C,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;aACrD,CAAC;YACF,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,cAAc,EAAE,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,+BAA+B,EAAE,OAAO,CAAC,iCAAiC;SAC3E,CAAC,CAAC;QACH,OAAO,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,MAAM,CACV,OAA0B,EAC1B,IAAkB,EAClB,OAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC9D,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,IAAI,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,sBAAsB,CAAC;YAC3C,QAAQ,EAAE,MAAM;YAChB,UAAU,EAAE,MAAM;YAClB,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,EAAE;gBACjD,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;gBAC7C,gBAAgB,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC;aACrD,CAAC;YACF,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,OAAO;YACP,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,cAAc,EAAE,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,+BAA+B,EAAE,OAAO,CAAC,iCAAiC;SAC3E,CAAC,CAAC;QACH,OAAO,kBAAkB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACpD,CAAC;CACF,CAAC"}
|
package/dist/llm/kimchi.d.ts
DELETED
package/dist/llm/kimchi.js
DELETED
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
import { defaultModels, } from "./provider.js";
|
|
2
|
-
import { openAiCompatibleComplete, openAiCompatiblePing, openAiCompatibleStream, toCompletionResult, readJson, ingestOpenAiModelCatalog, } from "./http.js";
|
|
3
|
-
// Kimchi exposes an OpenAI-compatible Chat Completions API at
|
|
4
|
-
// https://llm.kimchi.dev/openai/v1. API keys are alphanumeric.
|
|
5
|
-
const baseUrl = "https://llm.kimchi.dev/openai/v1";
|
|
6
|
-
let cachedModels = null;
|
|
7
|
-
let lastFetchTime = 0;
|
|
8
|
-
const CACHE_TTL_MS = 60 * 60 * 1000; // 1 hour
|
|
9
|
-
export const kimchiProvider = {
|
|
10
|
-
id: "kimchi",
|
|
11
|
-
reasoningStyle: "openai",
|
|
12
|
-
displayName: "Kimchi",
|
|
13
|
-
defaultModel: defaultModels.kimchi,
|
|
14
|
-
envVar: "CASTAI_API_KEY",
|
|
15
|
-
validateKey: (key) => /^[A-Za-z0-9_-]{8,}$/.test(key),
|
|
16
|
-
async listModels(auth) {
|
|
17
|
-
const now = Date.now();
|
|
18
|
-
if (cachedModels && now - lastFetchTime < CACHE_TTL_MS) {
|
|
19
|
-
return cachedModels;
|
|
20
|
-
}
|
|
21
|
-
try {
|
|
22
|
-
const resp = await fetch(`${baseUrl}/models`, {
|
|
23
|
-
headers: auth.apiKey
|
|
24
|
-
? { authorization: `Bearer ${auth.apiKey}` }
|
|
25
|
-
: {},
|
|
26
|
-
verbose: process.env.CLAI_VERBOSE === "true",
|
|
27
|
-
});
|
|
28
|
-
const data = await readJson(resp);
|
|
29
|
-
const models = ingestOpenAiModelCatalog("kimchi", data);
|
|
30
|
-
if (models.length > 0) {
|
|
31
|
-
cachedModels = models;
|
|
32
|
-
lastFetchTime = now;
|
|
33
|
-
}
|
|
34
|
-
return models;
|
|
35
|
-
}
|
|
36
|
-
catch {
|
|
37
|
-
// Falls through to knownModels in repl.ts/App.tsx on failure.
|
|
38
|
-
return [];
|
|
39
|
-
}
|
|
40
|
-
},
|
|
41
|
-
async ping(auth) {
|
|
42
|
-
if (!auth.apiKey)
|
|
43
|
-
throw new Error("Kimchi API key is required");
|
|
44
|
-
await openAiCompatiblePing(baseUrl, auth.apiKey);
|
|
45
|
-
},
|
|
46
|
-
async complete(request, auth) {
|
|
47
|
-
if (!auth.apiKey)
|
|
48
|
-
throw new Error("Kimchi API key is required");
|
|
49
|
-
const model = request.model ?? defaultModels.kimchi;
|
|
50
|
-
const payload = await openAiCompatibleComplete({
|
|
51
|
-
provider: "Kimchi",
|
|
52
|
-
providerId: "kimchi",
|
|
53
|
-
baseUrl,
|
|
54
|
-
apiKey: auth.apiKey,
|
|
55
|
-
model,
|
|
56
|
-
messages: request.messages,
|
|
57
|
-
maxTokens: request.maxTokens,
|
|
58
|
-
temperature: request.temperature,
|
|
59
|
-
signal: request.signal,
|
|
60
|
-
reasoning: request.thinking,
|
|
61
|
-
reasoningStyle: "openai",
|
|
62
|
-
tools: request.tools,
|
|
63
|
-
toolChoice: request.toolChoice,
|
|
64
|
-
parallelToolCalls: request.parallelToolCalls,
|
|
65
|
-
reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
|
|
66
|
-
});
|
|
67
|
-
return toCompletionResult("kimchi", model, payload);
|
|
68
|
-
},
|
|
69
|
-
async stream(request, auth, onToken) {
|
|
70
|
-
if (!auth.apiKey)
|
|
71
|
-
throw new Error("Kimchi API key is required");
|
|
72
|
-
const model = request.model ?? defaultModels.kimchi;
|
|
73
|
-
const payload = await openAiCompatibleStream({
|
|
74
|
-
provider: "Kimchi",
|
|
75
|
-
providerId: "kimchi",
|
|
76
|
-
baseUrl,
|
|
77
|
-
apiKey: auth.apiKey,
|
|
78
|
-
model,
|
|
79
|
-
messages: request.messages,
|
|
80
|
-
maxTokens: request.maxTokens,
|
|
81
|
-
temperature: request.temperature,
|
|
82
|
-
signal: request.signal,
|
|
83
|
-
onToken,
|
|
84
|
-
onToolCallDelta: request.onToolCallDelta,
|
|
85
|
-
onStreamEvent: request.onStreamEvent,
|
|
86
|
-
reasoning: request.thinking,
|
|
87
|
-
reasoningStyle: "openai",
|
|
88
|
-
tools: request.tools,
|
|
89
|
-
toolChoice: request.toolChoice,
|
|
90
|
-
parallelToolCalls: request.parallelToolCalls,
|
|
91
|
-
reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
|
|
92
|
-
});
|
|
93
|
-
return toCompletionResult("kimchi", model, payload);
|
|
94
|
-
},
|
|
95
|
-
};
|
|
96
|
-
//# sourceMappingURL=kimchi.js.map
|
package/dist/llm/kimchi.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kimchi.js","sourceRoot":"","sources":["../../src/llm/kimchi.ts"],"names":[],"mappings":"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"}
|