devez-vibe 1.9.18 → 1.9.20

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 CHANGED
Binary file
@@ -428,6 +428,13 @@ function stripClaudeModel(model) {
428
428
  return model.startsWith("claude:") ? model.slice("claude:".length) : model;
429
429
  }
430
430
 
431
+ function forkSessionSelection(params, parent) {
432
+ return {
433
+ model: parent?.model || (stripClaudeModel(params.model) ? params.model : (params.fallbackModel || params.model)),
434
+ effort: parent?.effort || params.effort || params.fallbackEffort,
435
+ };
436
+ }
437
+
431
438
  function visibleModel(model) {
432
439
  if (!model) return "claude:default";
433
440
  return model.startsWith("claude:") ? model : `claude:${model}`;
@@ -3722,14 +3729,13 @@ async function dispatch(method, params = {}) {
3722
3729
  const source = liveSessionId(params.sessionId);
3723
3730
  const forked = await forkSession(source, { dir: await readableCwd(source, params.cwd) });
3724
3731
  const id = forked.sessionId || forked;
3725
- // A fork continues the thread it branched from, so the parent's own model and
3726
- // effort outrank the host's fallback: without this the new session opens on
3727
- // the model default instead of what the parent was running.
3732
+ // The live source is authoritative. A host can carry startup defaults while
3733
+ // the source has since changed model or effort.
3728
3734
  const parent = sessions.get(source);
3735
+ const selection = forkSessionSelection(params, parent);
3729
3736
  const { session, account, usage } = await createSession({
3730
3737
  ...params,
3731
- model: stripClaudeModel(params.model) ? params.model : (parent?.model || params.fallbackModel || params.model),
3732
- effort: params.effort || parent?.effort || params.fallbackEffort,
3738
+ ...selection,
3733
3739
  }, id);
3734
3740
  return {
3735
3741
  id,
@@ -4384,6 +4390,13 @@ async function runSelfTest() {
4384
4390
  ) !== "max") {
4385
4391
  throw new Error(`Claude pinned model self-test failed: ${JSON.stringify(catalog)}`);
4386
4392
  }
4393
+ const inheritedFork = forkSessionSelection(
4394
+ { model: "claude:sonnet", effort: "high" },
4395
+ { model: "claude:opus", effort: "max" },
4396
+ );
4397
+ if (inheritedFork.model !== "claude:opus" || inheritedFork.effort !== "max") {
4398
+ throw new Error(`Claude fork selection self-test failed: ${JSON.stringify(inheritedFork)}`);
4399
+ }
4387
4400
  const notification = taskNotifications({
4388
4401
  origin: { kind: "task-notification" },
4389
4402
  message: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devez-vibe",
3
- "version": "1.9.18",
3
+ "version": "1.9.20",
4
4
  "type": "module",
5
5
  "description": "Stable terminal UI for Codex and Claude Agent SDK",
6
6
  "keywords": [