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:35533";
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 || TRINITY_MEDIUM, local: TRINITY_CHEAP };
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
- const escalated = pipelineModels[1];
15282
- if (escalated && escalated !== currentModel && (!_target || escalated !== _target)) {
15283
- _target = escalated;
15284
- console.error(`[vibeOS] \u{1F500} Cascade escalate: ${cascadeResult.reason} \u2192 ${escalated}`);
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.32",
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",