@pentoshi/clai 4.2.2 → 4.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/README.md +14 -16
  2. package/dist/agent/compaction-summary.d.ts +1 -1
  3. package/dist/agent/compaction-summary.js +1 -1
  4. package/dist/agent/compaction-summary.js.map +1 -1
  5. package/dist/agent/runner.js +4 -4
  6. package/dist/agent/runner.js.map +1 -1
  7. package/dist/agent/tool-output-formatting.d.ts +6 -0
  8. package/dist/agent/tool-output-formatting.js +126 -40
  9. package/dist/agent/tool-output-formatting.js.map +1 -1
  10. package/dist/app/adapters/agent-event-adapter.d.ts +4 -0
  11. package/dist/app/adapters/agent-event-adapter.js +28 -3
  12. package/dist/app/adapters/agent-event-adapter.js.map +1 -1
  13. package/dist/app/commands/catalog.js +4 -21
  14. package/dist/app/commands/catalog.js.map +1 -1
  15. package/dist/app/controllers/session-controller.js +7 -0
  16. package/dist/app/controllers/session-controller.js.map +1 -1
  17. package/dist/app/events/app-event.d.ts +2 -0
  18. package/dist/app/events/app-event.js.map +1 -1
  19. package/dist/classic/app/use-feed.js +2 -1
  20. package/dist/classic/app/use-feed.js.map +1 -1
  21. package/dist/commands/providers.js +0 -4
  22. package/dist/commands/providers.js.map +1 -1
  23. package/dist/llm/adapters/openai-tools.d.ts +1 -0
  24. package/dist/llm/adapters/openai-tools.js +4 -1
  25. package/dist/llm/adapters/openai-tools.js.map +1 -1
  26. package/dist/llm/agentrouter.js +2 -0
  27. package/dist/llm/agentrouter.js.map +1 -1
  28. package/dist/llm/aws-mantle.js +2 -0
  29. package/dist/llm/aws-mantle.js.map +1 -1
  30. package/dist/llm/bynara.js +2 -0
  31. package/dist/llm/bynara.js.map +1 -1
  32. package/dist/llm/capabilities.d.ts +19 -0
  33. package/dist/llm/capabilities.js +165 -79
  34. package/dist/llm/capabilities.js.map +1 -1
  35. package/dist/llm/catalog-facts.d.ts +23 -0
  36. package/dist/llm/catalog-facts.js +253 -0
  37. package/dist/llm/catalog-facts.js.map +1 -0
  38. package/dist/llm/catalog-prefetch.d.ts +5 -0
  39. package/dist/llm/catalog-prefetch.js +38 -0
  40. package/dist/llm/catalog-prefetch.js.map +1 -0
  41. package/dist/llm/context-windows.d.ts +2 -0
  42. package/dist/llm/context-windows.js +20 -6
  43. package/dist/llm/context-windows.js.map +1 -1
  44. package/dist/llm/custom-profile-resolver.d.ts +5 -0
  45. package/dist/llm/custom-profile-resolver.js +8 -0
  46. package/dist/llm/custom-profile-resolver.js.map +1 -0
  47. package/dist/llm/custom-provider-profile.d.ts +7 -2
  48. package/dist/llm/custom-provider-profile.js +38 -8
  49. package/dist/llm/custom-provider-profile.js.map +1 -1
  50. package/dist/llm/custom-providers.js +2 -0
  51. package/dist/llm/custom-providers.js.map +1 -1
  52. package/dist/llm/effort-fallback.js +3 -0
  53. package/dist/llm/effort-fallback.js.map +1 -1
  54. package/dist/llm/fireworks.js +2 -0
  55. package/dist/llm/fireworks.js.map +1 -1
  56. package/dist/llm/free.js +2 -0
  57. package/dist/llm/free.js.map +1 -1
  58. package/dist/llm/hetzner.js +2 -0
  59. package/dist/llm/hetzner.js.map +1 -1
  60. package/dist/llm/http.d.ts +21 -2
  61. package/dist/llm/http.js +100 -141
  62. package/dist/llm/http.js.map +1 -1
  63. package/dist/llm/learned-capabilities.d.ts +22 -0
  64. package/dist/llm/learned-capabilities.js +147 -0
  65. package/dist/llm/learned-capabilities.js.map +1 -0
  66. package/dist/llm/lightning.js +2 -0
  67. package/dist/llm/lightning.js.map +1 -1
  68. package/dist/llm/modal.js +2 -0
  69. package/dist/llm/modal.js.map +1 -1
  70. package/dist/llm/model-families.d.ts +20 -0
  71. package/dist/llm/model-families.js +227 -19
  72. package/dist/llm/model-families.js.map +1 -1
  73. package/dist/llm/nvidia.js +2 -0
  74. package/dist/llm/nvidia.js.map +1 -1
  75. package/dist/llm/openai.js +2 -0
  76. package/dist/llm/openai.js.map +1 -1
  77. package/dist/llm/openrouter.js +2 -0
  78. package/dist/llm/openrouter.js.map +1 -1
  79. package/dist/llm/orcarouter.js +2 -0
  80. package/dist/llm/orcarouter.js.map +1 -1
  81. package/dist/llm/provider-model-layers.d.ts +3 -0
  82. package/dist/llm/provider-model-layers.js +522 -0
  83. package/dist/llm/provider-model-layers.js.map +1 -0
  84. package/dist/llm/provider-profile-layers.d.ts +4 -1
  85. package/dist/llm/provider-profile-layers.js +8 -523
  86. package/dist/llm/provider-profile-layers.js.map +1 -1
  87. package/dist/llm/provider-profile.d.ts +13 -1
  88. package/dist/llm/provider-profile.js +18 -0
  89. package/dist/llm/provider-profile.js.map +1 -1
  90. package/dist/llm/provider-profiles.d.ts +5 -1
  91. package/dist/llm/provider-profiles.js +177 -4
  92. package/dist/llm/provider-profiles.js.map +1 -1
  93. package/dist/llm/provider.js +0 -15
  94. package/dist/llm/provider.js.map +1 -1
  95. package/dist/llm/qwen-cloud.js +2 -0
  96. package/dist/llm/qwen-cloud.js.map +1 -1
  97. package/dist/llm/reasoning-artifacts.d.ts +1 -0
  98. package/dist/llm/reasoning-artifacts.js +7 -5
  99. package/dist/llm/reasoning-artifacts.js.map +1 -1
  100. package/dist/llm/reasoning-controls.d.ts +16 -0
  101. package/dist/llm/reasoning-controls.js +210 -0
  102. package/dist/llm/reasoning-controls.js.map +1 -0
  103. package/dist/llm/reasoning-errors.d.ts +4 -0
  104. package/dist/llm/reasoning-errors.js +45 -0
  105. package/dist/llm/reasoning-errors.js.map +1 -0
  106. package/dist/llm/request-plan.d.ts +8 -6
  107. package/dist/llm/request-plan.js +47 -13
  108. package/dist/llm/request-plan.js.map +1 -1
  109. package/dist/llm/route-dialect-registry.d.ts +8 -0
  110. package/dist/llm/route-dialect-registry.js +33 -0
  111. package/dist/llm/route-dialect-registry.js.map +1 -0
  112. package/dist/llm/route-vocabulary.d.ts +2 -0
  113. package/dist/llm/route-vocabulary.js +23 -0
  114. package/dist/llm/route-vocabulary.js.map +1 -0
  115. package/dist/llm/router.d.ts +2 -0
  116. package/dist/llm/router.js +70 -20
  117. package/dist/llm/router.js.map +1 -1
  118. package/dist/llm/tokenrouter.js +2 -0
  119. package/dist/llm/tokenrouter.js.map +1 -1
  120. package/dist/store/config.d.ts +11 -0
  121. package/dist/store/config.js +21 -3
  122. package/dist/store/config.js.map +1 -1
  123. package/dist/store/keys.d.ts +1 -1
  124. package/dist/store/keys.js +1 -1
  125. package/dist/store/session-workspace.d.ts +1 -0
  126. package/dist/store/session-workspace.js +21 -1
  127. package/dist/store/session-workspace.js.map +1 -1
  128. package/dist/tools/definitions.js +5 -10
  129. package/dist/tools/definitions.js.map +1 -1
  130. package/dist/tools/output-selection.js +47 -3
  131. package/dist/tools/output-selection.js.map +1 -1
  132. package/dist/tools/web/content-encoding.d.ts +6 -0
  133. package/dist/tools/web/content-encoding.js +57 -0
  134. package/dist/tools/web/content-encoding.js.map +1 -0
  135. package/dist/tools/web/fetch-core.js +23 -1
  136. package/dist/tools/web/fetch-core.js.map +1 -1
  137. package/dist/tui-v2/components/picker/picker.js +1 -1
  138. package/dist/tui-v2/components/picker/picker.js.map +1 -1
  139. package/dist/types.d.ts +2 -1
  140. package/dist/types.js +0 -2
  141. package/dist/types.js.map +1 -1
  142. package/dist/ui-core/commands/command-handlers.js +2 -3
  143. package/dist/ui-core/commands/command-handlers.js.map +1 -1
  144. package/dist/ui-core/commands/picker-commands.js +34 -11
  145. package/dist/ui-core/commands/picker-commands.js.map +1 -1
  146. package/dist/ui-core/commands/session-commands.d.ts +2 -3
  147. package/dist/ui-core/commands/session-commands.js +44 -17
  148. package/dist/ui-core/commands/session-commands.js.map +1 -1
  149. package/dist/ui-core/rendering/format-help.js +1 -1
  150. package/dist/ui-core/rendering/format-help.js.map +1 -1
  151. package/dist/ui-core/state/transcript-reducer.js +78 -19
  152. package/dist/ui-core/state/transcript-reducer.js.map +1 -1
  153. package/dist/ui-core/state/transcript-types.d.ts +1 -0
  154. package/dist/ui-core/state/transcript-types.js.map +1 -1
  155. package/dist/version.generated.d.ts +2 -2
  156. package/dist/version.generated.js +2 -2
  157. package/package.json +1 -2
  158. package/dist/llm/groq.d.ts +0 -24
  159. package/dist/llm/groq.js +0 -155
  160. package/dist/llm/groq.js.map +0 -1
  161. package/dist/llm/kimchi.d.ts +0 -2
  162. package/dist/llm/kimchi.js +0 -96
  163. package/dist/llm/kimchi.js.map +0 -1
