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 CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.24.22
2
+ - fix: restore bootstrap token and install regression (#149)
3
+
4
+
1
5
  ## 0.24.21
2
6
  - feat: pass user_text to RF prediction engine via control-vector API (#146)
3
7
  - feat: pass user_text to RF prediction engine via control-vector API
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 = normalizeApiToken(m[1], "");
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() || normalizeApiToken(process.env.VIBEOS_API_TOKEN, "");
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 = normalizeApiToken(newToken, EMBEDDED_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 = normalizeApiToken(process.env.VIBEOS_API_TOKEN, "");
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 writeSelection(key, value) {
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 writeSelection("optimization_mode", mode);
2522
+ return writeSelection2("optimization_mode", mode);
2505
2523
  }
2506
- function writeSessionOptMode(sid, mode) {
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
- writeSessionOptMode(_OC_SID, mode);
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
- writeSelection(key, val);
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" && currentSel.optimization_mode !== "vibelitex";
10757
- if (!fallbackPinned && userOptMode !== cv.optimization_mode) {
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
- writeSelection("previous_default_agent", oc.default_agent);
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
- writeSelection("previous_default_agent", null);
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.21",
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",