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:
|
|
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.
|
|
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
|
|
4645
|
-
var
|
|
4646
|
-
var
|
|
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)
|
|
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
|
-
|
|
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
|
-
|
|
5185
|
+
setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
|
|
5170
5186
|
_apiClient = null;
|
|
5171
|
-
|
|
5172
|
-
|
|
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
|
-
|
|
5203
|
+
setApiEnabled(false);
|
|
5188
5204
|
_apiClient = null;
|
|
5189
|
-
|
|
5190
|
-
|
|
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
|
-
|
|
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 (!
|
|
5236
|
+
if (!isApiFallbackMode() || !getApiFallbackSince())
|
|
5223
5237
|
return false;
|
|
5224
|
-
const elapsed = Date.now() - new Date(
|
|
5238
|
+
const elapsed = Date.now() - new Date(getApiFallbackSince()).getTime();
|
|
5225
5239
|
if (elapsed > FALLBACK_COOLDOWN_MS) {
|
|
5226
|
-
|
|
5227
|
-
|
|
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
|
-
|
|
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:
|
|
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 ||
|
|
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
|
-
|
|
5305
|
+
setApiEnabled(false);
|
|
5298
5306
|
_apiClient = null;
|
|
5299
|
-
|
|
5300
|
-
|
|
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
|
-
|
|
5317
|
+
setApiEnabled(process.env.VIBEOS_API_ENABLED !== "false" && (!!VIBEOS_API_TOKEN || !!VIBEOS_API_BOOTSTRAP_TOKEN));
|
|
5310
5318
|
_apiClient = null;
|
|
5311
|
-
|
|
5312
|
-
|
|
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
|
-
|
|
5319
|
-
|
|
5320
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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 &&
|
|
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:
|
|
5352
|
+
timeout: PROBE_TIMEOUT
|
|
5348
5353
|
});
|
|
5349
5354
|
}
|
|
5350
5355
|
return _apiClient;
|
|
5351
5356
|
}
|
|
5352
5357
|
function isApiFallback2() {
|
|
5353
|
-
return
|
|
5358
|
+
return isApiFallbackMode() || !isApiEnabled();
|
|
5354
5359
|
}
|
|
5355
5360
|
function isApiConnected2() {
|
|
5356
5361
|
tryResetFallbackCooldown();
|
|
5357
|
-
return isApiConnected()
|
|
5362
|
+
return isApiConnected();
|
|
5358
5363
|
}
|
|
5359
5364
|
function getBackendVersion() {
|
|
5360
5365
|
return _backendVersion;
|
|
5361
5366
|
}
|
|
5362
|
-
function
|
|
5363
|
-
return
|
|
5367
|
+
function getApiFallbackSince2() {
|
|
5368
|
+
return getApiFallbackSince();
|
|
5364
5369
|
}
|
|
5365
5370
|
async function remoteCall(method, args, fallbackFn) {
|
|
5366
|
-
if (!_startupProbeDone && !
|
|
5371
|
+
if (!_startupProbeDone && !isApiFallbackMode()) {
|
|
5367
5372
|
_startupProbeDone = true;
|
|
5368
5373
|
try {
|
|
5369
5374
|
syncApiTokenFromDisk();
|
|
5370
|
-
if (
|
|
5375
|
+
if (isApiEnabled()) {
|
|
5371
5376
|
const probeClient = getApiClient2();
|
|
5372
5377
|
if (probeClient) {
|
|
5373
5378
|
await probeClient.health();
|
|
5374
|
-
|
|
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 (
|
|
5386
|
-
const elapsed = Date.now() - new Date(
|
|
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
|
-
|
|
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 (!
|
|
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 (
|
|
5433
|
-
|
|
5434
|
-
|
|
5435
|
-
console.warn(`[vibeOS] API reconnected \u2014 ${method} OK`);
|
|
5439
|
+
if (isApiFallbackMode()) {
|
|
5440
|
+
setApiFallbackMode(false);
|
|
5441
|
+
setApiFallbackSince(null);
|
|
5436
5442
|
}
|
|
5437
|
-
|
|
5438
|
-
|
|
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 (!
|
|
5447
|
-
|
|
5448
|
-
|
|
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
|
|
12328
|
-
var FOOTER_DEBUG_STDERR = process.env.VIBEOS_DEBUG_FOOTER === "1" || !IS_CLI_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:
|
|
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
|
|
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.
|
|
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",
|