package/dist/llm/groq.js DELETED
@@ -1,155 +0,0 @@
1
- import { defaultModels, } from "./provider.js";
2
- import { openAiCompatibleComplete, openAiCompatiblePing, openAiCompatibleStream, toCompletionResult, readJson, ingestOpenAiModelCatalog, } from "./http.js";
3
- const baseUrl = "https://api.groq.com/openai/v1";
4
- export const groqFallbackModels = [
5
- "openai/gpt-oss-20b",
6
- "openai/gpt-oss-120b",
7
- "openai/gpt-oss-safeguard-20b",
8
- "qwen/qwen3-32b",
9
- "llama-3.3-70b-versatile",
10
- "llama-3.1-8b-instant",
11
- "meta-llama/llama-4-scout-17b-16e-instruct",
12
- "groq/compound-mini",
13
- "groq/compound",
14
- ];
15
- const groqInputTokenBudgets = [
16
- { pattern: /qwen\/qwen3-32b/i, tokens: 5_500 },
17
- { pattern: /openai\/gpt-oss-20b/i, tokens: 7_500 },
18
- ];
19
- export function groqInputTokenBudget(model) {
20
- return groqInputTokenBudgets.find(({ pattern }) => pattern.test(model))
21
- ?.tokens;
22
- }
23
- let cachedModels = null;
24
- let lastFetchTime = 0;
25
- const CACHE_TTL_MS = 60 * 60 * 1000; // 1 hour cache TTL
26
- /**
27
- * Smallest completion allowance that can still produce a visible answer or a
28
- * closed tool-call JSON once reasoning tokens are billed against the same
29
- * Budget. The TPM guard below may never drop under this on a step
30
- * that carries tools or reasoning.
31
- */
32
- export const GROQ_VIABLE_COMPLETION_TOKENS = 8_192;
33
- /**
34
- * Groq bills reasoning against the completion allowance, and the shipped
35
- * per-model TPM guard (1024/2048) used to be applied with a hard `Math.min`
36
- * against the caller's budget — so a tool step that asked for 24 576 tokens got
37
- * 1024 and finished with `length` before the tool JSON closed.
38
- *
39
- * The guard is kept as the *default* for plain chat, but a step that attaches
40
- * tools or enables reasoning is never clamped below a viable floor.
41
- */
42
- export function groqMaxTokens(model, requested, options) {
43
- const m = model.toLowerCase();
44
- const cap = /openai\/gpt-oss-120b/.test(m)
45
- ? 1_024
46
- : /openai\/gpt-oss-20b|qwen\/qwen3-32b/.test(m)
47
- ? 2_048
48
- : undefined;
49
- if (!cap)
50
- return requested;
51
- const needsViableFloor = Boolean(options?.toolsAttached || options?.reasoningEnabled);
52
- const effectiveCap = needsViableFloor
53
- ? Math.max(cap, GROQ_VIABLE_COMPLETION_TOKENS)
54
- : cap;
55
- return Math.min(requested ?? effectiveCap, effectiveCap);
56
- }
57
- export const groqProvider = {
58
- id: "groq",
59
- reasoningStyle: "groq",
60
- displayName: "Groq",
61
- defaultModel: defaultModels.groq,
62
- envVar: "GROQ_API_KEY",
63
- validateKey: (key) => /^gsk_[A-Za-z0-9_-]{8,}$/.test(key),
64
- async listModels(auth) {
65
- if (!auth.apiKey) {
66
- return groqFallbackModels;
67
- }
68
- const now = Date.now();
69
- if (cachedModels && now - lastFetchTime < CACHE_TTL_MS) {
70
- return cachedModels;
71
- }
72
- try {
73
- const response = await fetch(`${baseUrl}/models`, {
74
- headers: {
75
- authorization: `Bearer ${auth.apiKey}`,
76
- },
77
- });
78
- if (!response.ok) {
79
- throw new Error(`HTTP ${response.status} ${response.statusText}`);
80
- }
81
- const data = await readJson(response);
82
- const models = ingestOpenAiModelCatalog("groq", data);
83
- if (models.length > 0) {
84
- cachedModels = models;
85
- lastFetchTime = now;
86
- return models;
87
- }
88
- return groqFallbackModels;
89
- }
90
- catch {
91
- return groqFallbackModels;
92
- }
93
- },
94
- async ping(auth) {
95
- if (!auth.apiKey)
96
- throw new Error("Groq API key is required");
97
- await openAiCompatiblePing(baseUrl, auth.apiKey);
98
- },
99
- async complete(request, auth) {
100
- if (!auth.apiKey)
101
- throw new Error("Groq API key is required");
102
- const model = request.model ?? defaultModels.groq;
103
- const payload = await openAiCompatibleComplete({
104
- provider: "Groq",
105
- providerId: "groq",
106
- baseUrl,
107
- apiKey: auth.apiKey,
108
- model,
109
- messages: request.messages,
110
- maxTokens: groqMaxTokens(model, request.maxTokens, {
111
- toolsAttached: Boolean(request.tools?.length),
112
- reasoningEnabled: Boolean(request.thinking?.enabled),
113
- }),
114
- temperature: request.temperature,
115
- signal: request.signal,
116
- reasoning: request.thinking,
117
- reasoningStyle: "groq",
118
- tools: request.tools,
119
- toolChoice: request.toolChoice,
120
- parallelToolCalls: request.parallelToolCalls,
121
- reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
122
- });
123
- return toCompletionResult("groq", model, payload);
124
- },
125
- async stream(request, auth, onToken) {
126
- if (!auth.apiKey)
127
- throw new Error("Groq API key is required");
128
- const model = request.model ?? defaultModels.groq;
129
- const payload = await openAiCompatibleStream({
130
- provider: "Groq",
131
- providerId: "groq",
132
- baseUrl,
133
- apiKey: auth.apiKey,
134
- model,
135
- messages: request.messages,
136
- maxTokens: groqMaxTokens(model, request.maxTokens, {
137
- toolsAttached: Boolean(request.tools?.length),
138
- reasoningEnabled: Boolean(request.thinking?.enabled),
139
- }),
140
- temperature: request.temperature,
141
- signal: request.signal,
142
- onToken,
143
- onToolCallDelta: request.onToolCallDelta,
144
- onStreamEvent: request.onStreamEvent,
145
- reasoning: request.thinking,
146
- reasoningStyle: "groq",
147
- tools: request.tools,
148
- toolChoice: request.toolChoice,
149
- parallelToolCalls: request.parallelToolCalls,
150
- reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
151
- });
152
- return toCompletionResult("groq", model, payload);
153
- },
154
- };
155
- //# sourceMappingURL=groq.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"groq.js","sourceRoot":"","sources":["../../src/llm/groq.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- import { type LlmProvider } from "./provider.js";
2
- export declare const kimchiProvider: LlmProvider;
@@ -1,96 +0,0 @@
1
- import { defaultModels, } from "./provider.js";
2
- import { openAiCompatibleComplete, openAiCompatiblePing, openAiCompatibleStream, toCompletionResult, readJson, ingestOpenAiModelCatalog, } from "./http.js";
3
- // Kimchi exposes an OpenAI-compatible Chat Completions API at
4
- // https://llm.kimchi.dev/openai/v1. API keys are alphanumeric.
5
- const baseUrl = "https://llm.kimchi.dev/openai/v1";
6
- let cachedModels = null;
7
- let lastFetchTime = 0;
8
- const CACHE_TTL_MS = 60 * 60 * 1000; // 1 hour
9
- export const kimchiProvider = {
10
- id: "kimchi",
11
- reasoningStyle: "openai",
12
- displayName: "Kimchi",
13
- defaultModel: defaultModels.kimchi,
14
- envVar: "CASTAI_API_KEY",
15
- validateKey: (key) => /^[A-Za-z0-9_-]{8,}$/.test(key),
16
- async listModels(auth) {
17
- const now = Date.now();
18
- if (cachedModels && now - lastFetchTime < CACHE_TTL_MS) {
19
- return cachedModels;
20
- }
21
- try {
22
- const resp = await fetch(`${baseUrl}/models`, {
23
- headers: auth.apiKey
24
- ? { authorization: `Bearer ${auth.apiKey}` }
25
- : {},
26
- verbose: process.env.CLAI_VERBOSE === "true",
27
- });
28
- const data = await readJson(resp);
29
- const models = ingestOpenAiModelCatalog("kimchi", data);
30
- if (models.length > 0) {
31
- cachedModels = models;
32
- lastFetchTime = now;
33
- }
34
- return models;
35
- }
36
- catch {
37
- // Falls through to knownModels in repl.ts/App.tsx on failure.
38
- return [];
39
- }
40
- },
41
- async ping(auth) {
42
- if (!auth.apiKey)
43
- throw new Error("Kimchi API key is required");
44
- await openAiCompatiblePing(baseUrl, auth.apiKey);
45
- },
46
- async complete(request, auth) {
47
- if (!auth.apiKey)
48
- throw new Error("Kimchi API key is required");
49
- const model = request.model ?? defaultModels.kimchi;
50
- const payload = await openAiCompatibleComplete({
51
- provider: "Kimchi",
52
- providerId: "kimchi",
53
- baseUrl,
54
- apiKey: auth.apiKey,
55
- model,
56
- messages: request.messages,
57
- maxTokens: request.maxTokens,
58
- temperature: request.temperature,
59
- signal: request.signal,
60
- reasoning: request.thinking,
61
- reasoningStyle: "openai",
62
- tools: request.tools,
63
- toolChoice: request.toolChoice,
64
- parallelToolCalls: request.parallelToolCalls,
65
- reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
66
- });
67
- return toCompletionResult("kimchi", model, payload);
68
- },
69
- async stream(request, auth, onToken) {
70
- if (!auth.apiKey)
71
- throw new Error("Kimchi API key is required");
72
- const model = request.model ?? defaultModels.kimchi;
73
- const payload = await openAiCompatibleStream({
74
- provider: "Kimchi",
75
- providerId: "kimchi",
76
- baseUrl,
77
- apiKey: auth.apiKey,
78
- model,
79
- messages: request.messages,
80
- maxTokens: request.maxTokens,
81
- temperature: request.temperature,
82
- signal: request.signal,
83
- onToken,
84
- onToolCallDelta: request.onToolCallDelta,
85
- onStreamEvent: request.onStreamEvent,
86
- reasoning: request.thinking,
87
- reasoningStyle: "openai",
88
- tools: request.tools,
89
- toolChoice: request.toolChoice,
90
- parallelToolCalls: request.parallelToolCalls,
91
- reasoningArtifactReplayObserver: request.onReasoningArtifactReplayDecision,
92
- });
93
- return toCompletionResult("kimchi", model, payload);
94
- },
95
- };
96
- //# sourceMappingURL=kimchi.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"kimchi.js","sourceRoot":"","sources":["../../src/llm/kimchi.ts"],"names":[],"mappings":"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"}