@kenkaiiii/gg-core 5.74.2 → 5.75.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 +68 -0
- package/dist/{chunk-EIFHG5TX.js → chunk-OKCKN76P.js} +72 -21
- package/dist/{chunk-EIFHG5TX.js.map → chunk-OKCKN76P.js.map} +1 -1
- package/dist/index.cjs +73 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/model-registry.cjs +71 -20
- package/dist/model-registry.cjs.map +1 -1
- package/dist/model-registry.d.cts +3 -3
- package/dist/model-registry.d.ts +3 -3
- package/dist/model-registry.js +1 -1
- package/package.json +5 -2
package/README.md
ADDED
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# @kenkaiiii/gg-core
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Model registry, auth storage and local-model discovery. No UI, no agent loop.</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://www.npmjs.com/package/@kenkaiiii/gg-core"><img src="https://img.shields.io/npm/v/@kenkaiiii/gg-core?style=for-the-badge" alt="npm version"></a>
|
|
9
|
+
<a href="../../LICENSE"><img src="https://img.shields.io/badge/License-MIT-blue.svg?style=for-the-badge" alt="MIT License"></a>
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
The shared foundation under GG Coder's app and CLI. It depends only on [`@kenkaiiii/gg-ai`](../gg-ai/README.md), never on React, Ink or the agent loop.
|
|
13
|
+
|
|
14
|
+
Part of the [GG Framework](../../README.md) monorepo.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Install
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npm i @kenkaiiii/gg-core
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
## What's inside
|
|
27
|
+
|
|
28
|
+
| Area | Main exports |
|
|
29
|
+
|---|---|
|
|
30
|
+
| Model registry | `getModel`, `getAllModels`, `getModelsForProvider`, `getDefaultModel`, `getContextWindow` |
|
|
31
|
+
| Thinking levels | `getSupportedThinkingLevels`, `getMaxThinkingLevel`, `getDefaultThinkingLevel` |
|
|
32
|
+
| Auth storage | `AuthStorage` (reads and writes `~/.gg/auth.json`, refreshes OAuth tokens) |
|
|
33
|
+
| OAuth | Anthropic, OpenAI, Gemini, Kimi and xAI login flows |
|
|
34
|
+
| Local models | `discoverLocalModels` (Ollama, LM Studio, llama.cpp, vLLM, custom endpoints) |
|
|
35
|
+
| Paths | `getAppPaths` (every file under `~/.gg/`) |
|
|
36
|
+
| Other | Logger, file lock, usage limits, Telegram, voice transcription, auto-update |
|
|
37
|
+
|
|
38
|
+
Two lighter subpath entries skip the rest of the package:
|
|
39
|
+
|
|
40
|
+
```ts
|
|
41
|
+
import { getModel } from "@kenkaiiii/gg-core/models";
|
|
42
|
+
import { getAppPaths } from "@kenkaiiii/gg-core/paths";
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Example
|
|
48
|
+
|
|
49
|
+
```ts
|
|
50
|
+
import { AuthStorage, discoverLocalModels, getModel } from "@kenkaiiii/gg-core";
|
|
51
|
+
|
|
52
|
+
const model = getModel("claude-sonnet-5-5");
|
|
53
|
+
console.log(model?.contextWindow);
|
|
54
|
+
|
|
55
|
+
const auth = new AuthStorage();
|
|
56
|
+
const token = await auth.resolveToken("anthropic");
|
|
57
|
+
|
|
58
|
+
const { models } = await discoverLocalModels();
|
|
59
|
+
console.log(models.map((m) => m.id));
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
`AuthStorage` throws `NotLoggedInError` when a provider has no stored credentials.
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## License
|
|
67
|
+
|
|
68
|
+
MIT
|
|
@@ -1920,9 +1920,10 @@ var NotLoggedInError = class extends Error {
|
|
|
1920
1920
|
// src/model-registry.ts
|
|
1921
1921
|
var MODELS = [
|
|
1922
1922
|
// ── Anthropic ──────────────────────────────────────────
|
|
1923
|
-
// NOTE: Claude Mythos 5 (`claude-mythos-5
|
|
1924
|
-
// Project Glasswing
|
|
1925
|
-
// users. Re-enable once it's
|
|
1923
|
+
// NOTE: Claude Mythos 5.1 (`claude-mythos-5-1`, 2026-09-01) is kept commented
|
|
1924
|
+
// out — it's a Project Glasswing model, still "Active (invite only)" in
|
|
1925
|
+
// Anthropic's docs and unavailable to most users. Re-enable once it's
|
|
1926
|
+
// generally available.
|
|
1926
1927
|
{
|
|
1927
1928
|
// Released 2026-09-01 — replaces Fable 5 at the same $10/$50 MTok (cache
|
|
1928
1929
|
// reads drop to $0.25). Always-on adaptive thinking steered by effort;
|
|
@@ -1944,8 +1945,8 @@ var MODELS = [
|
|
|
1944
1945
|
// // Mythos-class model offered through Project Glasswing (limited
|
|
1945
1946
|
// // availability, invitation-only). Same underlying model as Fable 5.1 with
|
|
1946
1947
|
// // some safeguards lifted; kept here so approved accounts can select it.
|
|
1947
|
-
// id: "claude-mythos-5",
|
|
1948
|
-
// name: "Claude Mythos 5",
|
|
1948
|
+
// id: "claude-mythos-5-1",
|
|
1949
|
+
// name: "Claude Mythos 5.1",
|
|
1949
1950
|
// provider: "anthropic",
|
|
1950
1951
|
// contextWindow: 1_000_000,
|
|
1951
1952
|
// maxOutputTokens: 128_000,
|
|
@@ -1991,16 +1992,24 @@ var MODELS = [
|
|
|
1991
1992
|
maxThinkingLevel: "max"
|
|
1992
1993
|
},
|
|
1993
1994
|
{
|
|
1994
|
-
|
|
1995
|
-
|
|
1995
|
+
// Released 2026-10-07 — replaces Haiku 4.5 at $0.10/$0.50 MTok (prompts
|
|
1996
|
+
// up to 100K tokens; $0.50/$2.50 above). 1M context, 128K output, image
|
|
1997
|
+
// input. Adaptive thinking with the full effort ladder (low→max, xhigh
|
|
1998
|
+
// included; API default `medium`) — manual budget_tokens, non-default
|
|
1999
|
+
// sampling params and assistant prefill all 400. No server-side refusal
|
|
2000
|
+
// fallback: `fallbacks: "default"` is accepted but a refusal stays a
|
|
2001
|
+
// refusal. Haiku 4.5 is retired here — a session that still has it saved
|
|
2002
|
+
// falls back to the provider default on next start.
|
|
2003
|
+
id: "claude-haiku-5-5",
|
|
2004
|
+
name: "Claude Haiku 5.5",
|
|
1996
2005
|
provider: "anthropic",
|
|
1997
|
-
contextWindow:
|
|
1998
|
-
maxOutputTokens:
|
|
2006
|
+
contextWindow: 1e6,
|
|
2007
|
+
maxOutputTokens: 128e3,
|
|
1999
2008
|
supportsThinking: true,
|
|
2000
2009
|
supportsImages: true,
|
|
2001
2010
|
supportsVideo: false,
|
|
2002
2011
|
costTier: "low",
|
|
2003
|
-
maxThinkingLevel: "
|
|
2012
|
+
maxThinkingLevel: "max"
|
|
2004
2013
|
},
|
|
2005
2014
|
// ── OpenAI (Codex) ─────────────────────────────────────
|
|
2006
2015
|
{
|
|
@@ -2290,6 +2299,25 @@ var MODELS = [
|
|
|
2290
2299
|
costTier: "medium",
|
|
2291
2300
|
maxThinkingLevel: "high"
|
|
2292
2301
|
},
|
|
2302
|
+
// K2.7 Code HighSpeed — the same model as K2.7 Code served at ~180 tok/s
|
|
2303
|
+
// (up to ~260 on short contexts), 256K context (platform.kimi.ai model list,
|
|
2304
|
+
// 2026-10-08). The `kimi-k2.7-code` prefix gives it K2.7's always-thinking
|
|
2305
|
+
// wire handling in gg-ai. The Kimi For Coding endpoint lists this model as
|
|
2306
|
+
// `kimi-for-coding-highspeed`; like `kimi-k2.7-code` and `kimi-k3`, we send
|
|
2307
|
+
// the public id there too.
|
|
2308
|
+
{
|
|
2309
|
+
id: "kimi-k2.7-code-highspeed",
|
|
2310
|
+
name: "Kimi K2.7 Code HighSpeed",
|
|
2311
|
+
provider: "moonshot",
|
|
2312
|
+
contextWindow: 262144,
|
|
2313
|
+
maxOutputTokens: 262144,
|
|
2314
|
+
supportsThinking: true,
|
|
2315
|
+
supportsImages: true,
|
|
2316
|
+
supportsVideo: true,
|
|
2317
|
+
maxVideoBytes: 100 * 1024 * 1024,
|
|
2318
|
+
costTier: "medium",
|
|
2319
|
+
maxThinkingLevel: "high"
|
|
2320
|
+
},
|
|
2293
2321
|
// ── Z.AI (GLM) ─────────────────────────────────────────
|
|
2294
2322
|
// Two GLM entries, both live on the coding endpoint (verified against its
|
|
2295
2323
|
// /models list). The pre-5.3 ids stay retired: they routed to strictly worse
|
|
@@ -2465,23 +2493,47 @@ var MODELS = [
|
|
|
2465
2493
|
// billing follows each backend's rates on the HF account (small free tier).
|
|
2466
2494
|
// Model ids are Hub repo paths, so they intentionally contain a slash — the
|
|
2467
2495
|
// same shape local/ vLLM ids already use (`local/vllm/Qwen/Qwen3-32B`).
|
|
2496
|
+
// Live GET /v1/models (2026-10-08) is the source for hosts, context and
|
|
2497
|
+
// modalities. Qwen3 Coder 480B is retired here: only one tool-calling host
|
|
2498
|
+
// (Novita) still served it. We keep bare repo ids (no :auto suffix) so the
|
|
2499
|
+
// picker matches what GET /v1/models reports.
|
|
2468
2500
|
{
|
|
2469
|
-
//
|
|
2470
|
-
//
|
|
2471
|
-
//
|
|
2472
|
-
//
|
|
2473
|
-
//
|
|
2474
|
-
|
|
2475
|
-
|
|
2501
|
+
// Moonshot's open coding model. Served with tool calling by Novita and
|
|
2502
|
+
// DeepInfra at 262K context, with image input (video is a Moonshot-API-only
|
|
2503
|
+
// upload path). It always thinks, but the router has no documented effort
|
|
2504
|
+
// control for it, so we register it as non-thinking: we never send a
|
|
2505
|
+
// reasoning_effort that a host might reject. Output is capped at half the
|
|
2506
|
+
// window so the input keeps room.
|
|
2507
|
+
id: "moonshotai/Kimi-K2.7-Code",
|
|
2508
|
+
name: "Kimi K2.7 Code",
|
|
2476
2509
|
provider: "huggingface",
|
|
2477
2510
|
contextWindow: 262144,
|
|
2478
2511
|
maxOutputTokens: 131072,
|
|
2479
2512
|
supportsThinking: false,
|
|
2480
|
-
supportsImages:
|
|
2513
|
+
supportsImages: true,
|
|
2481
2514
|
supportsVideo: false,
|
|
2482
2515
|
costTier: "medium",
|
|
2483
2516
|
maxThinkingLevel: "low"
|
|
2484
2517
|
},
|
|
2518
|
+
{
|
|
2519
|
+
// DeepSeek V4.1 Flash open weights: 1M context and image input on four
|
|
2520
|
+
// tool-calling hosts (Novita, Fireworks, Baseten, DeepInfra; $0.20–0.30 in /
|
|
2521
|
+
// $0.60–1.20 out per MTok). It is listed before gpt-oss so it becomes the
|
|
2522
|
+
// low-tier summary model, because its 1M window can take a full long
|
|
2523
|
+
// session. Thinking control over the router is unverified, so it is
|
|
2524
|
+
// registered as non-thinking. Output is a conservative 131K: hosts don't
|
|
2525
|
+
// publish the 384K first-party cap.
|
|
2526
|
+
id: "deepseek-ai/DeepSeek-V4.1-Flash",
|
|
2527
|
+
name: "DeepSeek V4.1 Flash",
|
|
2528
|
+
provider: "huggingface",
|
|
2529
|
+
contextWindow: 1048576,
|
|
2530
|
+
maxOutputTokens: 131072,
|
|
2531
|
+
supportsThinking: false,
|
|
2532
|
+
supportsImages: true,
|
|
2533
|
+
supportsVideo: false,
|
|
2534
|
+
costTier: "low",
|
|
2535
|
+
maxThinkingLevel: "low"
|
|
2536
|
+
},
|
|
2485
2537
|
{
|
|
2486
2538
|
// OpenAI's open-weight 120B MoE (5.1B active) — general-purpose, tool-calling
|
|
2487
2539
|
// native, adjustable reasoning effort (low/medium/high, default medium) over
|
|
@@ -2542,8 +2594,7 @@ function getDefaultModel(provider) {
|
|
|
2542
2594
|
if (provider === "moonshot") return MODELS.find((m) => m.id === "kimi-k3");
|
|
2543
2595
|
if (provider === "minimax") return MODELS.find((m) => m.id === "MiniMax-M3");
|
|
2544
2596
|
if (provider === "deepseek") return MODELS.find((m) => m.id === "deepseek-v4-pro");
|
|
2545
|
-
if (provider === "huggingface")
|
|
2546
|
-
return MODELS.find((m) => m.id === "Qwen/Qwen3-Coder-480B-A35B-Instruct");
|
|
2597
|
+
if (provider === "huggingface") return MODELS.find((m) => m.id === "moonshotai/Kimi-K2.7-Code");
|
|
2547
2598
|
if (provider === "openrouter") return MODELS.find((m) => m.id === "qwen/qwen3.8-max");
|
|
2548
2599
|
if (provider === "sakana") return MODELS.find((m) => m.id === "fugu");
|
|
2549
2600
|
if (provider === "xai") return MODELS.find((m) => m.id === "grok-4.7");
|
|
@@ -2655,4 +2706,4 @@ export {
|
|
|
2655
2706
|
getDefaultThinkingLevel,
|
|
2656
2707
|
getSummaryModel
|
|
2657
2708
|
};
|
|
2658
|
-
//# sourceMappingURL=chunk-
|
|
2709
|
+
//# sourceMappingURL=chunk-OKCKN76P.js.map
|