vibeostheog 0.24.21 → 0.24.22
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 +4 -0
- package/dist/vibeOS.js +85 -17
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
package/dist/vibeOS.js
CHANGED
|
@@ -1734,6 +1734,10 @@ function normalizeApiToken(token, fallback2 = "") {
|
|
|
1734
1734
|
const clean = String(token || "").trim();
|
|
1735
1735
|
return API_TOKEN_RE.test(clean) ? clean : fallback2;
|
|
1736
1736
|
}
|
|
1737
|
+
function normalizeDirectApiToken(token) {
|
|
1738
|
+
const clean = normalizeApiToken(token, "");
|
|
1739
|
+
return clean && clean !== EMBEDDED_API_TOKEN ? clean : "";
|
|
1740
|
+
}
|
|
1737
1741
|
function isTruthyFlag(value) {
|
|
1738
1742
|
return API_DISABLED_RE.test(String(value || "").trim());
|
|
1739
1743
|
}
|
|
@@ -2095,7 +2099,7 @@ function readTokenFromDisk() {
|
|
|
2095
2099
|
const env = readFileSync2(dir + "/.env.production", "utf8");
|
|
2096
2100
|
const m = env.match(/^VIBEOS_API_TOKEN=(.+)$/m);
|
|
2097
2101
|
if (m) {
|
|
2098
|
-
const clean =
|
|
2102
|
+
const clean = normalizeDirectApiToken(m[1]);
|
|
2099
2103
|
if (clean)
|
|
2100
2104
|
return clean;
|
|
2101
2105
|
}
|
|
@@ -2104,6 +2108,16 @@ function readTokenFromDisk() {
|
|
|
2104
2108
|
}
|
|
2105
2109
|
return "";
|
|
2106
2110
|
}
|
|
2111
|
+
function hasPrimaryTokenOnDisk() {
|
|
2112
|
+
if (readApiDisabledFromDisk())
|
|
2113
|
+
return false;
|
|
2114
|
+
try {
|
|
2115
|
+
const env = readFileSync2(_envPaths[0] + "/.env.production", "utf8");
|
|
2116
|
+
return /^VIBEOS_API_TOKEN=/m.test(env);
|
|
2117
|
+
} catch {
|
|
2118
|
+
return false;
|
|
2119
|
+
}
|
|
2120
|
+
}
|
|
2107
2121
|
function readBootstrapTokenFromDisk() {
|
|
2108
2122
|
if (readApiDisabledFromDisk())
|
|
2109
2123
|
return "";
|
|
@@ -2117,7 +2131,7 @@ function readBootstrapTokenFromDisk() {
|
|
|
2117
2131
|
return "";
|
|
2118
2132
|
}
|
|
2119
2133
|
var VIBEOS_API_DISABLED = readApiDisabledFromDisk() || isTruthyFlag(process.env.VIBEOS_API_DISABLED);
|
|
2120
|
-
var VIBEOS_API_TOKEN = VIBEOS_API_DISABLED ? "" : readTokenFromDisk() ||
|
|
2134
|
+
var VIBEOS_API_TOKEN = VIBEOS_API_DISABLED ? "" : readTokenFromDisk() || normalizeDirectApiToken(process.env.VIBEOS_API_TOKEN) || (!hasPrimaryTokenOnDisk() ? EMBEDDED_API_TOKEN : "");
|
|
2121
2135
|
var VIBEOS_API_BOOTSTRAP_TOKEN = VIBEOS_API_DISABLED ? "" : readBootstrapTokenFromDisk() || process.env.VIBEOS_API_BOOTSTRAP_TOKEN || EMBEDDED_API_TOKEN;
|
|
2122
2136
|
var VIBEOS_API_ENABLED = !VIBEOS_API_DISABLED && process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
|
|
2123
2137
|
var _anomalyDetector = null;
|
|
@@ -2149,7 +2163,7 @@ function persistBootstrapToken(token) {
|
|
|
2149
2163
|
function setApiToken(newToken) {
|
|
2150
2164
|
try {
|
|
2151
2165
|
VIBEOS_API_DISABLED = false;
|
|
2152
|
-
VIBEOS_API_TOKEN =
|
|
2166
|
+
VIBEOS_API_TOKEN = normalizeDirectApiToken(newToken);
|
|
2153
2167
|
VIBEOS_API_BOOTSTRAP_TOKEN = readBootstrapTokenFromDisk() || VIBEOS_API_BOOTSTRAP_TOKEN;
|
|
2154
2168
|
VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
|
|
2155
2169
|
_apiClient = null;
|
|
@@ -2241,7 +2255,7 @@ function syncApiTokenFromDisk() {
|
|
|
2241
2255
|
const diskDisabled = readApiDisabledFromDisk() || isTruthyFlag(process.env.VIBEOS_API_DISABLED);
|
|
2242
2256
|
const diskToken = readTokenFromDisk() || "";
|
|
2243
2257
|
const diskBootstrapToken = readBootstrapTokenFromDisk() || "";
|
|
2244
|
-
const envToken =
|
|
2258
|
+
const envToken = normalizeDirectApiToken(process.env.VIBEOS_API_TOKEN);
|
|
2245
2259
|
if (diskDisabled) {
|
|
2246
2260
|
if (!VIBEOS_API_DISABLED || VIBEOS_API_TOKEN || VIBEOS_API_BOOTSTRAP_TOKEN || VIBEOS_API_ENABLED) {
|
|
2247
2261
|
VIBEOS_API_DISABLED = true;
|
|
@@ -2284,6 +2298,9 @@ function syncApiTokenFromDisk() {
|
|
|
2284
2298
|
console.error("[vibeOS] API token loaded from VIBEOS_API_TOKEN env var");
|
|
2285
2299
|
} else {
|
|
2286
2300
|
VIBEOS_API_DISABLED = false;
|
|
2301
|
+
if (!VIBEOS_API_TOKEN && !hasPrimaryTokenOnDisk()) {
|
|
2302
|
+
VIBEOS_API_TOKEN = EMBEDDED_API_TOKEN;
|
|
2303
|
+
}
|
|
2287
2304
|
VIBEOS_API_BOOTSTRAP_TOKEN ||= EMBEDDED_API_TOKEN;
|
|
2288
2305
|
VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
|
|
2289
2306
|
}
|
|
@@ -2395,7 +2412,7 @@ function safeJsonParse2(raw) {
|
|
|
2395
2412
|
throw e;
|
|
2396
2413
|
}
|
|
2397
2414
|
}
|
|
2398
|
-
var DFLT_SEL = { enabled: true, active_slot: null, slot_locked: false, thinking_level: "off", flow_enabled: true, tdd_enforce: false, tdd_strict: false, tdd_quality: true, flow_enforce: true, delegation_enforce: true, onboarding_mode: null, selected_provider: null, selected_quality_tier: null, selected_model: null, executed_provider: null, executed_quality_tier: null, executed_model: null, previous_default_agent: null };
|
|
2415
|
+
var DFLT_SEL = { enabled: true, active_slot: null, slot_locked: false, thinking_level: "off", flow_enabled: true, tdd_enforce: false, tdd_strict: false, tdd_quality: true, flow_enforce: true, delegation_enforce: true, onboarding_mode: null, selected_provider: null, selected_quality_tier: null, selected_model: null, executed_provider: null, executed_quality_tier: null, executed_model: null, previous_default_agent: null, previous_optimization_mode: null };
|
|
2399
2416
|
function loadSelection() {
|
|
2400
2417
|
const TIERS_FILE3 = join3(getVibeOSHome2(), "model-tiers.json");
|
|
2401
2418
|
try {
|
|
@@ -2427,14 +2444,15 @@ function loadSelection() {
|
|
|
2427
2444
|
executed_provider: j?.selection?.executed_provider || null,
|
|
2428
2445
|
executed_quality_tier: j?.selection?.executed_quality_tier || null,
|
|
2429
2446
|
executed_model: j?.selection?.executed_model || null,
|
|
2430
|
-
previous_default_agent: j?.selection?.previous_default_agent || null
|
|
2447
|
+
previous_default_agent: j?.selection?.previous_default_agent || null,
|
|
2448
|
+
previous_optimization_mode: j?.selection?.previous_optimization_mode || null
|
|
2431
2449
|
};
|
|
2432
2450
|
} catch {
|
|
2433
2451
|
_handleStateCorruption2(TIERS_FILE3);
|
|
2434
2452
|
return DFLT_SEL;
|
|
2435
2453
|
}
|
|
2436
2454
|
}
|
|
2437
|
-
function
|
|
2455
|
+
function writeSelection2(key, value) {
|
|
2438
2456
|
const TIERS_FILE3 = join3(getVibeOSHome2(), "model-tiers.json");
|
|
2439
2457
|
try {
|
|
2440
2458
|
return withFileLock(TIERS_FILE3, () => {
|
|
@@ -2501,9 +2519,9 @@ function loadGlobalOptMode() {
|
|
|
2501
2519
|
}
|
|
2502
2520
|
}
|
|
2503
2521
|
function saveGlobalOptMode(mode) {
|
|
2504
|
-
return
|
|
2522
|
+
return writeSelection2("optimization_mode", mode);
|
|
2505
2523
|
}
|
|
2506
|
-
function
|
|
2524
|
+
function writeSessionOptMode2(sid, mode) {
|
|
2507
2525
|
const BLACKBOX_FILE = join3(getVibeOSHome2(), "blackbox-state.json");
|
|
2508
2526
|
try {
|
|
2509
2527
|
const j = existsSync4(BLACKBOX_FILE) ? safeJsonParse2(readFileSync3(BLACKBOX_FILE, "utf-8")) : {};
|
|
@@ -7248,6 +7266,27 @@ function setBlackboxEnabled2(val) {
|
|
|
7248
7266
|
var DFLT_OPTIMIZATION_MODE = "budget";
|
|
7249
7267
|
function loadOptimizationMode() {
|
|
7250
7268
|
try {
|
|
7269
|
+
const sel = loadSelection();
|
|
7270
|
+
const persistedMode = sel.optimization_mode || null;
|
|
7271
|
+
if (persistedMode === "vibelitex" && !isApiFallback2()) {
|
|
7272
|
+
const prevKey = `${_OC_SID}_prev_opt`;
|
|
7273
|
+
const recoveryMode = sel.previous_optimization_mode || loadSessionOptMode(prevKey);
|
|
7274
|
+
if (recoveryMode && recoveryMode !== "vibelitex") {
|
|
7275
|
+
try {
|
|
7276
|
+
writeSelection("previous_optimization_mode", null);
|
|
7277
|
+
} catch {
|
|
7278
|
+
}
|
|
7279
|
+
try {
|
|
7280
|
+
writeSessionOptMode2(_OC_SID, recoveryMode);
|
|
7281
|
+
} catch {
|
|
7282
|
+
}
|
|
7283
|
+
try {
|
|
7284
|
+
writeSessionOptMode2(prevKey, "");
|
|
7285
|
+
} catch {
|
|
7286
|
+
}
|
|
7287
|
+
return recoveryMode;
|
|
7288
|
+
}
|
|
7289
|
+
}
|
|
7251
7290
|
const mode = loadSessionOptMode(_OC_SID);
|
|
7252
7291
|
if (mode && mode !== "auto")
|
|
7253
7292
|
return mode;
|
|
@@ -7261,7 +7300,7 @@ function loadOptimizationMode() {
|
|
|
7261
7300
|
}
|
|
7262
7301
|
function saveOptimizationMode(mode) {
|
|
7263
7302
|
try {
|
|
7264
|
-
|
|
7303
|
+
writeSessionOptMode2(_OC_SID, mode);
|
|
7265
7304
|
} catch (e) {
|
|
7266
7305
|
console.error("[vibeOS] saveOptimizationMode session write failed: " + e.message);
|
|
7267
7306
|
}
|
|
@@ -10712,7 +10751,7 @@ function syncControlSettings(cv, options = {}) {
|
|
|
10712
10751
|
const writeIf = (key, val) => {
|
|
10713
10752
|
const sel = loadSelection();
|
|
10714
10753
|
if (sel[key] !== val)
|
|
10715
|
-
|
|
10754
|
+
writeSelection2(key, val);
|
|
10716
10755
|
};
|
|
10717
10756
|
if (isManualMode) {
|
|
10718
10757
|
const allEntries = [...BRANDED_MODES, ...RUNTIME_MODES];
|
|
@@ -10753,9 +10792,26 @@ function syncControlSettings(cv, options = {}) {
|
|
|
10753
10792
|
writeIf("thinking_level", nextThinking);
|
|
10754
10793
|
}
|
|
10755
10794
|
if (persistOptimizationMode && cv.optimization_mode && userOptMode !== "auto") {
|
|
10756
|
-
const fallbackPinned = isApiFallback() && cv.optimization_mode === "vibelitex"
|
|
10757
|
-
|
|
10795
|
+
const fallbackPinned = isApiFallback() && cv.optimization_mode === "vibelitex";
|
|
10796
|
+
const previousOptMode2 = typeof currentSel.previous_optimization_mode === "string" ? currentSel.previous_optimization_mode : null;
|
|
10797
|
+
const prevSessionKey2 = `${sid}_prev_opt`;
|
|
10798
|
+
const sessionPreviousOptMode = loadSessionOptMode(prevSessionKey2);
|
|
10799
|
+
const restoreMode = sessionPreviousOptMode || previousOptMode2;
|
|
10800
|
+
const canRestorePrevious = !isApiFallback() && !!restoreMode && cv.optimization_mode !== "vibelitex" && (previousOptMode2 !== null || sessionPreviousOptMode !== null);
|
|
10801
|
+
if (fallbackPinned) {
|
|
10802
|
+
if (currentSel.optimization_mode !== "vibelitex") {
|
|
10803
|
+
writeIf("previous_optimization_mode", currentSel.optimization_mode);
|
|
10804
|
+
writeSessionOptMode(prevSessionKey2, currentSel.optimization_mode || "");
|
|
10805
|
+
}
|
|
10806
|
+
} else if (canRestorePrevious) {
|
|
10807
|
+
writeIf("optimization_mode", restoreMode);
|
|
10808
|
+
writeIf("previous_optimization_mode", null);
|
|
10809
|
+
writeSessionOptMode(sid, restoreMode);
|
|
10810
|
+
writeSessionOptMode(prevSessionKey2, "");
|
|
10811
|
+
} else if (userOptMode !== cv.optimization_mode) {
|
|
10758
10812
|
writeIf("optimization_mode", cv.optimization_mode);
|
|
10813
|
+
if (previousOptMode2)
|
|
10814
|
+
writeIf("previous_optimization_mode", null);
|
|
10759
10815
|
}
|
|
10760
10816
|
}
|
|
10761
10817
|
const slot = cv.tier_bias;
|
|
@@ -10779,7 +10835,7 @@ function syncControlSettings(cv, options = {}) {
|
|
|
10779
10835
|
const oc = safeJsonParse3(readFileSync13(OC_CONFIG, "utf-8"));
|
|
10780
10836
|
if (oc.default_agent !== cv.agent_mode) {
|
|
10781
10837
|
if (cv.agent_mode === "plan" && oc.default_agent && oc.default_agent !== "plan") {
|
|
10782
|
-
|
|
10838
|
+
writeSelection2("previous_default_agent", oc.default_agent);
|
|
10783
10839
|
}
|
|
10784
10840
|
oc.default_agent = cv.agent_mode;
|
|
10785
10841
|
writeFileSync12(OC_CONFIG, JSON.stringify(oc, null, 2) + "\n");
|
|
@@ -10797,12 +10853,24 @@ function syncControlSettings(cv, options = {}) {
|
|
|
10797
10853
|
oc.default_agent = restoreAgent;
|
|
10798
10854
|
writeFileSync12(OC_CONFIG, JSON.stringify(oc, null, 2) + "\n");
|
|
10799
10855
|
if (currentSel.previous_default_agent)
|
|
10800
|
-
|
|
10856
|
+
writeSelection2("previous_default_agent", null);
|
|
10801
10857
|
}
|
|
10802
10858
|
}
|
|
10803
10859
|
} catch {
|
|
10804
10860
|
}
|
|
10805
10861
|
}
|
|
10862
|
+
if (!isApiFallback() && cv.optimization_mode && cv.optimization_mode !== "vibelitex") {
|
|
10863
|
+
const finalSel = loadSelection();
|
|
10864
|
+
if (finalSel.optimization_mode === "vibelitex") {
|
|
10865
|
+
const restoreCandidate = finalSel.previous_optimization_mode || loadSessionOptMode(prevSessionKey) || previousOptMode;
|
|
10866
|
+
if (restoreCandidate && restoreCandidate !== "vibelitex") {
|
|
10867
|
+
writeSelection2("optimization_mode", restoreCandidate);
|
|
10868
|
+
writeSelection2("previous_optimization_mode", null);
|
|
10869
|
+
writeSessionOptMode(sid, restoreCandidate);
|
|
10870
|
+
writeSessionOptMode(prevSessionKey, "");
|
|
10871
|
+
}
|
|
10872
|
+
}
|
|
10873
|
+
}
|
|
10806
10874
|
} catch {
|
|
10807
10875
|
}
|
|
10808
10876
|
}
|
|
@@ -14600,7 +14668,7 @@ async function DelegationEnforcer({ client: client2, directory: directory3 } = {
|
|
|
14600
14668
|
return hookVibeHome;
|
|
14601
14669
|
},
|
|
14602
14670
|
loadSelection,
|
|
14603
|
-
writeSelection,
|
|
14671
|
+
writeSelection: writeSelection2,
|
|
14604
14672
|
loadCredit,
|
|
14605
14673
|
thinkingLevel,
|
|
14606
14674
|
readLifetimeSavings,
|
|
@@ -14638,7 +14706,7 @@ async function DelegationEnforcer({ client: client2, directory: directory3 } = {
|
|
|
14638
14706
|
saveReportsIndex: saveReportsIndexStable,
|
|
14639
14707
|
backupFile: backupFileStable,
|
|
14640
14708
|
writeSessionSlot: writeSessionSlot2,
|
|
14641
|
-
writeSessionOptMode,
|
|
14709
|
+
writeSessionOptMode: writeSessionOptMode2,
|
|
14642
14710
|
_refreshModel,
|
|
14643
14711
|
setApiToken,
|
|
14644
14712
|
setApiBootstrapToken,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibeostheog",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.22",
|
|
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",
|