@tjamescouch/gro 1.3.16 → 1.3.18
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/dist/drivers/anthropic.js +12 -1
- package/dist/main.js +11 -0
- package/dist/package.json +1 -1
- package/package.json +1 -1
|
@@ -135,12 +135,17 @@ function parseResponseContent(data, onToken) {
|
|
|
135
135
|
*/
|
|
136
136
|
function supportsAdaptiveThinking(model) {
|
|
137
137
|
const m = model.toLowerCase();
|
|
138
|
+
// Opus 4.x — supports thinking
|
|
138
139
|
if (/claude-opus-4/.test(m))
|
|
139
140
|
return true;
|
|
140
|
-
|
|
141
|
+
// Sonnet 4 dated builds (e.g. claude-sonnet-4-20250514) — supports thinking
|
|
142
|
+
// Sonnet 4.5 (claude-sonnet-4-5) does NOT support adaptive thinking
|
|
143
|
+
if (/claude-sonnet-4-\d{8}/.test(m))
|
|
141
144
|
return true;
|
|
145
|
+
// Claude 3.7 Sonnet — supports thinking
|
|
142
146
|
if (/claude-3[.-]7/.test(m))
|
|
143
147
|
return true;
|
|
148
|
+
// Claude 3.5 Sonnet (Oct 2024) — supports thinking
|
|
144
149
|
if (/claude-3[.-]5-sonnet.*20241022/.test(m))
|
|
145
150
|
return true;
|
|
146
151
|
return false;
|
|
@@ -197,6 +202,12 @@ export function makeAnthropicDriver(cfg) {
|
|
|
197
202
|
continue;
|
|
198
203
|
}
|
|
199
204
|
const text = await res.text().catch(() => "");
|
|
205
|
+
// If 400 due to thinking not supported, retry without thinking params
|
|
206
|
+
if (res.status === 400 && body.thinking && /thinking|not supported/i.test(text)) {
|
|
207
|
+
Logger.warn(`Model ${resolvedModel} rejected adaptive thinking — retrying without`);
|
|
208
|
+
delete body.thinking;
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
200
211
|
const ge = groError("provider_error", `Anthropic API failed (${res.status}): ${text}`, {
|
|
201
212
|
provider: "anthropic",
|
|
202
213
|
model: resolvedModel,
|
package/dist/main.js
CHANGED
|
@@ -16,6 +16,7 @@ import { makeStreamingOpenAiDriver } from "./drivers/streaming-openai.js";
|
|
|
16
16
|
import { makeAnthropicDriver } from "./drivers/anthropic.js";
|
|
17
17
|
import { SimpleMemory } from "./memory/simple-memory.js";
|
|
18
18
|
import { AdvancedMemory } from "./memory/advanced-memory.js";
|
|
19
|
+
import { VirtualMemory } from "./memory/virtual-memory.js";
|
|
19
20
|
import { McpManager } from "./mcp/index.js";
|
|
20
21
|
import { newSessionId, findLatestSession, loadSession, ensureGroDir } from "./session.js";
|
|
21
22
|
import { groError, asError, isGroError, errorLogFields } from "./errors.js";
|
|
@@ -449,6 +450,16 @@ function createMemory(cfg, driver) {
|
|
|
449
450
|
summarizerDriver = createDriverForModel(summarizerProvider, summarizerModel, resolveApiKey(summarizerProvider), defaultBaseUrl(summarizerProvider));
|
|
450
451
|
Logger.info(`Summarizer: ${summarizerProvider}/${summarizerModel}`);
|
|
451
452
|
}
|
|
453
|
+
if (process.env.GRO_MEMORY === "virtual") {
|
|
454
|
+
Logger.info("Memory: VirtualMemory (GRO_MEMORY=virtual)");
|
|
455
|
+
const vm = new VirtualMemory({
|
|
456
|
+
driver: summarizerDriver ?? driver,
|
|
457
|
+
summarizerModel: summarizerModel ?? cfg.model,
|
|
458
|
+
systemPrompt: cfg.systemPrompt || undefined,
|
|
459
|
+
});
|
|
460
|
+
vm.setModel(cfg.model);
|
|
461
|
+
return vm;
|
|
462
|
+
}
|
|
452
463
|
return new AdvancedMemory({
|
|
453
464
|
driver,
|
|
454
465
|
model: cfg.model,
|
package/dist/package.json
CHANGED