vibeostheog 0.25.5 → 0.25.7

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.
@@ -1 +1 @@
1
- window.__VIBEOS_DASHBOARD_BASE__ = "http://127.0.0.1:59486";
1
+ window.__VIBEOS_DASHBOARD_BASE__ = "http://127.0.0.1:53142";
package/dist/vibeOS.js CHANGED
@@ -458,6 +458,7 @@ function getRuntimeState() {
458
458
  apiConnected: true,
459
459
  apiFallbackMode: false,
460
460
  apiFallbackSince: null,
461
+ apiEnabled: true,
461
462
  sessionId: "opencode-" + (process.pid || "x") + "-" + Date.now()
462
463
  };
463
464
  }
@@ -487,7 +488,30 @@ function resetApiConnection() {
487
488
  }
488
489
  function isApiConnected() {
489
490
  const state = getRuntimeState();
490
- return state.apiConnected && !state.apiFallbackMode;
491
+ return state.apiEnabled;
492
+ }
493
+ function isApiFallbackMode() {
494
+ return getRuntimeState().apiFallbackMode;
495
+ }
496
+ function getApiFallbackSince() {
497
+ return getRuntimeState().apiFallbackSince;
498
+ }
499
+ function isApiEnabled() {
500
+ return getRuntimeState().apiEnabled;
501
+ }
502
+ function setApiEnabled(enabled) {
503
+ getRuntimeState().apiEnabled = enabled;
504
+ }
505
+ function setApiFallbackSince(since) {
506
+ getRuntimeState().apiFallbackSince = since;
507
+ }
508
+ function setApiFallbackMode(on) {
509
+ const state = getRuntimeState();
510
+ state.apiFallbackMode = on;
511
+ if (on && !state.apiFallbackSince)
512
+ state.apiFallbackSince = (/* @__PURE__ */ new Date()).toISOString();
513
+ if (!on)
514
+ state.apiFallbackSince = null;
491
515
  }
492
516
  var RUNTIME_KEY;
