devez-vibe 1.9.34 → 1.9.35
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/bin/dvz.exe +0 -0
- package/bridge/claude-agent-sdk-bridge.mjs +45 -10
- package/package.json +1 -1
package/bin/dvz.exe
CHANGED
|
Binary file
|
|
@@ -330,10 +330,40 @@ function catalogEntry(model, defaultResolvedModel) {
|
|
|
330
330
|
};
|
|
331
331
|
}
|
|
332
332
|
|
|
333
|
+
function compareVersions(left, right) {
|
|
334
|
+
for (let index = 0; index < Math.max(left.length, right.length); index += 1) {
|
|
335
|
+
const difference = (left[index] ?? 0) - (right[index] ?? 0);
|
|
336
|
+
if (difference) return difference;
|
|
337
|
+
}
|
|
338
|
+
return 0;
|
|
339
|
+
}
|
|
340
|
+
|
|
341
|
+
/** Each family's newest model in CLAUDE_MODEL_ORDER first, then older ones by family and version. */
|
|
342
|
+
function sortClaudeModels(models) {
|
|
343
|
+
const ranked = models.map((model) => {
|
|
344
|
+
const [family = "", version = ""] = compactClaudeModelName(model).toLowerCase().split(" ");
|
|
345
|
+
return { model, family, version: version.match(/\d+/g)?.map(Number) ?? [] };
|
|
346
|
+
});
|
|
347
|
+
const newest = new Map();
|
|
348
|
+
for (const { family, version } of ranked) {
|
|
349
|
+
if (!newest.has(family) || compareVersions(version, newest.get(family)) > 0) newest.set(family, version);
|
|
350
|
+
}
|
|
351
|
+
const tier = (entry) => (compareVersions(entry.version, newest.get(entry.family)) === 0 ? 0 : 1);
|
|
352
|
+
const familyOrder = ({ family }) => {
|
|
353
|
+
const index = CLAUDE_MODEL_ORDER.indexOf(family);
|
|
354
|
+
return index < 0 ? CLAUDE_MODEL_ORDER.length : index;
|
|
355
|
+
};
|
|
356
|
+
return ranked
|
|
357
|
+
.sort((left, right) => tier(left) - tier(right)
|
|
358
|
+
|| familyOrder(left) - familyOrder(right)
|
|
359
|
+
|| compareVersions(right.version, left.version))
|
|
360
|
+
.map(({ model }) => model);
|
|
361
|
+
}
|
|
362
|
+
|
|
333
363
|
function claudeCatalogEntries(models, defaultResolvedModel) {
|
|
334
|
-
const catalogModels = models.filter((model) => model.value && model.value !== "default"
|
|
364
|
+
const catalogModels = sortClaudeModels(models.filter((model) => model.value && model.value !== "default"
|
|
335
365
|
&& ![model.value, model.resolvedModel]
|
|
336
|
-
.some((name) => stripClaudeModel(String(name || "")).startsWith(RETIRED_OPUS_MODEL)));
|
|
366
|
+
.some((name) => stripClaudeModel(String(name || "")).startsWith(RETIRED_OPUS_MODEL))));
|
|
337
367
|
const entries = catalogModels.map((model) => catalogEntry(model, defaultResolvedModel));
|
|
338
368
|
const existingIndex = entries.findIndex((entry) =>
|
|
339
369
|
stripClaudeModel(entry.model) === PREVIOUS_OPUS_MODEL
|
|
@@ -401,14 +431,6 @@ async function loadModelCatalog(params) {
|
|
|
401
431
|
const defaultResolvedModel = String(
|
|
402
432
|
models.find((model) => model.value === "default")?.resolvedModel || "",
|
|
403
433
|
);
|
|
404
|
-
models.sort((left, right) => {
|
|
405
|
-
const leftFamily = String(left.value || "").match(/(fable|opus|sonnet|haiku)/i)?.[1]?.toLowerCase();
|
|
406
|
-
const rightFamily = String(right.value || "").match(/(fable|opus|sonnet|haiku)/i)?.[1]?.toLowerCase();
|
|
407
|
-
const leftOrder = CLAUDE_MODEL_ORDER.indexOf(leftFamily);
|
|
408
|
-
const rightOrder = CLAUDE_MODEL_ORDER.indexOf(rightFamily);
|
|
409
|
-
return (leftOrder < 0 ? CLAUDE_MODEL_ORDER.length : leftOrder)
|
|
410
|
-
- (rightOrder < 0 ? CLAUDE_MODEL_ORDER.length : rightOrder);
|
|
411
|
-
});
|
|
412
434
|
return {
|
|
413
435
|
data: claudeCatalogEntries(models, defaultResolvedModel),
|
|
414
436
|
};
|
|
@@ -4575,6 +4597,19 @@ async function runSelfTest() {
|
|
|
4575
4597
|
) !== "max") {
|
|
4576
4598
|
throw new Error(`Claude pinned model self-test failed: ${JSON.stringify(catalog)}`);
|
|
4577
4599
|
}
|
|
4600
|
+
const orderedNames = claudeCatalogEntries([
|
|
4601
|
+
{ value: "haiku", displayName: "Haiku 4.5" },
|
|
4602
|
+
{ value: "claude-sonnet-4-6", displayName: "Sonnet 4.6" },
|
|
4603
|
+
{ value: "fable", displayName: "Fable 5" },
|
|
4604
|
+
{ value: "opus", resolvedModel: "claude-opus-5-5", displayName: "Opus" },
|
|
4605
|
+
{ value: "sonnet", displayName: "Sonnet 5" },
|
|
4606
|
+
{ value: "claude-opus-6", displayName: "Opus 6" },
|
|
4607
|
+
{ value: "claude-fable-5-1", displayName: "Fable 5.1" },
|
|
4608
|
+
{ value: "nova", displayName: "Nova 1" },
|
|
4609
|
+
].map((model) => ({ resolvedModel: model.value, ...model })), "").filter((entry) => !entry.hidden).map((entry) => entry.displayName).join(",");
|
|
4610
|
+
if (orderedNames !== "Fable 5.1,Opus 6,Sonnet 5,Haiku 4.5,Nova 1,Fable 5,Opus 5.5,Sonnet 4.6") {
|
|
4611
|
+
throw new Error(`Claude model order self-test failed: ${orderedNames}`);
|
|
4612
|
+
}
|
|
4578
4613
|
const inheritedFork = forkSessionSelection(
|
|
4579
4614
|
{ model: "claude:sonnet", effort: "high" },
|
|
4580
4615
|
{ model: "claude:opus", effort: "max" },
|