vibeostheog 0.24.23 → 0.24.24

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/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.24.24
2
+ - fix: restore persisted slot lock on reload (#151)
3
+ - chore: v0.24.23 (#150)
4
+ Merge remote-tracking branch 'origin/master'
5
+
6
+
1
7
  ## 0.24.23
2
8
  - fix: heal stale vibelitex reconnect state
3
9
 
package/dist/vibeOS.js CHANGED
@@ -3395,6 +3395,15 @@ var _latestBlackboxPivotMsg = null;
3395
3395
  var _modelLocked = false;
3396
3396
  var _lockedSlot = null;
3397
3397
  var _lockedModel = null;
3398
+ function setModelLocked(val) {
3399
+ _modelLocked = !!val;
3400
+ }
3401
+ function setLockedSlot(val) {
3402
+ _lockedSlot = val ? String(val) : null;
3403
+ }
3404
+ function setLockedModel(val) {
3405
+ _lockedModel = val ? String(val) : null;
3406
+ }
3398
3407
  var _patternFiredKeys = /* @__PURE__ */ new Set();
3399
3408
  var _sessionCleanupRegistered = false;
3400
3409
  var _sessionCacheCleaned = false;
@@ -6136,7 +6145,7 @@ function _refreshModel(directory3) {
6136
6145
  console.error(`[vibeOS] auto-detected model: ${currentModel} (tier=${currentTier})`);
6137
6146
  }
6138
6147
  }
6139
- if (!_modelLocked) {
6148
+ if (!(_modelLocked || sel.slot_locked === true)) {
6140
6149
  const activeIsManual = tiersData?.trinity?.[activeSlot]?.manual === true;
6141
6150
  const cfgModel = activeIsManual ? "" : readConfig(directory3) || readConfig(getOpenCodeHome()) || "";
6142
6151
  if (cfgModel && cfgModel.includes("/") && cfgModel !== currentModel) {
@@ -14558,6 +14567,27 @@ async function DelegationEnforcer({ client: client2, directory: directory3 } = {
14558
14567
  } else {
14559
14568
  console.error("[vibeOS] NO MODEL \u2014 enforcement disabled, will auto-detect on first hook");
14560
14569
  }
14570
+ try {
14571
+ const startupSelection = loadSelection();
14572
+ if (startupSelection?.slot_locked === true) {
14573
+ const lockedSlot = ["brain", "medium", "cheap"].includes(String(startupSelection.active_slot || "").trim()) ? String(startupSelection.active_slot) : "brain";
14574
+ let lockedModel = currentModel || null;
14575
+ try {
14576
+ const tiers = safeJsonParse3(readFileSync17(getTiersFile(), "utf-8"));
14577
+ lockedModel = tiers?.trinity?.[lockedSlot]?.oc || lockedModel || null;
14578
+ } catch {
14579
+ }
14580
+ setModelLocked(true);
14581
+ setLockedSlot(lockedSlot);
14582
+ setLockedModel(lockedModel);
14583
+ console.error(`[vibeOS] startup lock restored \u2192 ${lockedSlot}${lockedModel ? ` (${lockedModel})` : ""}`);
14584
+ } else {
14585
+ setModelLocked(false);
14586
+ setLockedSlot(null);
14587
+ setLockedModel(null);
14588
+ }
14589
+ } catch {
14590
+ }
14561
14591
  console.error(`[vibeOS] auto-config guard: currentModel=${currentModel ? "SET" : "NONE"}, TIERS_FILE=${getTiersFile()}, exists=${existsSync18(getTiersFile())}`);
14562
14592
  try {
14563
14593
  if (!existsSync18(getTiersFile())) {
@@ -14648,7 +14678,6 @@ async function DelegationEnforcer({ client: client2, directory: directory3 } = {
14648
14678
  _loadOpenCodeProviders,
14649
14679
  _modelCost: _modelCost2,
14650
14680
  _modelTier: _modelTier2,
14651
- _modelLocked,
14652
14681
  _latestBlackboxState,
14653
14682
  currentModel,
14654
14683
  currentTier,
@@ -14747,6 +14776,24 @@ async function DelegationEnforcer({ client: client2, directory: directory3 } = {
14747
14776
  },
14748
14777
  set _blackboxEnabled(v) {
14749
14778
  setBlackboxEnabled(v);
14779
+ },
14780
+ get _modelLocked() {
14781
+ return _modelLocked;
14782
+ },
14783
+ set _modelLocked(v) {
14784
+ setModelLocked(v);
14785
+ },
14786
+ get _lockedSlot() {
14787
+ return _lockedSlot;
14788
+ },
14789
+ set _lockedSlot(v) {
14790
+ setLockedSlot(v);
14791
+ },
14792
+ get _lockedModel() {
14793
+ return _lockedModel;
14794
+ },
14795
+ set _lockedModel(v) {
14796
+ setLockedModel(v);
14750
14797
  }
14751
14798
  };
14752
14799
  const pluginHooks = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeostheog",
3
- "version": "0.24.23",
3
+ "version": "0.24.24",
4
4
  "description": "Cost-aware delegation enforcer for OpenCode. Tracks model usage, routes Task subagents to cheaper tiers, surfaces cumulative savings in chat. Includes research audit, reporting framework, project memory, progressive scratchpad decadence, and trinity CLI for brain/medium/cheap slot switching.",
5
5
  "scripts": {
6
6
  "release": "node scripts/release.mjs",