493
517
  var init_runtime_state = __esm({
@@ -4641,9 +4665,11 @@ var DEFAULT_API_URL = "https://api.vibetheog.com";
4641
4665
  var EMBEDDED_API_TOKEN = "vos_8d73804b13bb46711b9a47f036dba7b4d026fd9583d96960e663716e62815a69";
4642
4666
  var API_TOKEN_RE = /^vos_[a-f0-9]{64}$/i;
4643
4667
  var API_DISABLED_RE = /^(1|true|yes|on)$/i;
4644
- var REQUEST_TIMEOUT = 1e4;
4645
- var MAX_RETRIES = 3;
4646
- var BASE_RETRY_DELAY = 1e3;
4668
+ var IS_TEST_RUNTIME = process.env.VIBEOS_TEST_MODE === "1" || process.env.NODE_ENV === "test" || process.env.CI === "true";
4669
+ var REQUEST_TIMEOUT = IS_TEST_RUNTIME ? 2e3 : 1e4;
4670
+ var MAX_RETRIES = IS_TEST_RUNTIME ? 1 : 3;
4671
+ var BASE_RETRY_DELAY = IS_TEST_RUNTIME ? 100 : 1e3;
4672
+ var PROBE_TIMEOUT = IS_TEST_RUNTIME ? 2e3 : 5e3;
4647
4673
  var ALPHA_BUILD_CHANNEL = String(process.env.VIBEOS_BUILD_CHANNEL || "alpha").toLowerCase();
4648
4674
  var BOOTSTRAP_EXCHANGE_PATH = "/api/v1/auth/bootstrap/exchange";
4649
4675
  var BOOTSTRAP_RETRY_COOLDOWN_MS = 6e4;
@@ -5109,16 +5135,6 @@ function readTokenFromDisk() {
5109
5135
  }
5110
5136
  return "";
5111
5137
  }
5112
- function hasPrimaryTokenOnDisk() {
5113
- if (readApiDisabledFromDisk())
5114
- return false;
5115
- try {
5116
- const env = readFileSync2(_envPaths[0] + "/.env.production", "utf8");
5117
- return /^VIBEOS_API_TOKEN=/m.test(env);
5118
- } catch {
5119
- return false;
5120
- }
5121
- }
5122
5138
  function readBootstrapTokenFromDisk() {
5123
5139
  if (readApiDisabledFromDisk())
5124
5140
  return "";
@@ -5132,9 +5148,9 @@ function readBootstrapTokenFromDisk() {
5132
5148
  return "";
5133
5149
  }
5134
5150
  var VIBEOS_API_DISABLED = readApiDisabledFromDisk() || isTruthyFlag(process.env.VIBEOS_API_DISABLED);
5135
- var VIBEOS_API_TOKEN = VIBEOS_API_DISABLED ? "" : readTokenFromDisk() || normalizeDirectApiToken(process.env.VIBEOS_API_TOKEN) || (!hasPrimaryTokenOnDisk() ? EMBEDDED_API_TOKEN : "");
5151
+ var VIBEOS_API_TOKEN = VIBEOS_API_DISABLED ? "" : readTokenFromDisk() || normalizeDirectApiToken(process.env.VIBEOS_API_TOKEN);
5136
5152
  var VIBEOS_API_BOOTSTRAP_TOKEN = VIBEOS_API_DISABLED ? "" : readBootstrapTokenFromDisk() || process.env.VIBEOS_API_BOOTSTRAP_TOKEN || EMBEDDED_API_TOKEN;
5137
- var VIBEOS_API_ENABLED = !VIBEOS_API_DISABLED && process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
5153
+ setApiEnabled(!VIBEOS_API_DISABLED && process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
5138
5154
  var _anomalyDetector = null;
5139
5155
  function getAnomalyDetector() {
5140
5156
  if (!_anomalyDetector)
@@ -5166,10 +5182,10 @@ function setApiToken(newToken) {
5166
5182
  VIBEOS_API_DISABLED = false;
5167
5183
  VIBEOS_API_TOKEN = normalizeDirectApiToken(newToken);
5168
5184
  VIBEOS_API_BOOTSTRAP_TOKEN = readBootstrapTokenFromDisk() || VIBEOS_API_BOOTSTRAP_TOKEN;
5169
- VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
5185
+ setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
5170
5186
  _apiClient = null;
5171
- _apiFallbackMode = false;
5172
- _apiFallbackSince = null;
5187
+ setApiFallbackMode(false);
5188
+ setApiFallbackSince(null);
5173
5189
  persistPrimaryApiEnvState({ token: VIBEOS_API_TOKEN, disabled: false });
5174
5190
  if (_anomalyDetector)
5175
5191
  _anomalyDetector.reset();
@@ -5184,10 +5200,10 @@ function invalidateApiToken() {
5184
5200
  VIBEOS_API_DISABLED = true;
5185
5201
  VIBEOS_API_TOKEN = "";
5186
5202
  VIBEOS_API_BOOTSTRAP_TOKEN = "";
5187
- VIBEOS_API_ENABLED = false;
5203
+ setApiEnabled(false);
5188
5204
  _apiClient = null;
5189
- _apiFallbackMode = false;
5190
- _apiFallbackSince = null;
5205
+ setApiFallbackMode(false);
5206
+ setApiFallbackSince(null);
5191
5207
  if (_anomalyDetector)
5192
5208
  _anomalyDetector.reset();
5193
5209
  persistBootstrapToken("");
@@ -5202,7 +5218,7 @@ function setApiBootstrapToken(newToken) {
5202
5218
  try {
5203
5219
  VIBEOS_API_DISABLED = false;
5204
5220
  VIBEOS_API_BOOTSTRAP_TOKEN = String(newToken || "").trim();
5205
- VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
5221
+ setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
5206
5222
  persistPrimaryApiEnvState({ disabled: false });
5207
5223
  persistBootstrapToken(VIBEOS_API_BOOTSTRAP_TOKEN);
5208
5224
  console.error("[vibeOS] Alpha bootstrap token updated");
@@ -5212,32 +5228,24 @@ function setApiBootstrapToken(newToken) {
5212
5228
  }
5213
5229
  var _apiClient = null;
5214
5230
  var _startupProbeDone = false;
5215
- var _apiFallbackMode = false;
5216
- var _apiFallbackSince = null;
5217
5231
  var _bootstrapExchangeInFlight = null;
5218
5232
  var _bootstrapExchangeFailedAt = 0;
5219
5233
  var _backendVersion = "";
5220
5234
  var FALLBACK_COOLDOWN_MS = 6e4;
5221
5235
  function tryResetFallbackCooldown() {
5222
- if (!_apiFallbackMode || !_apiFallbackSince)
5236
+ if (!isApiFallbackMode() || !getApiFallbackSince())
5223
5237
  return false;
5224
- const elapsed = Date.now() - new Date(_apiFallbackSince).getTime();
5238
+ const elapsed = Date.now() - new Date(getApiFallbackSince()).getTime();
5225
5239
  if (elapsed > FALLBACK_COOLDOWN_MS) {
5226
- _apiFallbackMode = false;
5227
- _apiFallbackSince = null;
5240
+ setApiFallbackMode(false);
5241
+ setApiFallbackSince(null);
5228
5242
  markApiConnected();
5229
5243
  return true;
5230
5244
  }
5231
5245
  return false;
5232
5246
  }
5233
- function confirmReconnection() {
5234
- _apiFallbackMode = false;
5235
- _apiFallbackSince = null;
5236
- markApiConnected();
5237
- console.warn("[vibeOS] API reconnected \u2014 health probe passed");
5238
- }
5239
5247
  function denyReconnection(detail) {
5240
- _apiFallbackSince = (/* @__PURE__ */ new Date()).toISOString();
5248
+ setApiFallbackSince((/* @__PURE__ */ new Date()).toISOString());
5241
5249
  console.warn(`[vibeOS] API health probe failed during reconnect: ${detail} \u2014 staying in fallback`);
5242
5250
  }
5243
5251
  function recordBackendVersion(payload) {
@@ -5266,7 +5274,7 @@ async function ensureBootstrapExchange() {
5266
5274
  try {
5267
5275
  const client2 = new VibeOSApiClient({
5268
5276
  baseUrl: VIBEOS_API_URL,
5269
- timeout: 5e3
5277
+ timeout: PROBE_TIMEOUT
5270
5278
  });
5271
5279
  const apiToken = await client2.exchangeBootstrapToken(VIBEOS_API_BOOTSTRAP_TOKEN, ALPHA_BUILD_CHANNEL);
5272
5280
  if (!apiToken)
@@ -5290,14 +5298,14 @@ function syncApiTokenFromDisk() {
5290
5298
  const diskBootstrapToken = readBootstrapTokenFromDisk() || "";
5291
5299
  const envToken = normalizeDirectApiToken(process.env.VIBEOS_API_TOKEN);
5292
5300
  if (diskDisabled) {
5293
- if (!VIBEOS_API_DISABLED || VIBEOS_API_TOKEN || VIBEOS_API_BOOTSTRAP_TOKEN || VIBEOS_API_ENABLED) {
5301
+ if (!VIBEOS_API_DISABLED || VIBEOS_API_TOKEN || VIBEOS_API_BOOTSTRAP_TOKEN || isApiEnabled()) {
5294
5302
  VIBEOS_API_DISABLED = true;
5295
5303
  VIBEOS_API_TOKEN = "";
5296
5304
  VIBEOS_API_BOOTSTRAP_TOKEN = "";
5297
- VIBEOS_API_ENABLED = false;
5305
+ setApiEnabled(false);
5298
5306
  _apiClient = null;
5299
- _apiFallbackMode = false;
5300
- _apiFallbackSince = null;
5307
+ setApiFallbackMode(false);
5308
+ setApiFallbackSince(null);
5301
5309
  resetApiConnection();
5302
5310
  console.error("[vibeOS] API token disabled from disk (alpha kill switch active)");
5303
5311
  }
@@ -5306,72 +5314,69 @@ function syncApiTokenFromDisk() {
5306
5314
  if (diskToken && diskToken !== VIBEOS_API_TOKEN) {
5307
5315
  VIBEOS_API_DISABLED = false;
5308
5316
  VIBEOS_API_TOKEN = diskToken;
5309
- VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
5317
+ setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
5310
5318
  _apiClient = null;
5311
- _apiFallbackMode = false;
5312
- _apiFallbackSince = null;
5319
+ setApiFallbackMode(false);
5320
+ setApiFallbackSince(null);
5313
5321
  resetApiConnection();
5314
5322
  console.error("[vibeOS] API token synced from disk (disk is newer)");
5315
5323
  } else if (diskBootstrapToken && diskBootstrapToken !== VIBEOS_API_BOOTSTRAP_TOKEN) {
5316
5324
  VIBEOS_API_DISABLED = false;
5317
5325
  VIBEOS_API_BOOTSTRAP_TOKEN = diskBootstrapToken;
5318
- VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
5319
- _apiFallbackMode = false;
5320
- _apiFallbackSince = null;
5326
+ setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
5327
+ setApiFallbackMode(false);
5328
+ setApiFallbackSince(null);
5321
5329
  resetApiConnection();
5322
5330
  console.error("[vibeOS] Alpha bootstrap token synced from disk (disk is newer)");
5323
5331
  } else if (!diskToken && VIBEOS_API_TOKEN) {
5324
5332
  persistPrimaryApiEnvState({ token: VIBEOS_API_TOKEN, disabled: false });
5325
5333
  console.error("[vibeOS] API token persisted to disk from memory (disk was empty)");
5326
- VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && !!VIBEOS_API_TOKEN;
5334
+ setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && !!VIBEOS_API_TOKEN);
5327
5335
  } else if (envToken && !diskToken && !VIBEOS_API_TOKEN) {
5328
5336
  VIBEOS_API_DISABLED = false;
5329
5337
  VIBEOS_API_TOKEN = envToken;
5330
- VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
5338
+ setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
5331
5339
  console.error("[vibeOS] API token loaded from VIBEOS_API_TOKEN env var");
5332
5340
  } else {
5333
5341
  VIBEOS_API_DISABLED = false;
5334
- if (!VIBEOS_API_TOKEN && !hasPrimaryTokenOnDisk()) {
5335
- VIBEOS_API_TOKEN = EMBEDDED_API_TOKEN;
5336
- }
5337
5342
  VIBEOS_API_BOOTSTRAP_TOKEN ||= EMBEDDED_API_TOKEN;
5338
- VIBEOS_API_ENABLED = process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN);
5343
+ setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
5339
5344
  }
5340
5345
  }
5341
5346
  function getApiClient2() {
5342
5347
  syncApiTokenFromDisk();
5343
- if (!_apiClient && VIBEOS_API_ENABLED && VIBEOS_API_TOKEN) {
5348
+ if (!_apiClient && isApiEnabled() && VIBEOS_API_TOKEN) {
5344
5349
  _apiClient = new VibeOSApiClient({
5345
5350
  baseUrl: VIBEOS_API_URL,
5346
5351
  apiToken: VIBEOS_API_TOKEN,
5347
- timeout: 5e3
5352
+ timeout: PROBE_TIMEOUT
5348
5353
  });
5349
5354
  }
5350
5355
  return _apiClient;
5351
5356
  }
5352
5357
  function isApiFallback2() {
5353
- return _apiFallbackMode || !VIBEOS_API_ENABLED;
5358
+ return isApiFallbackMode() || !isApiEnabled();
5354
5359
  }
5355
5360
  function isApiConnected2() {
5356
5361
  tryResetFallbackCooldown();
5357
- return isApiConnected() && VIBEOS_API_ENABLED && !_apiFallbackMode;
5362
+ return isApiConnected();
5358
5363
  }
5359
5364
  function getBackendVersion() {
5360
5365
  return _backendVersion;
5361
5366
  }
5362
- function getApiFallbackSince() {
5363
- return _apiFallbackSince;
5367
+ function getApiFallbackSince2() {
5368
+ return getApiFallbackSince();
5364
5369
  }
5365
5370
  async function remoteCall(method, args, fallbackFn) {
5366
- if (!_startupProbeDone && !_apiFallbackMode) {
5371
+ if (!_startupProbeDone && !isApiFallbackMode()) {
5367
5372
  _startupProbeDone = true;
5368
5373
  try {
5369
5374
  syncApiTokenFromDisk();
5370
- if (VIBEOS_API_ENABLED) {
5375
+ if (isApiEnabled()) {
5371
5376
  const probeClient = getApiClient2();
5372
5377
  if (probeClient) {
5373
5378
  await probeClient.health();
5374
- confirmReconnection();
5379
+ markApiConnected();
5375
5380
  }
5376
5381
  }
5377
5382
  } catch {
@@ -5381,15 +5386,17 @@ async function remoteCall(method, args, fallbackFn) {
5381
5386
  if (!VIBEOS_API_TOKEN && VIBEOS_API_BOOTSTRAP_TOKEN) {
5382
5387
  await ensureBootstrapExchange();
5383
5388
  syncApiTokenFromDisk();
5389
+ if (VIBEOS_API_TOKEN)
5390
+ markApiConnected();
5384
5391
  }
5385
- if (_apiFallbackMode && _apiFallbackSince) {
5386
- const elapsed = Date.now() - new Date(_apiFallbackSince).getTime();
5392
+ if (isApiFallbackMode() && getApiFallbackSince()) {
5393
+ const elapsed = Date.now() - new Date(getApiFallbackSince()).getTime();
5387
5394
  if (elapsed > FALLBACK_COOLDOWN_MS) {
5388
5395
  try {
5389
5396
  const probeClient = getApiClient2();
5390
5397
  if (probeClient) {
5391
5398
  await probeClient.health();
5392
- confirmReconnection();
5399
+ markApiConnected();
5393
5400
  } else {
5394
5401
  denyReconnection("no client");
5395
5402
  if (fallbackFn)
@@ -5407,7 +5414,7 @@ async function remoteCall(method, args, fallbackFn) {
5407
5414
  }
5408
5415
  }
5409
5416
  }
5410
- if (!VIBEOS_API_ENABLED || _apiFallbackMode) {
5417
+ if (!isApiEnabled() || isApiFallbackMode()) {
5411
5418
  if (fallbackFn)
5412
5419
  return fallbackFn();
5413
5420
  return null;
@@ -5429,13 +5436,12 @@ async function remoteCall(method, args, fallbackFn) {
5429
5436
  const result = await client2[method](...args);
5430
5437
  if (method === "health")
5431
5438
  recordBackendVersion(result);
5432
- if (_apiFallbackMode) {
5433
- _apiFallbackMode = false;
5434
- _apiFallbackSince = null;
5435
- console.warn(`[vibeOS] API reconnected \u2014 ${method} OK`);
5439
+ if (isApiFallbackMode()) {
5440
+ setApiFallbackMode(false);
5441
+ setApiFallbackSince(null);
5436
5442
  }
5437
- _apiFallbackMode = false;
5438
- _apiFallbackSince = null;
5443
+ setApiFallbackMode(false);
5444
+ setApiFallbackSince(null);
5439
5445
  markApiConnected();
5440
5446
  return result;
5441
5447
  } catch (err) {
@@ -5443,9 +5449,9 @@ async function remoteCall(method, args, fallbackFn) {
5443
5449
  const body = err?.response?.body || err?.body || "";
5444
5450
  const bodyPreview = typeof body === "string" ? body.substring(0, 120) : String(body).substring(0, 120);
5445
5451
  const detail = status ? `status=${status} body=${bodyPreview}` : `message=${err?.message || err}`;
5446
- if (!_apiFallbackMode) {
5447
- _apiFallbackMode = true;
5448
- _apiFallbackSince = (/* @__PURE__ */ new Date()).toISOString();
5452
+ if (!isApiFallbackMode()) {
5453
+ setApiFallbackMode(true);
5454
+ setApiFallbackSince((/* @__PURE__ */ new Date()).toISOString());
5449
5455
  console.error(`[vibeOS] API fallback activated (${method}): ${detail}`);
5450
5456
  }
5451
5457
  if (status === 401 || status === 403) {
@@ -12324,8 +12330,8 @@ function buildFooterLine(input) {
12324
12330
 
12325
12331
  // src/lib/hooks/footer.js
12326
12332
  var IS_CLI_RUNTIME = Boolean(process.stdout?.isTTY || process.stderr?.isTTY || process.stdin?.isTTY);
12327
- var IS_TEST_RUNTIME = process.env.VIBEOS_MCP_PORT === "0" || process.env.NODE_ENV === "test" || process.env.CI === "true";
12328
- var FOOTER_DEBUG_STDERR = process.env.VIBEOS_DEBUG_FOOTER === "1" || !IS_CLI_RUNTIME && !IS_TEST_RUNTIME;
12333
+ var IS_TEST_RUNTIME2 = process.env.VIBEOS_MCP_PORT === "0" || process.env.NODE_ENV === "test" || process.env.CI === "true";
12334
+ var FOOTER_DEBUG_STDERR = process.env.VIBEOS_DEBUG_FOOTER === "1" || !IS_CLI_RUNTIME && !IS_TEST_RUNTIME2;
12329
12335
  function footerDebug(...args) {
12330
12336
  if (FOOTER_DEBUG_STDERR)
12331
12337
  console.error(...args);
@@ -15399,6 +15405,7 @@ function scheduleMcpServerRestart() {
15399
15405
  _mcpServerRestartTimer = null;
15400
15406
  void ensureMcpServerRunning();
15401
15407
  }, 500);
15408
+ if (typeof _mcpServerRestartTimer.unref === "function") _mcpServerRestartTimer.unref();
15402
15409
  }
15403
15410
  function attachMcpServerWatchdog(server2) {
15404
15411
  server2?.once?.("close", () => {
@@ -15447,7 +15454,7 @@ async function ensureMcpServerRunning() {
15447
15454
  backendHealthUrl: `${VIBEOS_API_URL}/health`,
15448
15455
  backendVersion: getBackendVersion(),
15449
15456
  apiFallbackMode: isApiFallback2(),
15450
- apiFallbackSince: getApiFallbackSince(),
15457
+ apiFallbackSince: getApiFallbackSince2(),
15451
15458
  modelLocked: _modelLocked,
15452
15459
  lockedSlot: _lockedSlot,
15453
15460
  lockedModel: _lockedModel
@@ -15834,7 +15841,7 @@ async function DelegationEnforcer({ client: client2, directory: directory3 } = {
15834
15841
  saveBlackboxState,
15835
15842
  isApiFallback: () => isApiFallback2(),
15836
15843
  get _apiFallbackSince() {
15837
- return getApiFallbackSince();
15844
+ return getApiFallbackSince2();
15838
15845
  },
15839
15846
  reportsIndex: reportsIndexStable,
15840
15847
  saveReportsIndex: saveReportsIndexStable,
@@ -16079,7 +16086,7 @@ ${report.narrative}`);
16079
16086
  }
16080
16087
  };
16081
16088
  _pluginHooksRuntime = pluginHooks;
16082
- const _inTestEnv = process.env.VIBEOS_MCP_PORT === "0";
16089
+ const _inTestEnv = process.env.VIBEOS_MCP_PORT === "0" || process.env.NODE_ENV === "test" || process.execArgv.some((arg) => arg === "--test" || arg.startsWith("--test="));
16083
16090
  if (!_inTestEnv)
16084
16091
  void ensureMcpServerRunning();
16085
16092
  return pluginHooks;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeostheog",
3
- "version": "0.25.5",
3
+ "version": "0.25.7",
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",