vibeostheog 0.23.15 → 0.23.17

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,11 @@
1
+ ## 0.23.17
2
+ - chore: sync release numbering
3
+
4
+
5
+ ## 0.23.16
6
+ v0.23.22: Dynamic tier_bias from regime + vector change notifications in footer
7
+
8
+
1
9
  ## 0.23.15
2
10
  - feat: add VibeEvolve and VibeForensic modes
3
11
  - feat: bump v0.23.8 — blackbox integration tests + live session verification
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeostheog",
3
- "version": "0.23.15",
3
+ "version": "0.23.17",
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",
@@ -215,6 +215,8 @@ export function syncControlSettings(cv, options = {}) {
215
215
  const existingSlot = loadSessionSlot(sid);
216
216
  if (existingSlot !== slot) {
217
217
  writeSessionSlot(sid, slot);
218
+ writeIf("vector_changed_slot", slot);
219
+ writeIf("vector_changed_at", Date.now());
218
220
  const applied = applySlot(slot);
219
221
  if (!applied?.ok) {
220
222
  console.error(`[vibeOS] failed to apply slot ${slot}: ${applied?.reason || "unknown"}`);
@@ -296,6 +296,19 @@ async function _appendFooter(input, output, directory) {
296
296
  if (isApiConnected()) {
297
297
  vibeLine += ` | ${vibeBrand}${flashIcon}`;
298
298
  }
299
+ try {
300
+ const bb = _latestBlackboxState;
301
+ if (bb?.sub_regime)
302
+ vibeLine += ` | ${bb.sub_regime}`;
303
+ }
304
+ catch { }
305
+ try {
306
+ const sel = loadSelection();
307
+ if (sel?.vector_changed_slot && sel?.vector_changed_at && (Date.now() - sel.vector_changed_at < 60000)) {
308
+ vibeLine += ` | →${sel.vector_changed_slot}`;
309
+ }
310
+ }
311
+ catch { }
299
312
  const footerText = stripped + `\n\n${vibeLine} —`;
300
313
  if (_blackboxEnabled) {
301
314
  try {
@@ -85,12 +85,15 @@ function computeControlVector(_state, _action, _optimizationMode) {
85
85
  const mode = resolveOptimizationMode(_state?.sub_regime, _state?.latest_stress_multiplier, _optimizationMode);
86
86
  const isStrict = mode === "quality" || mode === "vibemax";
87
87
  const isRelaxed = mode === "budget" || mode === "speed";
88
- const tierBias = mode === "quality" ? "brain"
89
- : mode === "speed" ? "medium"
90
- : mode === "vibemax" ? "medium"
91
- : mode === "longrun" ? "brain"
92
- : mode === "balanced" ? "auto"
93
- : "cheap";
88
+ const subRegime = _state?.sub_regime || "INIT";
89
+ const stress = Number(_state?.latest_stress_multiplier ?? 0);
90
+ const tierBias = stress > 1.5 ? "brain"
91
+ : subRegime === "CONVERGING" || subRegime === "CLOSED" ? "brain"
92
+ : subRegime === "REFINING" || subRegime === "LOOPING" ? "medium"
93
+ : mode === "quality" || mode === "longrun" ? "brain"
94
+ : mode === "speed" || mode === "vibemax" ? "medium"
95
+ : mode === "balanced" ? "auto"
96
+ : "cheap";
94
97
  return {
95
98
  enforcement_mode: isStrict ? "strict" : isRelaxed ? "relaxed" : "normal",
96
99
  enforcement_reason: `[optimize: ${mode}] using safe offline defaults`,