vibeostheog 0.25.32 → 0.25.33
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,49 +1,3 @@
|
|
|
1
|
-
## 0.25.32
|
|
2
|
-
- feat: anti-lie enforcement — verify-claims + claim gauge + cascade cross-ref
|
|
3
|
-
- feat: anti-lie enforcement - verify-claims tool, claim gauge in footer
|
|
4
|
-
- feat: anti-loop cost guard with per-turn memoization
|
|
5
|
-
- feat: remove auto-lock on slot/mode change, README/skills use vibe, lock regression tests
|
|
6
|
-
- feat: store API-predicted optimization_mode from blackboxAnalyze + regression test
|
|
7
|
-
- feat: add vibe as primary tool name, trinity remains as alias
|
|
8
|
-
- feat: delegation guide — explicit Task subagent syntax in system prompt + enforcement note
|
|
9
|
-
- feat: add plan update/close/completion directives to system prompt + cascade tests
|
|
10
|
-
- feat: add cascade icon (▸▸▸) to footer when VibeUltraX cascade is active (#223)
|
|
11
|
-
- fix: PCRE (?i) regex syntax not valid in JS - use /pattern/i flag instead
|
|
12
|
-
- fix: add runtime claim verifier and strengthen anti-lie directive
|
|
13
|
-
- fix: skip 5 pre-existing flaky tests to green CI
|
|
14
|
-
- fix: add VIBEOS_API_DISABLED to quality_pipeline test sandbox
|
|
15
|
-
- fix: taskModel ReferenceError, remove _warnCounts check from enforcement path
|
|
16
|
-
- fix: reset warn counts on each test invocation (_resetWarnCountsForTest)
|
|
17
|
-
- fix: add srv.unref() to MCP server so child processes can exit
|
|
18
|
-
- fix: move orchestratorDirective inside try/catch (prevents loadSelection throw from breaking onSystemTransform)
|
|
19
|
-
- fix: wire orchestratorDirective to system prompt (was dead code)
|
|
20
|
-
- fix: add process.exit(0) to delegation test child scripts to prevent MCP server hang
|
|
21
|
-
- fix: _cachedPct returns null when total is 0 (avoids stale 0-credit cache)
|
|
22
|
-
- fix: set VIBEOS_HOME in recordFlowTodo test to use correct sandbox path
|
|
23
|
-
- fix: store cascade data in blackbox history, tune loop detection threshold to 3 (#226)
|
|
24
|
-
- fix: keep VIBEOS_HOME set to sandbox (don't delete in beforeEach) to prevent stale credit cache collisions
|
|
25
|
-
- fix: reset session ID in beforeEach to prevent warn key collision across tests
|
|
26
|
-
- fix: delegation test assertions for new enforcement note format
|
|
27
|
-
- fix: delegation test assertions match new format + VIBEOS_API_DISABLED
|
|
28
|
-
- fix: always record savings from enforcement, cap UI notes only
|
|
29
|
-
- fix: re-add credit nudge for all tools, cap at 5 per tool per session
|
|
30
|
-
- fix: cap repetitive warnings (max 3 per tool per session), remove credit nudge from bash/read
|
|
31
|
-
- fix: compression notice wording — 'has been compressed' → 'will be compressed next' (accurate)
|
|
32
|
-
- fix: readConfig falls back to bare model, fix 3 pre-existing test failures (#225)
|
|
33
|
-
- fix: readConfig falls back to bare model, fix 3 pre-existing test failures
|
|
34
|
-
- fix: cascade icon uses requested_optimization_mode (not loadOptimizationMode which recovers to budget)
|
|
35
|
-
- fix: pass latestUserIntent to computeControlVector for real cascade decision
|
|
36
|
-
- fix: cascade icon uses live computeControlVector (not undefined _controlVector) (#224)
|
|
37
|
-
- docs: update all .md files to use vibe as primary command name
|
|
38
|
-
- docs: footer README, real cascade tests, execFileSync timeouts
|
|
39
|
-
- test: add 3 delegation tests (orchestrator guide, enforcement note, syncControlSettings)
|
|
40
|
-
- test: add 7 regression tests (classify, readConfig, metrics, status payload, classification patterns, turn counter, autoSelectMode)
|
|
41
|
-
- test: add compact memory cascade tests (scratchpad, turn 7+ notice, counter consistency)
|
|
42
|
-
- chore: v0.25.31
|
|
43
|
-
- chore: remove 8 toy test files, remove dead code (PRIORITY, VIBEMAX_CFG, modeCapitalized)
|
|
44
|
-
- chore: remove 8 pure toy test files (zero assertions)
|
|
45
|
-
|
|
46
|
-
|
|
47
1
|
## 0.25.31
|
|
48
2
|
- feat: anti-loop cost guard with per-turn memoization
|
|
49
3
|
- feat: remove auto-lock on slot/mode change, README/skills use vibe, lock regression tests
|
|
@@ -1 +1 @@
|
|
|
1
|
-
window.__VIBEOS_DASHBOARD_BASE__ = "http://127.0.0.1:
|
|
1
|
+
window.__VIBEOS_DASHBOARD_BASE__ = "http://127.0.0.1:57270";
|
package/dist/vibeOS.js
CHANGED
|
@@ -12203,6 +12203,11 @@ function syncControlSettings(cv, options = {}) {
|
|
|
12203
12203
|
writeIf("active_pipeline", JSON.stringify(modeEntry.pipeline));
|
|
12204
12204
|
}
|
|
12205
12205
|
}
|
|
12206
|
+
if (cv?.pipeline_root && Array.isArray(cv.pipeline_root)) {
|
|
12207
|
+
writeIf("active_pipeline", JSON.stringify(cv.pipeline_root));
|
|
12208
|
+
} else if (cv?.cascade_depth && cv.cascade_depth >= 3) {
|
|
12209
|
+
writeIf("active_pipeline", JSON.stringify(["local", "medium", "brain"]));
|
|
12210
|
+
}
|
|
12206
12211
|
writeIf("enabled", true);
|
|
12207
12212
|
const compatibilityMode = currentSel.onboarding_mode === "assist";
|
|
12208
12213
|
const flowManuallyDisabled = currentSel.flow_enabled === false && currentSel.flow_enforce === false;
|
|
@@ -12643,6 +12648,14 @@ var onSystemTransform = async (_input, output) => {
|
|
|
12643
12648
|
if (!loadSelection().enabled)
|
|
12644
12649
|
return;
|
|
12645
12650
|
try {
|
|
12651
|
+
const bbOnDisk = loadBlackboxState();
|
|
12652
|
+
if (_latestBlackboxState3 && bbOnDisk) {
|
|
12653
|
+
const diskHasSessions = Object.keys(bbOnDisk.sessions || {}).length > 0;
|
|
12654
|
+
const stateHasRegime = !!_latestBlackboxState3.sub_regime;
|
|
12655
|
+
if (diskHasSessions && !stateHasRegime) {
|
|
12656
|
+
_latestBlackboxState3 = bbOnDisk;
|
|
12657
|
+
}
|
|
12658
|
+
}
|
|
12646
12659
|
const hookDirectory = String(onSystemTransform._directory || "");
|
|
12647
12660
|
const userText = extractLastUserText(_input) || extractLastUserText(output);
|
|
12648
12661
|
if (typeof userText === "string" && userText.trim())
|
|
@@ -12668,6 +12681,25 @@ var onSystemTransform = async (_input, output) => {
|
|
|
12668
12681
|
if (st)
|
|
12669
12682
|
_latestBlackboxState3.latest_stress_multiplier = st;
|
|
12670
12683
|
_controlVector = await apiComputeControlVector(_latestBlackboxState3, void 0, optimizationMode);
|
|
12684
|
+
if (_controlVector) {
|
|
12685
|
+
const fullState = loadBlackboxState() || { sessions: {}, enabled: true };
|
|
12686
|
+
fullState.cv = _controlVector;
|
|
12687
|
+
if (_latestBlackboxState3) {
|
|
12688
|
+
if (_latestBlackboxState3.sub_regime)
|
|
12689
|
+
fullState.sub_regime = _latestBlackboxState3.sub_regime;
|
|
12690
|
+
if (_latestBlackboxState3.latest_stress_multiplier)
|
|
12691
|
+
fullState.latest_stress_multiplier = _latestBlackboxState3.latest_stress_multiplier;
|
|
12692
|
+
if (_latestBlackboxState3.n_interactions)
|
|
12693
|
+
fullState.n_interactions = _latestBlackboxState3.n_interactions;
|
|
12694
|
+
if (_latestBlackboxState3.resolution)
|
|
12695
|
+
fullState.resolution = _latestBlackboxState3.resolution;
|
|
12696
|
+
if (_latestBlackboxState3.momentum)
|
|
12697
|
+
fullState.momentum = _latestBlackboxState3.momentum;
|
|
12698
|
+
fullState.latest_control_vector_ts = Date.now();
|
|
12699
|
+
}
|
|
12700
|
+
fullState.sessions ??= {};
|
|
12701
|
+
saveBlackboxState(fullState);
|
|
12702
|
+
}
|
|
12671
12703
|
} else if (latestUserIntent) {
|
|
12672
12704
|
const st = scoreStress(latestUserIntent);
|
|
12673
12705
|
_controlVector = await apiComputeControlVector({
|
|
@@ -15275,13 +15307,21 @@ ${argsJson}
|
|
|
15275
15307
|
const mediumCost = 5e-3;
|
|
15276
15308
|
const brainCost = 0.02;
|
|
15277
15309
|
const cascadeResult = cascadeDecide(_prompt, cheapCost, mediumCost, brainCost, 0.85);
|
|
15278
|
-
const tierMap = { cheap: TRINITY_CHEAP, medium: TRINITY_MEDIUM, brain: TRINITY_BRAIN
|
|
15310
|
+
const tierMap = { cheap: TRINITY_CHEAP, medium: TRINITY_MEDIUM, brain: TRINITY_BRAIN, local: TRINITY_CHEAP };
|
|
15279
15311
|
const pipelineModels = activePipeline.map((t2) => tierMap[t2] || TRINITY_CHEAP);
|
|
15280
15312
|
if (cascadeResult.escalate && pipelineModels.length > 1) {
|
|
15281
|
-
|
|
15282
|
-
|
|
15283
|
-
_target
|
|
15284
|
-
|
|
15313
|
+
if (pipelineModels.length > 2 && cascadeResult.confidence >= 0.8) {
|
|
15314
|
+
const escalated = pipelineModels[2];
|
|
15315
|
+
if (escalated && escalated !== currentModel && (!_target || escalated !== _target)) {
|
|
15316
|
+
_target = escalated;
|
|
15317
|
+
console.error(`[vibeOS] \u{1F500} Cascade depth-3 escalate: ${cascadeResult.reason} \u2192 ${escalated}`);
|
|
15318
|
+
}
|
|
15319
|
+
} else {
|
|
15320
|
+
const escalated = pipelineModels[1];
|
|
15321
|
+
if (escalated && escalated !== currentModel && (!_target || escalated !== _target)) {
|
|
15322
|
+
_target = escalated;
|
|
15323
|
+
console.error(`[vibeOS] \u{1F500} Cascade escalate: ${cascadeResult.reason} \u2192 ${escalated}`);
|
|
15324
|
+
}
|
|
15285
15325
|
}
|
|
15286
15326
|
} else if (cascadeResult.useCheap && !_target) {
|
|
15287
15327
|
_target = pipelineModels[0];
|
|
@@ -15309,7 +15349,7 @@ ${argsJson}
|
|
|
15309
15349
|
_setModel(inArgs);
|
|
15310
15350
|
try {
|
|
15311
15351
|
const selNow = loadSelection();
|
|
15312
|
-
const desiredSlot = _target === TRINITY_CHEAP ? "cheap" : _target === TRINITY_MEDIUM ? "medium" : null;
|
|
15352
|
+
const desiredSlot = _target === TRINITY_CHEAP ? "cheap" : _target === TRINITY_MEDIUM ? "medium" : _target === TRINITY_BRAIN ? "brain" : null;
|
|
15313
15353
|
if (selNow.delegation_enforce && currentTier === "high" && desiredSlot && selNow.active_slot !== desiredSlot) {
|
|
15314
15354
|
taskSlotRestore = selNow.active_slot || "brain";
|
|
15315
15355
|
const switched = applySlot(desiredSlot);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibeostheog",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.33",
|
|
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",
|