@sriinnu/kosha-discovery 1.2.0 → 1.5.1
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 +125 -52
- package/dist/aliases.d.ts +6 -1
- package/dist/aliases.d.ts.map +1 -1
- package/dist/aliases.js +38 -12
- package/dist/aliases.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +40 -3
- package/dist/cache.js.map +1 -1
- package/dist/claude-generation.d.ts +59 -0
- package/dist/claude-generation.d.ts.map +1 -0
- package/dist/claude-generation.js +117 -0
- package/dist/claude-generation.js.map +1 -0
- package/dist/cli-cmd-doctor.d.ts +17 -0
- package/dist/cli-cmd-doctor.d.ts.map +1 -0
- package/dist/cli-cmd-doctor.js +199 -0
- package/dist/cli-cmd-doctor.js.map +1 -0
- package/dist/cli-cmd-model.js +2 -2
- package/dist/cli-cmd-model.js.map +1 -1
- package/dist/cli-cmd-spend.d.ts +10 -0
- package/dist/cli-cmd-spend.d.ts.map +1 -0
- package/dist/cli-cmd-spend.js +130 -0
- package/dist/cli-cmd-spend.js.map +1 -0
- package/dist/cli-commands.d.ts +4 -1
- package/dist/cli-commands.d.ts.map +1 -1
- package/dist/cli-commands.js +10 -2
- package/dist/cli-commands.js.map +1 -1
- package/dist/cli-format.js.map +1 -1
- package/dist/cli-help.d.ts.map +1 -1
- package/dist/cli-help.js +13 -2
- package/dist/cli-help.js.map +1 -1
- package/dist/cli.js +10 -0
- package/dist/cli.js.map +1 -1
- package/dist/cost.d.ts +152 -0
- package/dist/cost.d.ts.map +1 -0
- package/dist/cost.js +377 -0
- package/dist/cost.js.map +1 -0
- package/dist/credentials/resolver.d.ts +10 -0
- package/dist/credentials/resolver.d.ts.map +1 -1
- package/dist/credentials/resolver.js +64 -31
- package/dist/credentials/resolver.js.map +1 -1
- package/dist/discovery/anthropic.d.ts +19 -1
- package/dist/discovery/anthropic.d.ts.map +1 -1
- package/dist/discovery/anthropic.js +112 -8
- package/dist/discovery/anthropic.js.map +1 -1
- package/dist/discovery/base.d.ts +7 -0
- package/dist/discovery/base.d.ts.map +1 -1
- package/dist/discovery/base.js +32 -4
- package/dist/discovery/base.js.map +1 -1
- package/dist/discovery/bedrock.d.ts.map +1 -1
- package/dist/discovery/cerebras.d.ts.map +1 -1
- package/dist/discovery/cohere.d.ts.map +1 -1
- package/dist/discovery/deepinfra.d.ts.map +1 -1
- package/dist/discovery/deepseek.d.ts.map +1 -1
- package/dist/discovery/fireworks.d.ts.map +1 -1
- package/dist/discovery/glm.d.ts.map +1 -1
- package/dist/discovery/google.d.ts +3 -1
- package/dist/discovery/google.d.ts.map +1 -1
- package/dist/discovery/google.js +13 -6
- package/dist/discovery/google.js.map +1 -1
- package/dist/discovery/groq.d.ts.map +1 -1
- package/dist/discovery/index.d.ts +2 -0
- package/dist/discovery/index.d.ts.map +1 -1
- package/dist/discovery/index.js +6 -0
- package/dist/discovery/index.js.map +1 -1
- package/dist/discovery/llama-cpp.d.ts.map +1 -1
- package/dist/discovery/lmstudio.d.ts +26 -0
- package/dist/discovery/lmstudio.d.ts.map +1 -0
- package/dist/discovery/lmstudio.js +93 -0
- package/dist/discovery/lmstudio.js.map +1 -0
- package/dist/discovery/minimax.d.ts.map +1 -1
- package/dist/discovery/mistral.d.ts.map +1 -1
- package/dist/discovery/moonshot.d.ts.map +1 -1
- package/dist/discovery/nvidia.d.ts.map +1 -1
- package/dist/discovery/ollama.d.ts.map +1 -1
- package/dist/discovery/openai-compatible.d.ts.map +1 -1
- package/dist/discovery/openai.d.ts.map +1 -1
- package/dist/discovery/openrouter.d.ts +29 -5
- package/dist/discovery/openrouter.d.ts.map +1 -1
- package/dist/discovery/openrouter.js +56 -18
- package/dist/discovery/openrouter.js.map +1 -1
- package/dist/discovery/perplexity.d.ts.map +1 -1
- package/dist/discovery/promo-overrides.js.map +1 -1
- package/dist/discovery/static-direct.d.ts +9 -1
- package/dist/discovery/static-direct.d.ts.map +1 -1
- package/dist/discovery/static-direct.js +68 -7
- package/dist/discovery/static-direct.js.map +1 -1
- package/dist/discovery/together.d.ts.map +1 -1
- package/dist/discovery/vercel.d.ts.map +1 -1
- package/dist/discovery/vertex.d.ts.map +1 -1
- package/dist/discovery/vllm.d.ts +26 -0
- package/dist/discovery/vllm.d.ts.map +1 -0
- package/dist/discovery/vllm.js +93 -0
- package/dist/discovery/vllm.js.map +1 -0
- package/dist/discovery/zai.d.ts.map +1 -1
- package/dist/discovery-contract.d.ts +7 -0
- package/dist/discovery-contract.d.ts.map +1 -1
- package/dist/discovery-contract.js.map +1 -1
- package/dist/discovery-routes.d.ts +9 -0
- package/dist/discovery-routes.d.ts.map +1 -1
- package/dist/discovery-routes.js +106 -18
- package/dist/discovery-routes.js.map +1 -1
- package/dist/enrichment/litellm.d.ts +1 -1
- package/dist/enrichment/litellm.d.ts.map +1 -1
- package/dist/enrichment/litellm.js +3 -3
- package/dist/entry.d.ts +14 -0
- package/dist/entry.d.ts.map +1 -0
- package/dist/entry.js +26 -0
- package/dist/entry.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp-server.d.ts +207 -2
- package/dist/mcp-server.d.ts.map +1 -1
- package/dist/mcp-server.js +203 -51
- package/dist/mcp-server.js.map +1 -1
- package/dist/model-features.d.ts.map +1 -1
- package/dist/model-features.js +11 -2
- package/dist/model-features.js.map +1 -1
- package/dist/normalize.d.ts +7 -7
- package/dist/normalize.js +8 -8
- package/dist/provider-catalog.d.ts.map +1 -1
- package/dist/provider-catalog.js +26 -0
- package/dist/provider-catalog.js.map +1 -1
- package/dist/proxy.d.ts +49 -7
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +754 -89
- package/dist/proxy.js.map +1 -1
- package/dist/registry-query.js +2 -2
- package/dist/registry-query.js.map +1 -1
- package/dist/registry-routing.d.ts +65 -0
- package/dist/registry-routing.d.ts.map +1 -0
- package/dist/registry-routing.js +165 -0
- package/dist/registry-routing.js.map +1 -0
- package/dist/registry-runtime.d.ts +2 -0
- package/dist/registry-runtime.d.ts.map +1 -1
- package/dist/registry-runtime.js +177 -23
- package/dist/registry-runtime.js.map +1 -1
- package/dist/registry-selection.js +6 -0
- package/dist/registry-selection.js.map +1 -1
- package/dist/registry.d.ts +69 -0
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +133 -1
- package/dist/registry.js.map +1 -1
- package/dist/resilience.d.ts +15 -0
- package/dist/resilience.d.ts.map +1 -1
- package/dist/resilience.js +23 -1
- package/dist/resilience.js.map +1 -1
- package/dist/server.d.ts +44 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +328 -33
- package/dist/server.js.map +1 -1
- package/dist/tally.d.ts +80 -0
- package/dist/tally.d.ts.map +1 -0
- package/dist/tally.js +176 -0
- package/dist/tally.js.map +1 -0
- package/dist/types.d.ts +22 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/wire-anthropic.d.ts +264 -0
- package/dist/wire-anthropic.d.ts.map +1 -0
- package/dist/wire-anthropic.js +960 -0
- package/dist/wire-anthropic.js.map +1 -0
- package/package.json +14 -10
- package/logo.png +0 -0
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* kosha-discovery — Claude generation parsing and per-generation behaviour.
|
|
3
|
+
*
|
|
4
|
+
* One source of truth for "which Claude is this and what does it accept",
|
|
5
|
+
* shared by the catalog feature inference (`model-features.ts`) and the
|
|
6
|
+
* proxy's wire translator (`wire-anthropic.ts`). Keeping it in one module
|
|
7
|
+
* means an OpenRouter-style `anthropic/claude-sonnet-4.6`, a Bedrock-style
|
|
8
|
+
* `anthropic.claude-opus-4-8-v1:0`, and the bare `claude-opus-4-8` all
|
|
9
|
+
* classify identically everywhere.
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Normalize the many spellings of a Claude ID down to the bare family-first
|
|
14
|
+
* form: strip a `vendor/` or `anthropic.` prefix, a Bedrock `-v1:0` suffix,
|
|
15
|
+
* and turn dotted versions (`4.6`) into dashed (`4-6`).
|
|
16
|
+
*/
|
|
17
|
+
function normalizeClaudeId(modelId) {
|
|
18
|
+
return modelId
|
|
19
|
+
.toLowerCase()
|
|
20
|
+
.replace(/^.*\//, "")
|
|
21
|
+
.replace(/^anthropic\./, "")
|
|
22
|
+
.replace(/-v\d+:\d+$/, "")
|
|
23
|
+
.replace(/\./g, "-");
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Parse the generation out of a family-first Claude ID such as
|
|
27
|
+
* `claude-opus-4-8`, `claude-sonnet-5`, `claude-fable-5-1`, a dated
|
|
28
|
+
* `claude-haiku-4-5-20251001`, or a prefixed / dotted variant. Legacy
|
|
29
|
+
* version-first IDs (`claude-3-5-sonnet-…`, `claude-2.1`) and non-Claude IDs
|
|
30
|
+
* return `undefined`.
|
|
31
|
+
*/
|
|
32
|
+
export function parseClaudeGeneration(modelId) {
|
|
33
|
+
// Minor is 1-2 digits so an 8-digit date suffix (`-20250514`) is never
|
|
34
|
+
// mistaken for a minor version.
|
|
35
|
+
const m = /^claude-(opus|sonnet|haiku|fable|mythos)-(\d+)(?:-(\d{1,2}))?(?:-\d{8})?$/.exec(normalizeClaudeId(modelId));
|
|
36
|
+
if (!m)
|
|
37
|
+
return undefined;
|
|
38
|
+
return {
|
|
39
|
+
family: m[1],
|
|
40
|
+
major: Number(m[2]),
|
|
41
|
+
minor: m[3] !== undefined ? Number(m[3]) : 0,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function atLeast(gen, major, minor) {
|
|
45
|
+
return gen.major > major || (gen.major === major && gen.minor >= minor);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sampling parameters were removed on Opus 4.7 and every later model (Opus
|
|
49
|
+
* 4.8, Opus 5, Sonnet 5, Fable, Mythos): sending them returns a 400. Every
|
|
50
|
+
* Claude 4.x model accepts at most one of `temperature` / `top_p` (sending
|
|
51
|
+
* both is a 400). Claude 3.x and unrecognized IDs accept both.
|
|
52
|
+
*/
|
|
53
|
+
export function claudeSamplingSupport(modelId) {
|
|
54
|
+
const gen = parseClaudeGeneration(modelId);
|
|
55
|
+
if (!gen)
|
|
56
|
+
return "both";
|
|
57
|
+
if (atLeast(gen, 4, 7))
|
|
58
|
+
return "none";
|
|
59
|
+
if (gen.major >= 4)
|
|
60
|
+
return "one";
|
|
61
|
+
return "both";
|
|
62
|
+
}
|
|
63
|
+
/** Anthropic's accepted `temperature` range; OpenAI's is 0..2. */
|
|
64
|
+
export const CLAUDE_TEMPERATURE_MAX = 1;
|
|
65
|
+
/**
|
|
66
|
+
* Effort levels a generation accepts under `output_config.effort`; empty when
|
|
67
|
+
* effort is unsupported. `xhigh` arrived with Opus 4.7; `max` with 4.6; in
|
|
68
|
+
* the 4.5 generation only Opus 4.5 had an effort parameter at all (Sonnet
|
|
69
|
+
* 4.5 and Haiku 4.5 reject it).
|
|
70
|
+
*/
|
|
71
|
+
export function claudeEffortLadder(modelId) {
|
|
72
|
+
const gen = parseClaudeGeneration(modelId);
|
|
73
|
+
if (!gen)
|
|
74
|
+
return [];
|
|
75
|
+
if (atLeast(gen, 4, 7))
|
|
76
|
+
return ["low", "medium", "high", "xhigh", "max"];
|
|
77
|
+
if (atLeast(gen, 4, 6))
|
|
78
|
+
return ["low", "medium", "high", "max"];
|
|
79
|
+
if (atLeast(gen, 4, 5))
|
|
80
|
+
return gen.family === "opus" ? ["low", "medium", "high"] : [];
|
|
81
|
+
return [];
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Last-assistant-turn prefill returns a 400 on Opus 4.6 / Sonnet 4.6 and every
|
|
85
|
+
* later model. Older generations still accept a trailing assistant message.
|
|
86
|
+
*/
|
|
87
|
+
export function claudeSupportsPrefill(modelId) {
|
|
88
|
+
const gen = parseClaudeGeneration(modelId);
|
|
89
|
+
if (!gen)
|
|
90
|
+
return true;
|
|
91
|
+
return !atLeast(gen, 4, 6);
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Native JSON-schema structured outputs (`output_config.format`) shipped with
|
|
95
|
+
* the 4.5 generation (Sonnet 4.5, Haiku 4.5, Opus 4.1) and every model since.
|
|
96
|
+
*/
|
|
97
|
+
export function claudeSupportsNativeJsonSchema(modelId) {
|
|
98
|
+
const gen = parseClaudeGeneration(modelId);
|
|
99
|
+
if (!gen)
|
|
100
|
+
return false;
|
|
101
|
+
if (atLeast(gen, 4, 5))
|
|
102
|
+
return true;
|
|
103
|
+
return gen.family === "opus" && gen.major === 4 && gen.minor === 1;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Claude Fable 5.1 and Claude Mythos 5.1 return a 400 for forced tool use
|
|
107
|
+
* (`tool_choice` `any` / `tool`); everything else still honours it.
|
|
108
|
+
*/
|
|
109
|
+
export function claudeSupportsForcedToolChoice(modelId) {
|
|
110
|
+
const gen = parseClaudeGeneration(modelId);
|
|
111
|
+
if (!gen)
|
|
112
|
+
return true;
|
|
113
|
+
if (gen.family !== "fable" && gen.family !== "mythos")
|
|
114
|
+
return true;
|
|
115
|
+
return !atLeast(gen, 5, 1);
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=claude-generation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-generation.js","sourceRoot":"","sources":["../src/claude-generation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAQH;;;;GAIG;AACH,SAAS,iBAAiB,CAAC,OAAe;IACzC,OAAO,OAAO;SACZ,WAAW,EAAE;SACb,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;SACpB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;SACzB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACpD,uEAAuE;IACvE,gCAAgC;IAChC,MAAM,CAAC,GAAG,2EAA2E,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;IACvH,IAAI,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IACzB,OAAO;QACN,MAAM,EAAE,CAAC,CAAC,CAAC,CAA+B;QAC1C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnB,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;KAC5C,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,GAAqB,EAAE,KAAa,EAAE,KAAa;IACnE,OAAO,GAAG,CAAC,KAAK,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,KAAK,IAAI,GAAG,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;AACzE,CAAC;AAKD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACpD,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,MAAM,CAAC;IACxB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACjC,OAAO,MAAM,CAAC;AACf,CAAC;AAED,kEAAkE;AAClE,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC;AAIxC;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAe;IACjD,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAC;IACpB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACtF,OAAO,EAAE,CAAC;AACX,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAe;IACpD,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAe;IAC7D,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,GAAG,CAAC,KAAK,KAAK,CAAC,CAAC;AACpE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAe;IAC7D,MAAM,GAAG,GAAG,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IACtB,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,IAAI,GAAG,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnE,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `kosha doctor` — surface deprecation warnings and provider health at a
|
|
3
|
+
* glance. Pure projection over the registry: it reports what kosha already
|
|
4
|
+
* knows (deprecationDate, replacedBy, breaker state, routing reliability)
|
|
5
|
+
* without making any extra network calls.
|
|
6
|
+
*
|
|
7
|
+
* Pair with `kosha refresh` if you want the freshest deprecation metadata
|
|
8
|
+
* from each provider.
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import type { ModelRegistry } from "./registry.js";
|
|
12
|
+
/** Exit code `doctor` uses to fail a CI run without looking like a crash. */
|
|
13
|
+
export declare const DOCTOR_CI_EXIT_CODE = 2;
|
|
14
|
+
/** Default deprecation window in days when `--deprecation-window` is absent. */
|
|
15
|
+
export declare const DOCTOR_DEFAULT_DEPRECATION_WINDOW = 30;
|
|
16
|
+
export declare function cmdDoctor(registry: ModelRegistry, flags: Record<string, string | boolean>): Promise<void>;
|
|
17
|
+
//# sourceMappingURL=cli-cmd-doctor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-cmd-doctor.d.ts","sourceRoot":"","sources":["../src/cli-cmd-doctor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAanD,6EAA6E;AAC7E,eAAO,MAAM,mBAAmB,IAAI,CAAC;AAErC,gFAAgF;AAChF,eAAO,MAAM,iCAAiC,KAAK,CAAC;AAsBpD,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyC/G"}
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `kosha doctor` — surface deprecation warnings and provider health at a
|
|
3
|
+
* glance. Pure projection over the registry: it reports what kosha already
|
|
4
|
+
* knows (deprecationDate, replacedBy, breaker state, routing reliability)
|
|
5
|
+
* without making any extra network calls.
|
|
6
|
+
*
|
|
7
|
+
* Pair with `kosha refresh` if you want the freshest deprecation metadata
|
|
8
|
+
* from each provider.
|
|
9
|
+
* @module
|
|
10
|
+
*/
|
|
11
|
+
import { c, CYAN, DIM, GREEN, RED, YELLOW } from "./cli-format.js";
|
|
12
|
+
/** Exit code `doctor` uses to fail a CI run without looking like a crash. */
|
|
13
|
+
export const DOCTOR_CI_EXIT_CODE = 2;
|
|
14
|
+
/** Default deprecation window in days when `--deprecation-window` is absent. */
|
|
15
|
+
export const DOCTOR_DEFAULT_DEPRECATION_WINDOW = 30;
|
|
16
|
+
export async function cmdDoctor(registry, flags) {
|
|
17
|
+
const f = flags;
|
|
18
|
+
// Hydrate from the disk cache without refetching from provider APIs:
|
|
19
|
+
// `doctor` is observational, never a write.
|
|
20
|
+
try {
|
|
21
|
+
await registry.discover();
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
// Even if discovery fails, we can still report on whatever the cached
|
|
25
|
+
// registry holds — that's the point of `doctor`.
|
|
26
|
+
}
|
|
27
|
+
const models = registry.models();
|
|
28
|
+
const deprecations = collectDeprecations(models);
|
|
29
|
+
const providers = uniqueProviderIds(models);
|
|
30
|
+
const healthFindings = providers
|
|
31
|
+
.map((providerId) => projectHealth(registry, providerId))
|
|
32
|
+
.filter((row) => row !== null);
|
|
33
|
+
if (f.json) {
|
|
34
|
+
process.stdout.write(`${JSON.stringify({ deprecations, health: healthFindings }, null, 2)}\n`);
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
renderDeprecations(deprecations);
|
|
38
|
+
renderHealth(healthFindings);
|
|
39
|
+
}
|
|
40
|
+
// CI gate: when `--ci` (or its `--fail-on-warning` alias) is set, fail the
|
|
41
|
+
// process if any finding trips the gate. Off by default so `doctor` stays
|
|
42
|
+
// advisory for interactive use. The decision reuses the same deprecation
|
|
43
|
+
// data rendered above — no second source of truth.
|
|
44
|
+
const ciFailures = collectCiFailures(f, deprecations);
|
|
45
|
+
if (ciFailures.length > 0) {
|
|
46
|
+
const windowDays = parseDeprecationWindow(f["deprecation-window"]);
|
|
47
|
+
console.error(c(RED, `kosha doctor: ${ciFailures.length} lifecycle finding(s) fail the --ci gate (window=${windowDays}d).`));
|
|
48
|
+
process.exit(DOCTOR_CI_EXIT_CODE);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* The subset of deprecation findings that trip the CI gate, or an empty array
|
|
53
|
+
* when CI mode is off (no `--ci` / `--fail-on-warning`) so {@link cmdDoctor}
|
|
54
|
+
* stays advisory by default.
|
|
55
|
+
*/
|
|
56
|
+
function collectCiFailures(f, findings) {
|
|
57
|
+
if (!ciEnabled(f))
|
|
58
|
+
return [];
|
|
59
|
+
const windowDays = parseDeprecationWindow(f["deprecation-window"]);
|
|
60
|
+
return findings.filter((finding) => tripsCiGate(finding, windowDays));
|
|
61
|
+
}
|
|
62
|
+
/** `--ci` and `--fail-on-warning` are aliases; either form opts into CI mode. */
|
|
63
|
+
function ciEnabled(f) {
|
|
64
|
+
return Boolean(f.ci ?? f["fail-on-warning"]);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* A finding trips the gate when the model is already deprecated/retired, or
|
|
68
|
+
* when its sunset falls inside the configured window. A far-future sunset on
|
|
69
|
+
* an otherwise healthy model stays advisory.
|
|
70
|
+
*/
|
|
71
|
+
function tripsCiGate(finding, windowDays) {
|
|
72
|
+
if (finding.status === "deprecated" || finding.status === "retired")
|
|
73
|
+
return true;
|
|
74
|
+
if (finding.daysUntilSunset !== null && finding.daysUntilSunset <= windowDays)
|
|
75
|
+
return true;
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Parse `--deprecation-window <days>`. Falls back to the default on a missing
|
|
80
|
+
* or malformed value (bare flag, non-numeric, negative) so `doctor` never
|
|
81
|
+
* crashes inside a CI run over a bad argument.
|
|
82
|
+
*/
|
|
83
|
+
function parseDeprecationWindow(raw) {
|
|
84
|
+
if (raw === undefined || raw === true || raw === false) {
|
|
85
|
+
return DOCTOR_DEFAULT_DEPRECATION_WINDOW;
|
|
86
|
+
}
|
|
87
|
+
const parsed = Number.parseInt(String(raw), 10);
|
|
88
|
+
if (!Number.isFinite(parsed) || parsed < 0)
|
|
89
|
+
return DOCTOR_DEFAULT_DEPRECATION_WINDOW;
|
|
90
|
+
return parsed;
|
|
91
|
+
}
|
|
92
|
+
function collectDeprecations(models) {
|
|
93
|
+
const today = todayMs();
|
|
94
|
+
const findings = [];
|
|
95
|
+
for (const model of models) {
|
|
96
|
+
const status = model.status ?? null;
|
|
97
|
+
const deprecationDate = model.deprecationDate ?? null;
|
|
98
|
+
const replacedBy = model.replacedBy ?? null;
|
|
99
|
+
if (!status && !deprecationDate && !replacedBy)
|
|
100
|
+
continue;
|
|
101
|
+
if (status !== "deprecated" && status !== "retired" && !deprecationDate)
|
|
102
|
+
continue;
|
|
103
|
+
findings.push({
|
|
104
|
+
modelId: model.id,
|
|
105
|
+
provider: model.provider,
|
|
106
|
+
status,
|
|
107
|
+
deprecationDate,
|
|
108
|
+
daysUntilSunset: deprecationDate ? daysBetween(today, deprecationDate) : null,
|
|
109
|
+
replacedBy,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
findings.sort((a, b) => {
|
|
113
|
+
// Soonest sunset first; retired models bubble to the top.
|
|
114
|
+
const aKey = a.daysUntilSunset ?? Number.POSITIVE_INFINITY;
|
|
115
|
+
const bKey = b.daysUntilSunset ?? Number.POSITIVE_INFINITY;
|
|
116
|
+
if (aKey !== bKey)
|
|
117
|
+
return aKey - bKey;
|
|
118
|
+
return a.modelId.localeCompare(b.modelId);
|
|
119
|
+
});
|
|
120
|
+
return findings;
|
|
121
|
+
}
|
|
122
|
+
function uniqueProviderIds(models) {
|
|
123
|
+
return Array.from(new Set(models.map((m) => m.provider))).sort();
|
|
124
|
+
}
|
|
125
|
+
function projectHealth(registry, providerId) {
|
|
126
|
+
try {
|
|
127
|
+
const h = registry.providerRouteHealth(providerId);
|
|
128
|
+
return {
|
|
129
|
+
providerId: h.providerId,
|
|
130
|
+
breakerState: h.breakerState,
|
|
131
|
+
available: h.available,
|
|
132
|
+
reliabilityScore: h.reliabilityScore,
|
|
133
|
+
p95LatencyMs: h.p95LatencyMs,
|
|
134
|
+
timeoutRate: h.timeoutRate,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
catch {
|
|
138
|
+
return null;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function renderDeprecations(findings) {
|
|
142
|
+
process.stdout.write(`${c(CYAN, "Model lifecycle")}\n`);
|
|
143
|
+
if (findings.length === 0) {
|
|
144
|
+
process.stdout.write(c(DIM, " No deprecation signals from any provider catalogue.\n\n"));
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
for (const f of findings) {
|
|
148
|
+
const days = f.daysUntilSunset;
|
|
149
|
+
let tag;
|
|
150
|
+
if (f.status === "retired")
|
|
151
|
+
tag = c(RED, "retired");
|
|
152
|
+
else if (days !== null && days <= 14)
|
|
153
|
+
tag = c(RED, `sunsets in ${days}d`);
|
|
154
|
+
else if (days !== null && days <= 60)
|
|
155
|
+
tag = c(YELLOW, `sunsets in ${days}d`);
|
|
156
|
+
else if (f.status === "deprecated")
|
|
157
|
+
tag = c(YELLOW, "deprecated");
|
|
158
|
+
else if (days !== null)
|
|
159
|
+
tag = c(DIM, `sunsets in ${days}d`);
|
|
160
|
+
else
|
|
161
|
+
tag = c(DIM, f.status ?? "unknown");
|
|
162
|
+
const replacement = f.replacedBy ? c(DIM, ` -> ${f.replacedBy}`) : "";
|
|
163
|
+
process.stdout.write(` ${tag} ${f.provider}/${f.modelId}${replacement}\n`);
|
|
164
|
+
}
|
|
165
|
+
process.stdout.write("\n");
|
|
166
|
+
}
|
|
167
|
+
function renderHealth(findings) {
|
|
168
|
+
process.stdout.write(`${c(CYAN, "Provider health")}\n`);
|
|
169
|
+
if (findings.length === 0) {
|
|
170
|
+
process.stdout.write(c(DIM, " No providers in the registry yet — run `kosha discover`.\n"));
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
for (const h of findings) {
|
|
174
|
+
const tag = h.available
|
|
175
|
+
? h.reliabilityScore >= 0.95
|
|
176
|
+
? c(GREEN, "ok")
|
|
177
|
+
: c(YELLOW, "degraded")
|
|
178
|
+
: c(RED, "open");
|
|
179
|
+
const p95 = h.p95LatencyMs !== null ? `${h.p95LatencyMs}ms` : "no samples";
|
|
180
|
+
const reliability = (h.reliabilityScore * 100).toFixed(0);
|
|
181
|
+
process.stdout.write(` ${tag} ${h.providerId.padEnd(14)} ${c(DIM, `reliability=${reliability}%`)} ${c(DIM, `p95=${p95}`)}\n`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
function daysBetween(nowMs, isoDate) {
|
|
185
|
+
const date = Date.parse(isoDate);
|
|
186
|
+
if (!Number.isFinite(date))
|
|
187
|
+
return null;
|
|
188
|
+
return Math.floor((date - nowMs) / 86_400_000);
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Today's wall-clock midnight as ms. Wrapped so tests can swap it out;
|
|
192
|
+
* a deprecation finding rendering is otherwise time-dependent and racy.
|
|
193
|
+
*/
|
|
194
|
+
function todayMs() {
|
|
195
|
+
const now = new Date();
|
|
196
|
+
now.setHours(0, 0, 0, 0);
|
|
197
|
+
return now.getTime();
|
|
198
|
+
}
|
|
199
|
+
//# sourceMappingURL=cli-cmd-doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-cmd-doctor.js","sourceRoot":"","sources":["../src/cli-cmd-doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-cmd-model.js
CHANGED
|
@@ -120,10 +120,10 @@ export async function cmdResolve(registry, alias, flags) {
|
|
|
120
120
|
// Downstream tools that pipe `kosha resolve --json` were missing all of
|
|
121
121
|
// this and had to follow up with `kosha model`. Now one call is enough.
|
|
122
122
|
//
|
|
123
|
-
// Fallback: aliases like `sonnet → claude-sonnet-
|
|
123
|
+
// Fallback: aliases like `sonnet → claude-sonnet-5` may resolve to
|
|
124
124
|
// canonical IDs that no provider serves directly (e.g. when Anthropic
|
|
125
125
|
// API discovery is unauthenticated and OpenRouter exposes the same
|
|
126
|
-
// model as `anthropic/claude-sonnet-
|
|
126
|
+
// model as `anthropic/claude-sonnet-5`). In that case I lean on
|
|
127
127
|
// modelRoutes(), which normalizes IDs and returns every provider route
|
|
128
128
|
// — picking the first as the representative for pricing display.
|
|
129
129
|
let model = registry.model(resolved);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-cmd-model.js","sourceRoot":"","sources":["../src/cli-cmd-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli-cmd-model.js","sourceRoot":"","sources":["../src/cli-cmd-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `kosha spend` — roll up the JSONL spend ledger written by the proxy.
|
|
3
|
+
*
|
|
4
|
+
* No registry / network access; pure file read + arithmetic. Supports
|
|
5
|
+
* `--since <iso-date>`, `--tenant <name>`, and `--json` for programmatic
|
|
6
|
+
* consumers.
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
export declare function cmdSpend(_unused: unknown, flags: Record<string, string | boolean>): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=cli-cmd-spend.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-cmd-spend.d.ts","sourceRoot":"","sources":["../src/cli-cmd-spend.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsBH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA+CvG"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `kosha spend` — roll up the JSONL spend ledger written by the proxy.
|
|
3
|
+
*
|
|
4
|
+
* No registry / network access; pure file read + arithmetic. Supports
|
|
5
|
+
* `--since <iso-date>`, `--tenant <name>`, and `--json` for programmatic
|
|
6
|
+
* consumers.
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { readFile, readdir } from "fs/promises";
|
|
10
|
+
import { basename, dirname, join } from "node:path";
|
|
11
|
+
import { c, CYAN, DIM, GREEN } from "./cli-format.js";
|
|
12
|
+
import { DEFAULT_LEDGER_PATH, isRequestRow, ledgerRowUsd } from "./cost.js";
|
|
13
|
+
export async function cmdSpend(_unused, flags) {
|
|
14
|
+
const f = flags;
|
|
15
|
+
const ledgerPath = typeof f.ledger === "string" ? f.ledger : DEFAULT_LEDGER_PATH;
|
|
16
|
+
const since = typeof f.since === "string" ? Date.parse(f.since) : Number.NEGATIVE_INFINITY;
|
|
17
|
+
const until = typeof f.until === "string" ? Date.parse(f.until) : Number.POSITIVE_INFINITY;
|
|
18
|
+
const tenantFilter = typeof f.tenant === "string" ? f.tenant : null;
|
|
19
|
+
const rows = await loadLedger(ledgerPath);
|
|
20
|
+
const inWindow = rows.filter((r) => r.ts >= (Number.isFinite(since) ? since : Number.NEGATIVE_INFINITY) &&
|
|
21
|
+
r.ts < (Number.isFinite(until) ? until : Number.POSITIVE_INFINITY) &&
|
|
22
|
+
(tenantFilter === null || r.tenant === tenantFilter));
|
|
23
|
+
const total = inWindow.reduce((sum, r) => sum + ledgerRowUsd(r), 0);
|
|
24
|
+
const requests = inWindow.filter(isRequestRow);
|
|
25
|
+
// A request is reconciled when its own row carries upstream usage or a
|
|
26
|
+
// later adjustment row amended it.
|
|
27
|
+
const adjusted = new Set(inWindow.filter((r) => !isRequestRow(r)).map((r) => r.requestId));
|
|
28
|
+
const reconciled = requests.filter((r) => r.usageSource === "upstream" || (r.requestId && adjusted.has(r.requestId))).length;
|
|
29
|
+
const byProvider = bucketBy(inWindow, (r) => r.provider);
|
|
30
|
+
const byModel = bucketBy(inWindow, (r) => `${r.provider}/${r.modelId}`);
|
|
31
|
+
const byTenant = bucketBy(inWindow, (r) => r.tenant ?? "(no tenant)");
|
|
32
|
+
if (f.json) {
|
|
33
|
+
process.stdout.write(`${JSON.stringify({
|
|
34
|
+
ledgerPath,
|
|
35
|
+
rows: requests.length,
|
|
36
|
+
reconciledRows: reconciled,
|
|
37
|
+
totalUsd: total,
|
|
38
|
+
byProvider: Object.fromEntries(byProvider),
|
|
39
|
+
byModel: Object.fromEntries(byModel),
|
|
40
|
+
byTenant: Object.fromEntries(byTenant),
|
|
41
|
+
}, null, 2)}\n`);
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
process.stdout.write(`${c(CYAN, "Spend summary")} ${c(DIM, `(${requests.length} requests from ${ledgerPath})`)}\n`);
|
|
45
|
+
const label = reconciled === requests.length && reconciled > 0
|
|
46
|
+
? "total (all requests reconciled with upstream usage)"
|
|
47
|
+
: reconciled > 0
|
|
48
|
+
? `total (${reconciled}/${requests.length} requests reconciled with upstream usage, rest estimated)`
|
|
49
|
+
: "total estimated";
|
|
50
|
+
process.stdout.write(` ${c(GREEN, `$${total.toFixed(4)}`)} ${c(DIM, label)}\n\n`);
|
|
51
|
+
renderBucket("By provider", byProvider);
|
|
52
|
+
renderBucket("By model", byModel);
|
|
53
|
+
renderBucket("By tenant", byTenant);
|
|
54
|
+
}
|
|
55
|
+
async function loadLedger(path) {
|
|
56
|
+
const rows = [];
|
|
57
|
+
const ingest = async (file) => {
|
|
58
|
+
let raw;
|
|
59
|
+
try {
|
|
60
|
+
raw = await readFile(file, "utf-8");
|
|
61
|
+
}
|
|
62
|
+
catch (err) {
|
|
63
|
+
// Missing file is fine — the legacy ledger and any given monthly
|
|
64
|
+
// partition may not exist yet.
|
|
65
|
+
if (err?.code === "ENOENT")
|
|
66
|
+
return;
|
|
67
|
+
throw err;
|
|
68
|
+
}
|
|
69
|
+
for (const line of raw.split("\n")) {
|
|
70
|
+
if (!line)
|
|
71
|
+
continue;
|
|
72
|
+
try {
|
|
73
|
+
rows.push(JSON.parse(line));
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
// skip corrupt line
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
};
|
|
80
|
+
// Legacy append-only ledger.jsonl (pre-rotation) plus the monthly
|
|
81
|
+
// ledger-YYYY-MM.jsonl partitions written since rotation shipped.
|
|
82
|
+
await ingest(path);
|
|
83
|
+
try {
|
|
84
|
+
const dir = dirname(path);
|
|
85
|
+
for (const entry of await readdir(dir)) {
|
|
86
|
+
if (entry !== basename(path) && entry.startsWith("ledger-") && entry.endsWith(".jsonl")) {
|
|
87
|
+
await ingest(join(dir, entry));
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
if (err?.code !== "ENOENT")
|
|
93
|
+
throw err;
|
|
94
|
+
}
|
|
95
|
+
return rows;
|
|
96
|
+
}
|
|
97
|
+
function bucketBy(rows, keyFn) {
|
|
98
|
+
const out = new Map();
|
|
99
|
+
for (const row of rows) {
|
|
100
|
+
const key = keyFn(row);
|
|
101
|
+
const cur = out.get(key) ?? {
|
|
102
|
+
count: 0,
|
|
103
|
+
totalUsd: 0,
|
|
104
|
+
totalInputTokens: 0,
|
|
105
|
+
totalOutputTokens: 0,
|
|
106
|
+
};
|
|
107
|
+
if (isRequestRow(row)) {
|
|
108
|
+
cur.count += 1;
|
|
109
|
+
cur.totalInputTokens += row.actualInputTokens ?? row.estimatedInputTokens ?? 0;
|
|
110
|
+
cur.totalOutputTokens += row.actualOutputTokens ?? row.estimatedOutputTokens ?? 0;
|
|
111
|
+
}
|
|
112
|
+
else {
|
|
113
|
+
cur.totalInputTokens += row.adjustmentInputTokens ?? 0;
|
|
114
|
+
cur.totalOutputTokens += row.adjustmentOutputTokens ?? 0;
|
|
115
|
+
}
|
|
116
|
+
cur.totalUsd += ledgerRowUsd(row);
|
|
117
|
+
out.set(key, cur);
|
|
118
|
+
}
|
|
119
|
+
return new Map(Array.from(out.entries()).sort((a, b) => b[1].totalUsd - a[1].totalUsd));
|
|
120
|
+
}
|
|
121
|
+
function renderBucket(title, bucket) {
|
|
122
|
+
if (bucket.size === 0)
|
|
123
|
+
return;
|
|
124
|
+
process.stdout.write(` ${c(CYAN, title)}\n`);
|
|
125
|
+
for (const [key, sum] of bucket) {
|
|
126
|
+
process.stdout.write(` ${c(GREEN, `$${sum.totalUsd.toFixed(4)}`)} ${key.padEnd(28)} ${c(DIM, `${sum.count} req`)}\n`);
|
|
127
|
+
}
|
|
128
|
+
process.stdout.write("\n");
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=cli-cmd-spend.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli-cmd-spend.js","sourceRoot":"","sources":["../src/cli-cmd-spend.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-commands.d.ts
CHANGED
|
@@ -123,7 +123,10 @@ export declare function cmdRefresh(registry: ModelRegistry, flags: Record<string
|
|
|
123
123
|
* The server module is loaded via dynamic import to avoid pulling in Hono
|
|
124
124
|
* for purely CLI-based usage.
|
|
125
125
|
*
|
|
126
|
-
* @param flags CLI flags
|
|
126
|
+
* @param flags CLI flags: `--port <number>` (default `3000`) and
|
|
127
|
+
* `--host <address>` (default `127.0.0.1`, or `KOSHA_HOST`).
|
|
128
|
+
* Use `--host 0.0.0.0` to expose the server on the network —
|
|
129
|
+
* set `KOSHA_PROXY_TOKEN` first, the proxy spends your keys.
|
|
127
130
|
*/
|
|
128
131
|
export declare function cmdServe(flags: Record<string, string | boolean>): Promise<void>;
|
|
129
132
|
export { cmdModel, cmdResolve, cmdRoutes } from "./cli-cmd-model.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAM9C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAOvC,CAAC;AAmBF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAKrE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7E;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAO5K;AAqDD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjH;AAID;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/G;AAID;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B/G;AAID;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7G;AAID;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9H;AAID;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlH;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhH;AAID
|
|
1
|
+
{"version":3,"file":"cli-commands.d.ts","sourceRoot":"","sources":["../src/cli-commands.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAa,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAMnD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAM9C;;;GAGG;AACH,eAAO,MAAM,mBAAmB,EAAE,MAAM,EAOvC,CAAC;AAmBF;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,YAAY,GAAG,MAAM,CAKrE;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA0B7E;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,gBAAgB,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAAG,MAAM,EAAE,CAO5K;AAqDD;;;;;;GAMG;AACH,wBAAsB,WAAW,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAUjH;AAID;;;;;;;;GAQG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB/G;AAID;;;;;;;;;GASG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B/G;AAID;;;;;;GAMG;AACH,wBAAsB,OAAO,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAmB7G;AAID;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAuB9H;AAID;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAyBlH;AAID;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhH;AAID;;;;;;;;;GASG;AACH,wBAAsB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAiBrF;AAMD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACxF,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC"}
|
package/dist/cli-commands.js
CHANGED
|
@@ -353,7 +353,10 @@ export async function cmdRefresh(registry, flags) {
|
|
|
353
353
|
* The server module is loaded via dynamic import to avoid pulling in Hono
|
|
354
354
|
* for purely CLI-based usage.
|
|
355
355
|
*
|
|
356
|
-
* @param flags CLI flags
|
|
356
|
+
* @param flags CLI flags: `--port <number>` (default `3000`) and
|
|
357
|
+
* `--host <address>` (default `127.0.0.1`, or `KOSHA_HOST`).
|
|
358
|
+
* Use `--host 0.0.0.0` to expose the server on the network —
|
|
359
|
+
* set `KOSHA_PROXY_TOKEN` first, the proxy spends your keys.
|
|
357
360
|
*/
|
|
358
361
|
export async function cmdServe(flags) {
|
|
359
362
|
const port = typeof flags.port === "string" ? parseInt(flags.port, 10) : 3000;
|
|
@@ -361,9 +364,14 @@ export async function cmdServe(flags) {
|
|
|
361
364
|
console.error(c(RED, `Invalid port: ${flags.port}`));
|
|
362
365
|
process.exit(1);
|
|
363
366
|
}
|
|
367
|
+
if (flags.host !== undefined && typeof flags.host !== "string") {
|
|
368
|
+
console.error(c(RED, "--host requires a value (e.g. --host 0.0.0.0)"));
|
|
369
|
+
process.exit(1);
|
|
370
|
+
}
|
|
371
|
+
const host = typeof flags.host === "string" ? flags.host : undefined;
|
|
364
372
|
// Dynamic import keeps Hono out of the critical path for non-serve commands
|
|
365
373
|
const { startServer } = await import("./server.js");
|
|
366
|
-
await startServer(port);
|
|
374
|
+
await startServer(port, host);
|
|
367
375
|
}
|
|
368
376
|
// ---------------------------------------------------------------------------
|
|
369
377
|
// Re-exports from split modules
|