@pentoshi/clai 4.0.3 → 4.2.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 +45 -9
- package/dist/agent/compaction-executor.d.ts +68 -0
- package/dist/agent/compaction-executor.js +343 -0
- package/dist/agent/compaction-executor.js.map +1 -0
- package/dist/agent/confirm-port.js +6 -3
- package/dist/agent/confirm-port.js.map +1 -1
- package/dist/agent/context-breakdown.js +2 -0
- package/dist/agent/context-breakdown.js.map +1 -1
- package/dist/agent/context-manager.d.ts +23 -9
- package/dist/agent/context-manager.js +72 -43
- package/dist/agent/context-manager.js.map +1 -1
- package/dist/agent/events.d.ts +3 -0
- package/dist/agent/loop-guard.d.ts +2 -0
- package/dist/agent/loop-guard.js +48 -3
- package/dist/agent/loop-guard.js.map +1 -1
- package/dist/agent/prompt-composer.js +6 -6
- package/dist/agent/prompt-composer.js.map +1 -1
- package/dist/agent/reliability-policy.d.ts +1 -0
- package/dist/agent/reliability-policy.js +6 -3
- package/dist/agent/reliability-policy.js.map +1 -1
- package/dist/agent/request-accounting.d.ts +97 -0
- package/dist/agent/request-accounting.js +207 -0
- package/dist/agent/request-accounting.js.map +1 -0
- package/dist/agent/request-budget.d.ts +2 -2
- package/dist/agent/request-budget.js +2 -4
- package/dist/agent/request-budget.js.map +1 -1
- package/dist/agent/runner.d.ts +8 -2
- package/dist/agent/runner.js +412 -181
- package/dist/agent/runner.js.map +1 -1
- package/dist/agent/session-title.d.ts +0 -26
- package/dist/agent/session-title.js +0 -80
- package/dist/agent/session-title.js.map +1 -1
- package/dist/agent/tool-history.d.ts +2 -2
- package/dist/agent/tool-history.js +19 -6
- package/dist/agent/tool-history.js.map +1 -1
- package/dist/agent/turn-outcome.d.ts +1 -1
- package/dist/agent/turn-outcome.js +2 -12
- package/dist/agent/turn-outcome.js.map +1 -1
- package/dist/app/adapters/agent-event-adapter.js +19 -0
- package/dist/app/adapters/agent-event-adapter.js.map +1 -1
- package/dist/app/adapters/current-agent-adapter.js +4 -0
- package/dist/app/adapters/current-agent-adapter.js.map +1 -1
- package/dist/app/commands/catalog.js +23 -16
- package/dist/app/commands/catalog.js.map +1 -1
- package/dist/app/controllers/cancel-coordinator.d.ts +51 -0
- package/dist/app/controllers/cancel-coordinator.js +48 -0
- package/dist/app/controllers/cancel-coordinator.js.map +1 -0
- package/dist/app/controllers/session-compact-helper.d.ts +19 -2
- package/dist/app/controllers/session-compact-helper.js +100 -127
- package/dist/app/controllers/session-compact-helper.js.map +1 -1
- package/dist/app/controllers/session-context-usage.d.ts +32 -15
- package/dist/app/controllers/session-context-usage.js +186 -51
- package/dist/app/controllers/session-context-usage.js.map +1 -1
- package/dist/app/controllers/session-controller.d.ts +22 -11
- package/dist/app/controllers/session-controller.js +137 -92
- package/dist/app/controllers/session-controller.js.map +1 -1
- package/dist/app/controllers/session-naming.d.ts +31 -0
- package/dist/app/controllers/session-naming.js +173 -0
- package/dist/app/controllers/session-naming.js.map +1 -0
- package/dist/app/controllers/session-persistence.d.ts +2 -2
- package/dist/app/controllers/session-persistence.js +3 -6
- package/dist/app/controllers/session-persistence.js.map +1 -1
- package/dist/app/controllers/session-turn-request.d.ts +2 -1
- package/dist/app/controllers/session-turn-request.js +3 -0
- package/dist/app/controllers/session-turn-request.js.map +1 -1
- package/dist/app/controllers/turn-continuation.d.ts +0 -6
- package/dist/app/controllers/turn-continuation.js +4 -21
- package/dist/app/controllers/turn-continuation.js.map +1 -1
- package/dist/app/controllers/turn-controller.d.ts +2 -1
- package/dist/app/controllers/turn-controller.js +1 -0
- package/dist/app/controllers/turn-controller.js.map +1 -1
- package/dist/app/events/app-event.d.ts +9 -0
- package/dist/app/events/app-event.js.map +1 -1
- package/dist/app/ports/agent-port.d.ts +8 -1
- package/dist/app/ports/transcript-item.d.ts +9 -1
- package/dist/classic/app/ClassicApp.js +3 -3
- package/dist/classic/app/ClassicApp.js.map +1 -1
- package/dist/classic/app/app-wiring.js +1 -2
- package/dist/classic/app/app-wiring.js.map +1 -1
- package/dist/classic/app/wiring-interactions.js +4 -9
- package/dist/classic/app/wiring-interactions.js.map +1 -1
- package/dist/classic/blocks/TurnSummaryBlock.d.ts +3 -0
- package/dist/classic/blocks/TurnSummaryBlock.js +6 -0
- package/dist/classic/blocks/TurnSummaryBlock.js.map +1 -0
- package/dist/classic/blocks/tool-lines.js +2 -1
- package/dist/classic/blocks/tool-lines.js.map +1 -1
- package/dist/classic/blocks/turn-summary-lines.d.ts +3 -0
- package/dist/classic/blocks/turn-summary-lines.js +7 -0
- package/dist/classic/blocks/turn-summary-lines.js.map +1 -0
- package/dist/classic/chrome/status-rows.d.ts +0 -1
- package/dist/classic/chrome/status-rows.js +0 -12
- package/dist/classic/chrome/status-rows.js.map +1 -1
- package/dist/classic/feed/Feed.js +2 -0
- package/dist/classic/feed/Feed.js.map +1 -1
- package/dist/classic/feed/feed-blocks.d.ts +1 -1
- package/dist/classic/feed/feed-blocks.js +3 -0
- package/dist/classic/feed/feed-blocks.js.map +1 -1
- package/dist/classic/input/cancel-ladder.d.ts +2 -19
- package/dist/classic/input/cancel-ladder.js +13 -20
- package/dist/classic/input/cancel-ladder.js.map +1 -1
- package/dist/commands/providers.js +2 -0
- package/dist/commands/providers.js.map +1 -1
- package/dist/llm/adapters/anthropic-tools.d.ts +31 -14
- package/dist/llm/adapters/anthropic-tools.js +124 -29
- package/dist/llm/adapters/anthropic-tools.js.map +1 -1
- package/dist/llm/adapters/gemini-tools.d.ts +16 -4
- package/dist/llm/adapters/gemini-tools.js +117 -16
- package/dist/llm/adapters/gemini-tools.js.map +1 -1
- package/dist/llm/adapters/openai-tools.d.ts +13 -2
- package/dist/llm/adapters/openai-tools.js +58 -11
- package/dist/llm/adapters/openai-tools.js.map +1 -1
- package/dist/llm/agentrouter.js +68 -45
- package/dist/llm/agentrouter.js.map +1 -1
- package/dist/llm/anthropic.js +69 -36
- package/dist/llm/anthropic.js.map +1 -1
- package/dist/llm/aws-mantle.js +70 -32
- package/dist/llm/aws-mantle.js.map +1 -1
- package/dist/llm/bynara.js +26 -69
- package/dist/llm/bynara.js.map +1 -1
- package/dist/llm/capabilities.d.ts +2 -1
- package/dist/llm/capabilities.js +56 -1
- package/dist/llm/capabilities.js.map +1 -1
- package/dist/llm/context-snapshot.d.ts +100 -0
- package/dist/llm/context-snapshot.js +277 -0
- package/dist/llm/context-snapshot.js.map +1 -0
- package/dist/llm/context-windows.d.ts +10 -0
- package/dist/llm/context-windows.js +129 -0
- package/dist/llm/context-windows.js.map +1 -0
- package/dist/llm/custom-provider-profile.d.ts +75 -0
- package/dist/llm/custom-provider-profile.js +558 -0
- package/dist/llm/custom-provider-profile.js.map +1 -0
- package/dist/llm/custom-providers.d.ts +13 -1
- package/dist/llm/custom-providers.js +77 -25
- package/dist/llm/custom-providers.js.map +1 -1
- package/dist/llm/effort-fallback.d.ts +44 -0
- package/dist/llm/effort-fallback.js +101 -0
- package/dist/llm/effort-fallback.js.map +1 -0
- package/dist/llm/fireworks.d.ts +3 -0
- package/dist/llm/fireworks.js +103 -0
- package/dist/llm/fireworks.js.map +1 -0
- package/dist/llm/free.js +4 -0
- package/dist/llm/free.js.map +1 -1
- package/dist/llm/gemini.d.ts +1 -1
- package/dist/llm/gemini.js +89 -51
- package/dist/llm/gemini.js.map +1 -1
- package/dist/llm/groq.js +4 -0
- package/dist/llm/groq.js.map +1 -1
- package/dist/llm/hetzner.d.ts +3 -0
- package/dist/llm/hetzner.js +98 -0
- package/dist/llm/hetzner.js.map +1 -0
- package/dist/llm/http.d.ts +60 -10
- package/dist/llm/http.js +465 -156
- package/dist/llm/http.js.map +1 -1
- package/dist/llm/kimchi.js +4 -0
- package/dist/llm/kimchi.js.map +1 -1
- package/dist/llm/lightning.js +4 -0
- package/dist/llm/lightning.js.map +1 -1
- package/dist/llm/meta.d.ts +2 -0
- package/dist/llm/meta.js +839 -624
- package/dist/llm/meta.js.map +1 -1
- package/dist/llm/modal.js +4 -0
- package/dist/llm/modal.js.map +1 -1
- package/dist/llm/model-families.d.ts +9 -0
- package/dist/llm/model-families.js +39 -0
- package/dist/llm/model-families.js.map +1 -0
- package/dist/llm/nvidia.js +4 -0
- package/dist/llm/nvidia.js.map +1 -1
- package/dist/llm/ollama.js +44 -40
- package/dist/llm/ollama.js.map +1 -1
- package/dist/llm/openai.js +4 -0
- package/dist/llm/openai.js.map +1 -1
- package/dist/llm/openrouter.js +4 -0
- package/dist/llm/openrouter.js.map +1 -1
- package/dist/llm/operation-ledger.d.ts +60 -0
- package/dist/llm/operation-ledger.js +136 -0
- package/dist/llm/operation-ledger.js.map +1 -0
- package/dist/llm/operation-usage.d.ts +32 -0
- package/dist/llm/operation-usage.js +172 -0
- package/dist/llm/operation-usage.js.map +1 -0
- package/dist/llm/orcarouter.d.ts +7 -0
- package/dist/llm/orcarouter.js +166 -0
- package/dist/llm/orcarouter.js.map +1 -0
- package/dist/llm/provider-profile-layers.d.ts +7 -0
- package/dist/llm/provider-profile-layers.js +961 -0
- package/dist/llm/provider-profile-layers.js.map +1 -0
- package/dist/llm/provider-profile.d.ts +181 -0
- package/dist/llm/provider-profile.js +329 -0
- package/dist/llm/provider-profile.js.map +1 -0
- package/dist/llm/provider-profiles.d.ts +13 -0
- package/dist/llm/provider-profiles.js +86 -0
- package/dist/llm/provider-profiles.js.map +1 -0
- package/dist/llm/provider.d.ts +2 -0
- package/dist/llm/provider.js +198 -21
- package/dist/llm/provider.js.map +1 -1
- package/dist/llm/qwen-cloud.js +4 -0
- package/dist/llm/qwen-cloud.js.map +1 -1
- package/dist/llm/reasoning-artifacts.d.ts +101 -0
- package/dist/llm/reasoning-artifacts.js +440 -0
- package/dist/llm/reasoning-artifacts.js.map +1 -0
- package/dist/llm/request-fingerprint.d.ts +10 -0
- package/dist/llm/request-fingerprint.js +313 -0
- package/dist/llm/request-fingerprint.js.map +1 -0
- package/dist/llm/request-plan.d.ts +119 -0
- package/dist/llm/request-plan.js +279 -0
- package/dist/llm/request-plan.js.map +1 -0
- package/dist/llm/router.d.ts +19 -1
- package/dist/llm/router.js +504 -102
- package/dist/llm/router.js.map +1 -1
- package/dist/llm/stream-events.d.ts +47 -0
- package/dist/llm/stream-events.js +55 -0
- package/dist/llm/stream-events.js.map +1 -0
- package/dist/llm/stream-terminal.d.ts +30 -0
- package/dist/llm/stream-terminal.js +51 -0
- package/dist/llm/stream-terminal.js.map +1 -0
- package/dist/llm/token-estimate-calibration.d.ts +23 -0
- package/dist/llm/token-estimate-calibration.js +140 -0
- package/dist/llm/token-estimate-calibration.js.map +1 -0
- package/dist/llm/token-usage.d.ts +35 -5
- package/dist/llm/token-usage.js +212 -162
- package/dist/llm/token-usage.js.map +1 -1
- package/dist/llm/tokenrouter.js +13 -6
- package/dist/llm/tokenrouter.js.map +1 -1
- package/dist/modes/ask.js +11 -5
- package/dist/modes/ask.js.map +1 -1
- package/dist/noninteractive/start-noninteractive.js +31 -2
- package/dist/noninteractive/start-noninteractive.js.map +1 -1
- package/dist/noninteractive/stream-blocks.js +15 -4
- package/dist/noninteractive/stream-blocks.js.map +1 -1
- package/dist/prompts/embedded.js +1 -1
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/system.agent.md +6 -0
- package/dist/store/config.js +7 -1
- package/dist/store/config.js.map +1 -1
- package/dist/store/history.d.ts +2 -0
- package/dist/store/history.js +19 -10
- package/dist/store/history.js.map +1 -1
- package/dist/store/plan.js +20 -14
- package/dist/store/plan.js.map +1 -1
- package/dist/tools/elevated-shell.d.ts +1 -1
- package/dist/tools/elevated-shell.js +24 -72
- package/dist/tools/elevated-shell.js.map +1 -1
- package/dist/tools/fs.d.ts +5 -3
- package/dist/tools/fs.js +8 -5
- package/dist/tools/fs.js.map +1 -1
- package/dist/tools/nmap-runner.js +30 -36
- package/dist/tools/nmap-runner.js.map +1 -1
- package/dist/tools/sudo-session.d.ts +83 -0
- package/dist/tools/sudo-session.js +124 -0
- package/dist/tools/sudo-session.js.map +1 -0
- package/dist/tui-v2/app/App.js +9 -24
- package/dist/tui-v2/app/App.js.map +1 -1
- package/dist/tui-v2/components/plan/plan-view.js +5 -3
- package/dist/tui-v2/components/plan/plan-view.js.map +1 -1
- package/dist/tui-v2/components/status/context-limit-chip.js +2 -2
- package/dist/tui-v2/components/status/context-limit-chip.js.map +1 -1
- package/dist/tui-v2/components/status/status-line.js +1 -14
- package/dist/tui-v2/components/status/status-line.js.map +1 -1
- package/dist/tui-v2/components/transcript/intro-card.js +2 -1
- package/dist/tui-v2/components/transcript/intro-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/notice-row.d.ts +3 -1
- package/dist/tui-v2/components/transcript/notice-row.js +28 -3
- package/dist/tui-v2/components/transcript/notice-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/thinking-block.d.ts +0 -5
- package/dist/tui-v2/components/transcript/thinking-block.js +3 -8
- package/dist/tui-v2/components/transcript/thinking-block.js.map +1 -1
- package/dist/tui-v2/components/transcript/tool-card.js +16 -7
- package/dist/tui-v2/components/transcript/tool-card.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-row.d.ts +0 -2
- package/dist/tui-v2/components/transcript/transcript-row.js +7 -3
- package/dist/tui-v2/components/transcript/transcript-row.js.map +1 -1
- package/dist/tui-v2/components/transcript/transcript-view.js +1 -3
- package/dist/tui-v2/components/transcript/transcript-view.js.map +1 -1
- package/dist/tui-v2/composer/composer-editor.js +2 -1
- package/dist/tui-v2/composer/composer-editor.js.map +1 -1
- package/dist/types.d.ts +156 -1
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -1
- package/dist/ui-core/bootstrap/composition-root.d.ts +2 -0
- package/dist/ui-core/bootstrap/composition-root.js +26 -3
- package/dist/ui-core/bootstrap/composition-root.js.map +1 -1
- package/dist/ui-core/commands/picker-commands.js +11 -5
- package/dist/ui-core/commands/picker-commands.js.map +1 -1
- package/dist/ui-core/commands/session-commands.js +41 -5
- package/dist/ui-core/commands/session-commands.js.map +1 -1
- package/dist/ui-core/plan/plan-lifecycle.js +3 -2
- package/dist/ui-core/plan/plan-lifecycle.js.map +1 -1
- package/dist/ui-core/rendering/context-limit.js +4 -1
- package/dist/ui-core/rendering/context-limit.js.map +1 -1
- package/dist/ui-core/rendering/duration.d.ts +5 -0
- package/dist/ui-core/rendering/duration.js +43 -0
- package/dist/ui-core/rendering/duration.js.map +1 -0
- package/dist/ui-core/rendering/intro-header.js +2 -2
- package/dist/ui-core/rendering/intro-header.js.map +1 -1
- package/dist/ui-core/rendering/theme.d.ts +1 -0
- package/dist/ui-core/rendering/theme.js +2 -0
- package/dist/ui-core/rendering/theme.js.map +1 -1
- package/dist/ui-core/rendering/transcript-semantic.js +2 -0
- package/dist/ui-core/rendering/transcript-semantic.js.map +1 -1
- package/dist/ui-core/state/transcript-compaction.js +2 -0
- package/dist/ui-core/state/transcript-compaction.js.map +1 -1
- package/dist/ui-core/state/transcript-hydrate.js +34 -4
- package/dist/ui-core/state/transcript-hydrate.js.map +1 -1
- package/dist/ui-core/state/transcript-reducer.d.ts +5 -0
- package/dist/ui-core/state/transcript-reducer.js +96 -8
- package/dist/ui-core/state/transcript-reducer.js.map +1 -1
- package/dist/ui-core/state/transcript-store.d.ts +10 -1
- package/dist/ui-core/state/transcript-store.js +22 -1
- package/dist/ui-core/state/transcript-store.js.map +1 -1
- package/dist/ui-core/state/transcript-types.d.ts +9 -1
- package/dist/ui-core/state/transcript-types.js +3 -1
- 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 +6 -1
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { applyObservedControlRejections, resolveProviderProfile, } from "./provider-profile.js";
|
|
2
|
+
import { providerContextOverrideTokens } from "./token-usage.js";
|
|
3
|
+
import { FAMILY_LAYERS, modelLayerFor, providerDoc } from "./provider-profile-layers.js";
|
|
4
|
+
const NATIVE_WIRE_API = {
|
|
5
|
+
anthropic: "anthropic-messages",
|
|
6
|
+
gemini: "gemini-generate-content",
|
|
7
|
+
meta: "meta-responses",
|
|
8
|
+
ollama: "ollama-chat",
|
|
9
|
+
};
|
|
10
|
+
export function providerWireApi(provider, model) {
|
|
11
|
+
if (provider === "aws-mantle") {
|
|
12
|
+
return /(?:^|[./-])(?:anthropic|claude)(?:[./-]|$)/i.test(model)
|
|
13
|
+
? "anthropic-messages"
|
|
14
|
+
: "chat-completions";
|
|
15
|
+
}
|
|
16
|
+
return NATIVE_WIRE_API[provider] ?? "chat-completions";
|
|
17
|
+
}
|
|
18
|
+
export function builtInProfileLayers(provider, model) {
|
|
19
|
+
const family = FAMILY_LAYERS[provider];
|
|
20
|
+
const modelLayer = modelLayerFor(provider, model);
|
|
21
|
+
const overrideTokens = providerContextOverrideTokens(provider, model);
|
|
22
|
+
const familyWithLimits = family
|
|
23
|
+
? {
|
|
24
|
+
...family,
|
|
25
|
+
limits: overrideTokens
|
|
26
|
+
? { contextTokens: overrideTokens, source: "catalog" }
|
|
27
|
+
: family.limits,
|
|
28
|
+
}
|
|
29
|
+
: undefined;
|
|
30
|
+
return {
|
|
31
|
+
...(familyWithLimits ? { family: familyWithLimits } : {}),
|
|
32
|
+
...(modelLayer ? { builtin: modelLayer } : {}),
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
export function resolveBuiltInProfile(input) {
|
|
36
|
+
const layers = builtInProfileLayers(input.provider, input.model);
|
|
37
|
+
return applyObservedControlRejections(resolveProviderProfile({
|
|
38
|
+
provider: input.provider,
|
|
39
|
+
model: input.model,
|
|
40
|
+
wireApi: providerWireApi(input.provider, input.model),
|
|
41
|
+
endpointHash: input.endpointHash,
|
|
42
|
+
credentialHash: input.credentialHash,
|
|
43
|
+
configGeneration: input.configGeneration,
|
|
44
|
+
layers: {
|
|
45
|
+
...layers,
|
|
46
|
+
...(input.catalogLayer ? { catalog: input.catalogLayer } : {}),
|
|
47
|
+
},
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
export function directDeepSeekV4Layer() {
|
|
51
|
+
return {
|
|
52
|
+
evidence: providerDoc("deepseek-thinking-mode"),
|
|
53
|
+
reasoning: {
|
|
54
|
+
generation: "default-on",
|
|
55
|
+
control: {
|
|
56
|
+
dialect: "deepseek-thinking",
|
|
57
|
+
status: "supported",
|
|
58
|
+
evidence: providerDoc("deepseek-thinking-mode"),
|
|
59
|
+
},
|
|
60
|
+
acceptedEfforts: ["low", "high", "max"],
|
|
61
|
+
disable: "supported",
|
|
62
|
+
disableForm: "thinking-disabled",
|
|
63
|
+
replayScope: "tool-turn",
|
|
64
|
+
outputShapes: ["reasoning-content"],
|
|
65
|
+
},
|
|
66
|
+
limits: {
|
|
67
|
+
contextTokens: 1_000_000,
|
|
68
|
+
outputTokens: 384_000,
|
|
69
|
+
source: "provider-doc",
|
|
70
|
+
},
|
|
71
|
+
cache: {
|
|
72
|
+
kind: "automatic-prefix",
|
|
73
|
+
cacheAffectingFields: ["messages", "tools", "thinking", "reasoning_effort"],
|
|
74
|
+
},
|
|
75
|
+
usage: {
|
|
76
|
+
cachedInput: ["usage.prompt_cache_hit_tokens"],
|
|
77
|
+
uncachedInput: ["usage.prompt_cache_miss_tokens"],
|
|
78
|
+
},
|
|
79
|
+
terminal: {
|
|
80
|
+
proofs: ["done-sentinel", "finish-reason"],
|
|
81
|
+
naturalEofAccepted: false,
|
|
82
|
+
},
|
|
83
|
+
capabilities: { tools: "supported" },
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=provider-profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-profiles.js","sourceRoot":"","sources":["../../src/llm/provider-profiles.ts"],"names":[],"mappings":"AACA,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GAKvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAEzF,MAAM,eAAe,GAAyC;IAC5D,SAAS,EAAE,oBAAoB;IAC/B,MAAM,EAAE,yBAAyB;IACjC,IAAI,EAAE,gBAAgB;IACtB,MAAM,EAAE,aAAa;CACtB,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,QAAoB,EAAE,KAAa;IACjE,IAAI,QAAQ,KAAK,YAAY,EAAE,CAAC;QAC9B,OAAO,6CAA6C,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9D,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,kBAAkB,CAAC;IACzB,CAAC;IACD,OAAO,eAAe,CAAC,QAAQ,CAAC,IAAI,kBAAkB,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAoB,EACpB,KAAa;IAEb,MAAM,MAAM,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,UAAU,GAAG,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClD,MAAM,cAAc,GAAG,6BAA6B,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IACtE,MAAM,gBAAgB,GAAqC,MAAM;QAC/D,CAAC,CAAC;YACE,GAAG,MAAM;YACT,MAAM,EAAE,cAAc;gBACpB,CAAC,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,SAAS,EAAE;gBACtD,CAAC,CAAC,MAAM,CAAC,MAAM;SAClB;QACH,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,KAOrC;IACC,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IACjE,OAAO,8BAA8B,CACnC,sBAAsB,CAAC;QACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,KAAK,EAAE,KAAK,CAAC,KAAK;QAClB,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC;QACrD,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,cAAc,EAAE,KAAK,CAAC,cAAc;QACpC,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;QACxC,MAAM,EAAE;YACN,GAAG,MAAM;YACT,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC/D;KACF,CAAC,CACH,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB;IACnC,OAAO;QACL,QAAQ,EAAE,WAAW,CAAC,wBAAwB,CAAC;QAC/C,SAAS,EAAE;YACT,UAAU,EAAE,YAAY;YACxB,OAAO,EAAE;gBACP,OAAO,EAAE,mBAAmB;gBAC5B,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,WAAW,CAAC,wBAAwB,CAAC;aAChD;YACD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC;YACvC,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,mBAAmB;YAChC,WAAW,EAAE,WAAW;YACxB,YAAY,EAAE,CAAC,mBAAmB,CAAC;SACpC;QACD,MAAM,EAAE;YACN,aAAa,EAAE,SAAS;YACxB,YAAY,EAAE,OAAO;YACrB,MAAM,EAAE,cAAc;SACvB;QACD,KAAK,EAAE;YACL,IAAI,EAAE,kBAAkB;YACxB,oBAAoB,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,kBAAkB,CAAC;SAC5E;QACD,KAAK,EAAE;YACL,WAAW,EAAE,CAAC,+BAA+B,CAAC;YAC9C,aAAa,EAAE,CAAC,gCAAgC,CAAC;SAClD;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,CAAC,eAAe,EAAE,eAAe,CAAC;YAC1C,kBAAkB,EAAE,KAAK;SAC1B;QACD,YAAY,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC"}
|
package/dist/llm/provider.d.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { CompletionRequest, CompletionResult, ProviderId } from "../types.js";
|
|
2
|
+
import type { ReasoningStyle } from "./http.js";
|
|
2
3
|
export interface LlmProvider {
|
|
3
4
|
id: ProviderId;
|
|
4
5
|
displayName: string;
|
|
5
6
|
defaultModel: string;
|
|
7
|
+
reasoningStyle?: ReasoningStyle | undefined;
|
|
6
8
|
envVar?: string | undefined;
|
|
7
9
|
validateKey(key: string): boolean;
|
|
8
10
|
ping(options: ProviderAuth): Promise<void>;
|
package/dist/llm/provider.js
CHANGED
|
@@ -48,6 +48,14 @@ export const providerAliases = {
|
|
|
48
48
|
metamodelapi: "meta",
|
|
49
49
|
metamodel: "meta",
|
|
50
50
|
muse: "meta",
|
|
51
|
+
fireworks: "fireworks",
|
|
52
|
+
fw: "fireworks",
|
|
53
|
+
hetzner: "hetzner",
|
|
54
|
+
"hetzner-inference": "hetzner",
|
|
55
|
+
"hetzner-experiments": "hetzner",
|
|
56
|
+
orcarouter: "orcarouter",
|
|
57
|
+
"orca-router": "orcarouter",
|
|
58
|
+
orca: "orcarouter",
|
|
51
59
|
};
|
|
52
60
|
export const defaultModels = {
|
|
53
61
|
free: "free-1/deepseek-v4-flash-free",
|
|
@@ -67,9 +75,13 @@ export const defaultModels = {
|
|
|
67
75
|
modal: "moonshotai/Kimi-K3",
|
|
68
76
|
// Lightning AI namespaces model ids by vendor.
|
|
69
77
|
lightning: "openai/gpt-5",
|
|
70
|
-
// TokenRouter
|
|
71
|
-
tokenrouter: "kimi-
|
|
78
|
+
// TokenRouter namespaces model ids by vendor (moonshotai/kimi-k3).
|
|
79
|
+
tokenrouter: "moonshotai/kimi-k3",
|
|
72
80
|
meta: "muse-spark-1.2",
|
|
81
|
+
fireworks: "accounts/fireworks/models/kimi-k2p6",
|
|
82
|
+
hetzner: "Qwen/Qwen3.6-35B-A3B-FP8",
|
|
83
|
+
// OrcaRouter namespaces model ids by upstream vendor (openai/gpt-4o-mini).
|
|
84
|
+
orcarouter: "openai/gpt-4o-mini",
|
|
73
85
|
};
|
|
74
86
|
const retiredModelReplacements = {
|
|
75
87
|
groq: {
|
|
@@ -94,6 +106,22 @@ const retiredModelReplacements = {
|
|
|
94
106
|
"gpt-4o-mini": "gpt-5.4-mini",
|
|
95
107
|
"gpt-4o": "gpt-5.4",
|
|
96
108
|
},
|
|
109
|
+
tokenrouter: {
|
|
110
|
+
// The gateway retired short ids; models are now namespaced by vendor.
|
|
111
|
+
"kimi-k2p6": "moonshotai/kimi-k2.6",
|
|
112
|
+
"kimi-k2p5": "moonshotai/kimi-k2.5",
|
|
113
|
+
"kimi-k2p7-code": "moonshotai/kimi-k2.7-code",
|
|
114
|
+
"kimi-k2p7-fast": "moonshotai/kimi-k2.7-code",
|
|
115
|
+
"deepseek-v4-pro": "deepseek/deepseek-v4-pro",
|
|
116
|
+
"deepseek-v4-flash": "deepseek/deepseek-v4-flash",
|
|
117
|
+
"qwen3p7-plus": "qwen/qwen3.7-plus",
|
|
118
|
+
"qwen3p6-plus": "qwen/qwen3.6-plus",
|
|
119
|
+
"glm-5p1": "z-ai/glm-5.1",
|
|
120
|
+
"glm-5p1-fast": "z-ai/glm-5.1",
|
|
121
|
+
"gpt-oss-120b": "openai/gpt-oss-120b",
|
|
122
|
+
"minimax-m3": "MiniMax-M3",
|
|
123
|
+
"minimax-m2p7": "minimax/minimax-m2.7",
|
|
124
|
+
},
|
|
97
125
|
};
|
|
98
126
|
export const envVars = {
|
|
99
127
|
free: "FREE_API_KEY",
|
|
@@ -116,6 +144,9 @@ export const envVars = {
|
|
|
116
144
|
lightning: "LIGHTNING_API_KEY",
|
|
117
145
|
tokenrouter: "TOKENROUTER_API_KEY",
|
|
118
146
|
meta: "MODEL_API_KEY",
|
|
147
|
+
fireworks: "FIREWORKS_API_KEY",
|
|
148
|
+
hetzner: "HETZNER_API_KEY",
|
|
149
|
+
orcarouter: "ORCAROUTER_API_KEY",
|
|
119
150
|
};
|
|
120
151
|
/** Resolve the env var for any provider, including user-defined custom ones. */
|
|
121
152
|
export function getEnvVar(provider) {
|
|
@@ -281,34 +312,22 @@ WHAT IT IS
|
|
|
281
312
|
Auth Authorization: Bearer <key>
|
|
282
313
|
Endpoints /models · /chat/completions
|
|
283
314
|
|
|
284
|
-
MODELS
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
deepseek-v4-pro 1M ctx deep reasoning over huge codebases
|
|
289
|
-
deepseek-v4-flash 1M ctx cheapest long context
|
|
290
|
-
qwen3p7-plus 256K ctx multilingual general purpose
|
|
291
|
-
qwen3p6-plus 256K ctx multilingual general purpose
|
|
292
|
-
glm-5p1 / glm-5p1-fast 200K ctx agentic engineering
|
|
293
|
-
gpt-oss-120b 128K ctx open-source OpenAI model
|
|
294
|
-
minimax-m3 512K ctx very long context, agent harnesses
|
|
295
|
-
minimax-m2p7 196K ctx budget agent tasks
|
|
296
|
-
|
|
297
|
-
/model reads the live list from /models, which is filtered to the channels
|
|
298
|
-
your key can actually reach — trust that over this table.
|
|
315
|
+
MODELS
|
|
316
|
+
Ids are namespaced by vendor and case-sensitive (moonshotai/kimi-k3, not
|
|
317
|
+
"Kimi K3"). /model reads the live list from /models, filtered to the
|
|
318
|
+
channels your key can actually reach.
|
|
299
319
|
|
|
300
320
|
COST
|
|
301
321
|
Prepaid balance billed per token; the dashboard header shows what is left.
|
|
302
322
|
There is no published free tier, so treat it as paid: clai classes it
|
|
303
323
|
paid-cloud and /freeonly on keeps it out of the fallback chain. Prices vary
|
|
304
|
-
a lot between the flash/fast variants and the pro ones
|
|
305
|
-
is the cheap long-context option, kimi-k2p7-code the premium coding one.
|
|
324
|
+
a lot between the flash/fast variants and the pro ones.
|
|
306
325
|
|
|
307
326
|
SETUP
|
|
308
327
|
1. Create an API key in your TokenRouter account under API Keys.
|
|
309
328
|
2. clai set tokenrouter sk-yourKey
|
|
310
329
|
3. clai use tokenrouter
|
|
311
|
-
4. /model kimi-
|
|
330
|
+
4. /model moonshotai/kimi-k3 (or any id from /model)
|
|
312
331
|
|
|
313
332
|
MANAGING KEYS AND ENDPOINTS IN CLAI
|
|
314
333
|
clai set tokenrouter <key> add a key (up to 10, rotated on failure)
|
|
@@ -329,7 +348,7 @@ GOOD TO KNOW
|
|
|
329
348
|
- max_tokens above a model's ceiling is clamped by the gateway rather than
|
|
330
349
|
rejected, but prompt + max_tokens must still fit the context window.
|
|
331
350
|
- The model field in responses may echo a fully-qualified upstream path
|
|
332
|
-
instead of the
|
|
351
|
+
instead of the id you sent. That is expected.
|
|
333
352
|
- Env var: TOKENROUTER_API_KEY (used when nothing is stored).
|
|
334
353
|
|
|
335
354
|
Docs: https://docs.tokenrouter.me`,
|
|
@@ -597,6 +616,164 @@ GOOD TO KNOW
|
|
|
597
616
|
- Env var: MODEL_API_KEY (used when nothing is stored).
|
|
598
617
|
|
|
599
618
|
Docs: https://dev.meta.ai/docs`,
|
|
619
|
+
fireworks: `Fireworks AI — OpenAI-compatible inference for open models
|
|
620
|
+
|
|
621
|
+
WHAT IT IS
|
|
622
|
+
Fireworks serves open models behind an OpenAI-compatible API at
|
|
623
|
+
https://api.fireworks.ai/inference/v1. One key, many models, billed per
|
|
624
|
+
token. Chat Completions with SSE streaming, native tool calling, vision
|
|
625
|
+
via image_url, structured outputs and reasoning all work.
|
|
626
|
+
|
|
627
|
+
Base URL https://api.fireworks.ai/inference/v1
|
|
628
|
+
Auth Authorization: Bearer <key>
|
|
629
|
+
Endpoints /models · /chat/completions
|
|
630
|
+
|
|
631
|
+
MODELS (ids are fully-qualified — accounts/fireworks/models/<name>)
|
|
632
|
+
accounts/fireworks/models/kimi-k2p6 (clai default) 256K ctx
|
|
633
|
+
accounts/fireworks/models/kimi-k2-instruct-0905 256K ctx
|
|
634
|
+
accounts/fireworks/models/deepseek-v3p1 128K ctx
|
|
635
|
+
accounts/fireworks/models/glm-5p2 200K ctx
|
|
636
|
+
accounts/fireworks/models/qwen3-235b-a22b 128K ctx
|
|
637
|
+
accounts/fireworks/models/gpt-oss-120b 128K ctx
|
|
638
|
+
/model reads the live list from /models (cached 1h).
|
|
639
|
+
|
|
640
|
+
COST
|
|
641
|
+
Pay-as-you-go per token. No free tier — clai classes it paid-cloud so
|
|
642
|
+
/freeonly on keeps it out of the fallback chain.
|
|
643
|
+
|
|
644
|
+
SETUP
|
|
645
|
+
1. Create an API key at https://app.fireworks.ai/settings/users/api-keys
|
|
646
|
+
2. clai set fireworks <your-key>
|
|
647
|
+
3. clai use fireworks
|
|
648
|
+
4. /model accounts/fireworks/models/kimi-k2p6
|
|
649
|
+
|
|
650
|
+
MANAGING KEYS IN CLAI
|
|
651
|
+
clai set fireworks <key> add a key (up to 10, rotated on failure)
|
|
652
|
+
clai set fireworks <key2> add another; last success is sticky
|
|
653
|
+
clai keys masked keys
|
|
654
|
+
clai unset fireworks remove every stored key
|
|
655
|
+
/set fireworks TUI: multi-key editor
|
|
656
|
+
/info fireworks this page
|
|
657
|
+
|
|
658
|
+
GOOD TO KNOW
|
|
659
|
+
- Reasoning models return thinking in reasoning_content; clai folds it
|
|
660
|
+
into the usual thinking block so /think and /effort work.
|
|
661
|
+
- Vision models accept image_url; clai sends images as OpenAI image_url
|
|
662
|
+
blocks when the model supports vision.
|
|
663
|
+
- Env var: FIREWORKS_API_KEY (used when nothing is stored).
|
|
664
|
+
|
|
665
|
+
Docs: https://docs.fireworks.ai
|
|
666
|
+
API: https://docs.fireworks.ai/api-reference/introduction`,
|
|
667
|
+
hetzner: `Hetzner Inference — OpenAI-compatible inference on EU infrastructure
|
|
668
|
+
|
|
669
|
+
WHAT IT IS
|
|
670
|
+
Hetzner's experimental inference API at https://inference.hetzner.com/api/v1.
|
|
671
|
+
OpenAI-compatible Chat Completions with SSE streaming, native tool calling
|
|
672
|
+
and vision via image_url. Servers in Germany and Finland, outside the US
|
|
673
|
+
CLOUD Act. Currently experimental — free during test phase, no SLA/DPA yet.
|
|
674
|
+
|
|
675
|
+
Base URL https://inference.hetzner.com/api/v1
|
|
676
|
+
Auth Authorization: Bearer <key>
|
|
677
|
+
Endpoints /models · /chat/completions
|
|
678
|
+
|
|
679
|
+
MODELS
|
|
680
|
+
Qwen/Qwen3.6-35B-A3B-FP8 current model (clai default) 262K ctx
|
|
681
|
+
Qwen/Qwen3.6-35B-A3B alias without FP8 suffix
|
|
682
|
+
/model reads the live list from /models (cached 1h). Additional models
|
|
683
|
+
will be added based on demand.
|
|
684
|
+
|
|
685
|
+
COST
|
|
686
|
+
Free during experimental phase — no billing yet. clai classes it free-cloud
|
|
687
|
+
so /freeonly on keeps it in the fallback chain. Expect Hetzner pricing
|
|
688
|
+
well below US hyperscalers once billing arrives.
|
|
689
|
+
|
|
690
|
+
SETUP
|
|
691
|
+
1. Create an API token at https://experiments.hetzner.com/
|
|
692
|
+
2. clai set hetzner <your-token>
|
|
693
|
+
3. clai use hetzner
|
|
694
|
+
4. /model Qwen/Qwen3.6-35B-A3B-FP8
|
|
695
|
+
|
|
696
|
+
MANAGING KEYS IN CLAI
|
|
697
|
+
clai set hetzner <key> add a key (up to 10, rotated on failure)
|
|
698
|
+
clai set hetzner <key2> add another; last success is sticky
|
|
699
|
+
clai keys masked keys
|
|
700
|
+
clai unset hetzner remove every stored key
|
|
701
|
+
/set hetzner TUI: multi-key editor
|
|
702
|
+
/info hetzner this page
|
|
703
|
+
|
|
704
|
+
GOOD TO KNOW
|
|
705
|
+
- Qwen3 is a reasoning model: it thinks before answering. /effort on|off
|
|
706
|
+
maps to chat_template_kwargs.enable_thinking so thinking can be disabled
|
|
707
|
+
and the completion budget is not spent on hidden reasoning.
|
|
708
|
+
- Vision: Qwen3.6 accepts images; clai sends them as OpenAI image_url blocks
|
|
709
|
+
when the model supports vision.
|
|
710
|
+
- Tool calling works via OpenAI tools; streaming and prompt caching work.
|
|
711
|
+
- Env var: HETZNER_API_KEY (also HETZNER_INFERENCE_API_KEY, used when
|
|
712
|
+
nothing is stored).
|
|
713
|
+
|
|
714
|
+
Docs: https://experiments.hetzner.com/docs/inference
|
|
715
|
+
API: https://inference.hetzner.com/api/v1`,
|
|
716
|
+
orcarouter: `OrcaRouter — one key for OpenAI, Anthropic, Google, DeepSeek,
|
|
717
|
+
Grok, Qwen, Kimi, MiniMax and GLM at provider cost price
|
|
718
|
+
|
|
719
|
+
WHAT IT IS
|
|
720
|
+
An OpenAI-compatible gateway at https://api.orcarouter.ai/v1 that routes
|
|
721
|
+
eleven upstream providers behind one bearer key, with zero token markup
|
|
722
|
+
(you pay each provider's published price). Model ids are vendor-prefixed:
|
|
723
|
+
openai/gpt-4o-mini, openai/gpt-5, openai/o3-mini
|
|
724
|
+
anthropic/claude-sonnet-4.6, anthropic/claude-opus-4.7
|
|
725
|
+
google/gemini-2.5-flash, google/gemini-3-pro-preview
|
|
726
|
+
deepseek/deepseek-reasoner, grok/grok-4-fast-reasoning
|
|
727
|
+
qwen/qwen3-max, kimi/kimi-k2.6, minimax/minimax-m2.7, z-ai/glm-5.1
|
|
728
|
+
Chat Completions with SSE streaming, native tool calling, structured
|
|
729
|
+
outputs (response_format json_schema), vision via image_url and a unified
|
|
730
|
+
reasoning_effort knob all work.
|
|
731
|
+
|
|
732
|
+
Base URL https://api.orcarouter.ai/v1
|
|
733
|
+
Auth Authorization: Bearer <key>
|
|
734
|
+
Endpoints /models · /chat/completions
|
|
735
|
+
|
|
736
|
+
MODELS
|
|
737
|
+
Ids are namespaced by upstream vendor and case-sensitive. /model reads the
|
|
738
|
+
live list from /models (cached 1h), filtered to models reachable over Chat
|
|
739
|
+
Completions — image/video/tts/embedding ids are hidden. orcarouter/auto
|
|
740
|
+
picks the cheapest model that fits the request.
|
|
741
|
+
|
|
742
|
+
REASONING
|
|
743
|
+
One unified syntax: top-level reasoning_effort (low/medium/high, plus
|
|
744
|
+
minimal/max on some models). The gateway translates it per upstream —
|
|
745
|
+
OpenAI native, Claude thinking budgets, Gemini thinkingConfig, Grok
|
|
746
|
+
native. /think and /effort map onto it; thinking arrives as
|
|
747
|
+
reasoning_content and folds into the usual thinking block.
|
|
748
|
+
|
|
749
|
+
COST
|
|
750
|
+
Zero markup: provider list price per token. Revenue comes from optional
|
|
751
|
+
subscription plans, not inflated token cost. clai classes it paid-cloud,
|
|
752
|
+
so /freeonly on keeps it out of the fallback chain.
|
|
753
|
+
|
|
754
|
+
SETUP
|
|
755
|
+
1. Create an API key at https://www.orcarouter.ai/console (starts sk-…).
|
|
756
|
+
2. clai set orcarouter sk-yourKey
|
|
757
|
+
3. clai use orcarouter
|
|
758
|
+
4. /model openai/gpt-4o-mini (or any id from /model)
|
|
759
|
+
|
|
760
|
+
MANAGING KEYS IN CLAI
|
|
761
|
+
clai set orcarouter <key> add a key (up to 10, rotated on failure)
|
|
762
|
+
clai set orcarouter <key2> add another; the last that worked is sticky
|
|
763
|
+
clai keys masked keys + the active endpoint
|
|
764
|
+
clai unset orcarouter remove every stored key
|
|
765
|
+
/set orcarouter TUI: multi-key editor
|
|
766
|
+
/info orcarouter this page
|
|
767
|
+
|
|
768
|
+
GOOD TO KNOW
|
|
769
|
+
- Multi-key rotation, prompt caching, tool calling and compaction behave
|
|
770
|
+
exactly like every other OpenAI-compatible provider.
|
|
771
|
+
- Per-key options at creation: name, credit limit, expiration. Rate limits
|
|
772
|
+
are workspace-level, not per-key.
|
|
773
|
+
- Env var: ORCAROUTER_API_KEY (used when nothing is stored).
|
|
774
|
+
|
|
775
|
+
Docs: https://docs.orcarouter.ai
|
|
776
|
+
API: https://api.orcarouter.ai/v1 (OpenAI-compatible; /models, /chat/completions)`,
|
|
600
777
|
};
|
|
601
778
|
export function getProviderInfoText(provider) {
|
|
602
779
|
const known = providerInfo[provider.toLowerCase()];
|
package/dist/llm/provider.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/llm/provider.ts"],"names":[],"mappings":"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"}
|
package/dist/llm/qwen-cloud.js
CHANGED
|
@@ -8,6 +8,7 @@ let lastFetchTime = 0;
|
|
|
8
8
|
const CACHE_TTL_MS = 60 * 60 * 1000;
|
|
9
9
|
export const qwenCloudProvider = {
|
|
10
10
|
id: "qwen-cloud",
|
|
11
|
+
reasoningStyle: "openai",
|
|
11
12
|
displayName: "Qwen Cloud",
|
|
12
13
|
defaultModel: defaultModels["qwen-cloud"],
|
|
13
14
|
envVar: "DASHSCOPE_API_KEY",
|
|
@@ -56,6 +57,7 @@ export const qwenCloudProvider = {
|
|
|
56
57
|
tools: request.tools,
|
|
57
58
|
toolChoice: request.toolChoice,
|
|
58
59
|
parallelToolCalls: request.parallelToolCalls,
|
|
60
|
+
reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
|
|
59
61
|
});
|
|
60
62
|
return toCompletionResult("qwen-cloud", model, payload);
|
|
61
63
|
},
|
|
@@ -75,11 +77,13 @@ export const qwenCloudProvider = {
|
|
|
75
77
|
signal: request.signal,
|
|
76
78
|
onToken,
|
|
77
79
|
onToolCallDelta: request.onToolCallDelta,
|
|
80
|
+
onStreamEvent: request.onStreamEvent,
|
|
78
81
|
reasoning: request.thinking,
|
|
79
82
|
reasoningStyle: "openai",
|
|
80
83
|
tools: request.tools,
|
|
81
84
|
toolChoice: request.toolChoice,
|
|
82
85
|
parallelToolCalls: request.parallelToolCalls,
|
|
86
|
+
reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
|
|
83
87
|
});
|
|
84
88
|
return toCompletionResult("qwen-cloud", model, payload);
|
|
85
89
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwen-cloud.js","sourceRoot":"","sources":["../../src/llm/qwen-cloud.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,yEAAyE;AACzE,2FAA2F;AAC3F,MAAM,OAAO,GAAG,wDAAwD,CAAC;AAEzE,IAAI,YAAY,GAAoB,IAAI,CAAC;AACzC,IAAI,aAAa,GAAG,CAAC,CAAC;AACtB,MAAM,YAAY,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEpC,MAAM,CAAC,MAAM,iBAAiB,GAAgB;IAC5C,EAAE,EAAE,YAAY;IAChB,WAAW,EAAE,YAAY;IACzB,YAAY,EAAE,aAAa,CAAC,YAAY,CAAC;IACzC,MAAM,EAAE,mBAAmB;IAC3B,uEAAuE;IACvE,iDAAiD;IACjD,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;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpE,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,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,SAAS,EAAE;YAChD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE,EAAE;SACpD,CAAC,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAoC,QAAQ,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,wBAAwB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtB,YAAY,GAAG,MAAM,CAAC;YACtB,aAAa,GAAG,GAAG,CAAC;QACtB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAkB;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACpE,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,gCAAgC,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,aAAa,CAAC,YAAY,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAAC;YAC7C,QAAQ,EAAE,YAAY;YACtB,UAAU,EAAE,YAAY;YACxB,OAAO;YACP,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK;YACL,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,QAAQ;YAC3B,cAAc,EAAE,QAAQ;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;
|
|
1
|
+
{"version":3,"file":"qwen-cloud.js","sourceRoot":"","sources":["../../src/llm/qwen-cloud.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { ChatMessage, NativeToolCall, ReasoningArtifact, ReasoningArtifactKind, ReasoningArtifactProvenance, ReasoningArtifactReplayDecision, ReasoningArtifactReplayObserver, ReasoningArtifactReplayTarget, ReasoningBlock } from "../types.js";
|
|
2
|
+
/** Input accepted by the canonical artifact factory before it is frozen. */
|
|
3
|
+
export interface CreateReasoningArtifactInput {
|
|
4
|
+
readonly kind: ReasoningArtifactKind;
|
|
5
|
+
/** Raw provider payload; never use this for display or telemetry. */
|
|
6
|
+
readonly raw: ReasoningArtifact["raw"];
|
|
7
|
+
/** Display-only projection, intentionally separate from the raw payload. */
|
|
8
|
+
readonly displaySummary?: string | undefined;
|
|
9
|
+
readonly provenance: ReasoningArtifactProvenance;
|
|
10
|
+
readonly replay: ReasoningArtifact["replay"];
|
|
11
|
+
readonly position?: ReasoningArtifact["position"] | undefined;
|
|
12
|
+
}
|
|
13
|
+
/** Metadata needed at a serializer boundary to decide whether replay is safe. */
|
|
14
|
+
export interface ReasoningArtifactReplayContext {
|
|
15
|
+
readonly hasToolCalls?: boolean | undefined;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Builds privacy-safe route provenance. Endpoint identity is a one-way hash so
|
|
19
|
+
* persisted artifacts and replay diagnostics never retain custom URL/query data.
|
|
20
|
+
*/
|
|
21
|
+
export declare function createReasoningArtifactProvenance(input: {
|
|
22
|
+
provider: ReasoningArtifactProvenance["provider"];
|
|
23
|
+
model?: string | undefined;
|
|
24
|
+
dialect: ReasoningArtifactProvenance["dialect"];
|
|
25
|
+
endpoint?: string | undefined;
|
|
26
|
+
legacy?: true | undefined;
|
|
27
|
+
}): ReasoningArtifactProvenance;
|
|
28
|
+
/** Creates a safe serialization target without retaining the endpoint itself. */
|
|
29
|
+
export declare function createReasoningArtifactReplayTarget(input: {
|
|
30
|
+
provider: ReasoningArtifactReplayTarget["provider"];
|
|
31
|
+
model: string;
|
|
32
|
+
dialect: ReasoningArtifactReplayTarget["dialect"];
|
|
33
|
+
endpoint?: string | undefined;
|
|
34
|
+
}): ReasoningArtifactReplayTarget;
|
|
35
|
+
/**
|
|
36
|
+
* Clones and freezes raw provider state before attaching byte/token accounting.
|
|
37
|
+
* The factory is the only supported way to create artifacts from provider data.
|
|
38
|
+
*/
|
|
39
|
+
export declare function createReasoningArtifact(input: CreateReasoningArtifactInput): ReasoningArtifact;
|
|
40
|
+
/** Returns the plaintext payload only for plaintext/signed artifact formats. */
|
|
41
|
+
export declare function reasoningArtifactText(artifact: ReasoningArtifact): string | undefined;
|
|
42
|
+
/** Returns the opaque signature only for signed/thought-signature artifacts. */
|
|
43
|
+
export declare function reasoningArtifactSignature(artifact: ReasoningArtifact): string | undefined;
|
|
44
|
+
/** Preserves encrypted items exactly as opaque JSON records for Meta replay. */
|
|
45
|
+
export declare function reasoningArtifactItems(artifact: ReasoningArtifact): Array<Record<string, unknown>>;
|
|
46
|
+
/**
|
|
47
|
+
* Returns canonical artifacts for a message. Legacy fields are converted only
|
|
48
|
+
* when canonical data is absent, preventing duplicate replay after migration.
|
|
49
|
+
*/
|
|
50
|
+
export declare function reasoningArtifactsForMessage(message: ChatMessage): readonly ReasoningArtifact[];
|
|
51
|
+
/** Projects canonical artifacts back onto the existing legacy replay surface. */
|
|
52
|
+
export declare function legacyReasoningBlockFromArtifacts(artifacts: readonly ReasoningArtifact[]): ReasoningBlock | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* Hydrates persisted legacy data into canonical artifacts while retaining the
|
|
55
|
+
* original fields for older consumers and provider adapters.
|
|
56
|
+
*/
|
|
57
|
+
export declare function canonicalizeChatMessageReasoningArtifacts(message: ChatMessage): ChatMessage;
|
|
58
|
+
/** Canonical artifact accounting for a message, including un-migrated history. */
|
|
59
|
+
export declare function reasoningArtifactTokensForMessage(message: ChatMessage): number;
|
|
60
|
+
export interface SignedThinkingArtifactInput {
|
|
61
|
+
readonly sequence: number;
|
|
62
|
+
readonly thinking: string;
|
|
63
|
+
readonly signature?: string | undefined;
|
|
64
|
+
readonly raw: ReasoningArtifact["raw"];
|
|
65
|
+
readonly toolCallIndex?: number | undefined;
|
|
66
|
+
}
|
|
67
|
+
/** Builds signed Anthropic-family artifacts without deriving replay state from display text. */
|
|
68
|
+
export declare function createSignedThinkingArtifacts(input: {
|
|
69
|
+
blocks: readonly SignedThinkingArtifactInput[];
|
|
70
|
+
provenance: ReasoningArtifactProvenance;
|
|
71
|
+
}): readonly ReasoningArtifact[];
|
|
72
|
+
/**
|
|
73
|
+
* Rebinds artifact positions only after duplicate and empty tool-call ids have
|
|
74
|
+
* been repaired. Raw artifact bytes stay immutable; only the history position
|
|
75
|
+
* receives the durable call id.
|
|
76
|
+
*/
|
|
77
|
+
export declare function rebindReasoningArtifactsToToolCalls(input: {
|
|
78
|
+
artifacts: readonly ReasoningArtifact[] | undefined;
|
|
79
|
+
toolCalls: readonly NativeToolCall[];
|
|
80
|
+
}): readonly ReasoningArtifact[] | undefined;
|
|
81
|
+
/** Retain active tool artifacts unconditionally; retain final turns only by policy. */
|
|
82
|
+
export declare function reasoningArtifactsForPersistence(input: {
|
|
83
|
+
artifacts: readonly ReasoningArtifact[] | undefined;
|
|
84
|
+
hasToolCalls: boolean;
|
|
85
|
+
}): readonly ReasoningArtifact[] | undefined;
|
|
86
|
+
/**
|
|
87
|
+
* Conservative compatibility predicate used at final serialization only. It
|
|
88
|
+
* never mutates stored history and never returns raw payloads in its decision.
|
|
89
|
+
*/
|
|
90
|
+
export declare function reasoningArtifactReplayDecision(artifact: ReasoningArtifact, target: ReasoningArtifactReplayTarget, context?: ReasoningArtifactReplayContext): ReasoningArtifactReplayDecision;
|
|
91
|
+
/**
|
|
92
|
+
* Filters only the wire projection. Omitted artifacts remain unchanged in the
|
|
93
|
+
* message/persistence timeline, while callers can emit the metadata-only
|
|
94
|
+
* decisions to their operation telemetry.
|
|
95
|
+
*/
|
|
96
|
+
export declare function selectReasoningArtifactsForReplay(input: {
|
|
97
|
+
artifacts: readonly ReasoningArtifact[] | undefined;
|
|
98
|
+
target: ReasoningArtifactReplayTarget;
|
|
99
|
+
context?: ReasoningArtifactReplayContext | undefined;
|
|
100
|
+
observe?: ReasoningArtifactReplayObserver | undefined;
|
|
101
|
+
}): readonly ReasoningArtifact[];
|