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 +6 -0
- package/dist/vibeOS.js +49 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
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.
|
|
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",
|