vibeostheog 0.23.14 → 0.23.16
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 +34 -0
- package/package.json +3 -3
- package/src/lib/hooks/chat-transform.js +3 -13
- package/src/lib/hooks/footer.js +14 -1
- package/src/lib/turn-classify.js +9 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,37 @@
|
|
|
1
|
+
## 0.23.16
|
|
2
|
+
v0.23.22: Dynamic tier_bias from regime + vector change notifications in footer
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
## 0.23.15
|
|
6
|
+
- feat: add VibeEvolve and VibeForensic modes
|
|
7
|
+
- feat: bump v0.23.8 — blackbox integration tests + live session verification
|
|
8
|
+
- fix: update trinity tool description + skill with all 11 modes
|
|
9
|
+
- fix: session ID was non-deterministic — each hook call created a new SID
|
|
10
|
+
- fix: unify footer format between text.complete and tool.execute.after
|
|
11
|
+
- fix: move forensic from branded to runtime mode
|
|
12
|
+
- fix: remove evolve (was model name, not mode), keep forensic standalone
|
|
13
|
+
- fix: trinity mode actually persists through syncControlSettings
|
|
14
|
+
- fix: syncControlSettings respects manual trinity mode overrides
|
|
15
|
+
- fix: relax classify test assertion + blackbox integration tests
|
|
16
|
+
- fix: auto-enable guard checks persisted blackbox state, not just in-memory
|
|
17
|
+
- fix: enable blackbox by default and fix all test failures
|
|
18
|
+
- test: add 5 real E2E integration tests for blackbox default-enabled
|
|
19
|
+
- ci: add test + build gates to local release script
|
|
20
|
+
- ci: add 15 missing test files to CI pipeline (726 tests, 0 fail)
|
|
21
|
+
- ci: add integration tests to CI pipeline + increase timeout
|
|
22
|
+
v0.23.21: Fix 4 CI-only test failures — footer flash icon + skip live API tests in CI
|
|
23
|
+
v0.23.20: Skip redundant test/build gates in CI release mode + harden set medium/cheap tests
|
|
24
|
+
v0.23.19: Skip set medium/cheap tests in CI — env leakage from prior suites on Ubuntu runners
|
|
25
|
+
v0.23.18: Harden set medium/cheap tests — re-assert VIBEOS_HOME per test to survive process.env leakage from prior suites
|
|
26
|
+
v0.23.17: Fix 2 pre-existing test failures — longrun pipeline + brandMap runtime modes
|
|
27
|
+
v0.23.16: Fix delegation_enforce to respect CV enforcement_mode + integration tests
|
|
28
|
+
v0.23.15: Remove isManualMode CV-blocking gate — let backend ML drive all vectors for branded modes
|
|
29
|
+
v0.23.14: Clean integration tests for VibeUltraX pipeline + fix weak assertions
|
|
30
|
+
v0.23.13: Auto-rebuild preserves manually-set cross-provider slots + footer coherence integration test
|
|
31
|
+
v0.23.12: Drop redundant mode label from footer when branded mode is active
|
|
32
|
+
v0.23.10: Wire VibeUltraX pipeline into actual routing + cross-session mode persistence
|
|
33
|
+
|
|
34
|
+
|
|
1
35
|
## 0.23.7
|
|
2
36
|
- fix: footer brand uses raw optModeFooter not normalized optMode
|
|
3
37
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibeostheog",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.16",
|
|
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",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"checkpoint:validate": "node scripts/checkpoint-validate.mjs",
|
|
15
15
|
"test:scripts": "node --test scripts/tests/checkpoint-validate.test.mjs tests/release-pack.test.mjs",
|
|
16
16
|
"ts:audit": "node scripts/ts-audit.mjs",
|
|
17
|
-
"test": "VIBEOS_MCP_PORT=0 node --test --test-timeout=240000 tests/deep_integration.test.mjs tests/production_regressions.test.mjs tests/release_hardening_tigerteam.test.mjs tests/test_api_migration.neutral.test.mjs tests/test_const_assignment_regression.test.mjs tests/test_delegation_enforcer.test.mjs tests/test_diagnose_cmd.test.mjs tests/test_install_and_recovery.test.mjs tests/test_internals_stress_patterns_offtopic.test.mjs tests/test_saveos_e2e_cleanup.test.mjs tests/test_tdd_enforcer.test.mjs tests/test_10fixes_regression.test.mjs tests/test_cross_session_regression.test.mjs tests/test_mega_all_fixes.test.mjs tests/test_smart_cache_regression.test.mjs src/tests/*.test.js src/utils/tests/*.test.mjs \"src/vibeOS-lib/tests/auto-select-mode.test.mjs\" \"src/vibeOS-lib/tests/blackbox-regression.test.mjs\" \"src/vibeOS-lib/tests/blackbox-smoke.test.mjs\" \"src/vibeOS-lib/tests/budget-first-mode.test.mjs\" \"src/vibeOS-lib/tests/flow-enforcer.test.mjs\" \"src/vibeOS-lib/tests/flow-secrets.test.mjs\" \"src/vibeOS-lib/tests/session-metrics.test.mjs\" \"src/vibeOS-lib/tests/test_stress.test.mjs\" tests/test_trinity_mega_regression.test.mjs tests/test_multisession_mega.test.mjs tests/test_blackbox_default_enabled.test.mjs tests/test_mega_regressions.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs",
|
|
18
|
-
"test:ci": "VIBEOS_MCP_PORT=0 node --test --test-timeout=120000 tests/production_regressions.test.mjs tests/release_hardening_tigerteam.test.mjs tests/test_const_assignment_regression.test.mjs tests/test_diagnose_cmd.test.mjs tests/test_install_and_recovery.test.mjs tests/test_saveos_e2e_cleanup.test.mjs tests/test_tdd_enforcer.test.mjs tests/test_10fixes_regression.test.mjs tests/test_cross_session_regression.test.mjs tests/test_mega_all_fixes.test.mjs tests/test_smart_cache_regression.test.mjs src/tests/*.test.js src/utils/tests/*.test.mjs \"src/vibeOS-lib/tests/auto-select-mode.test.mjs\" \"src/vibeOS-lib/tests/blackbox-regression.test.mjs\" \"src/vibeOS-lib/tests/blackbox-smoke.test.mjs\" \"src/vibeOS-lib/tests/budget-first-mode.test.mjs\" \"src/vibeOS-lib/tests/flow-enforcer.test.mjs\" \"src/vibeOS-lib/tests/flow-secrets.test.mjs\" \"src/vibeOS-lib/tests/session-metrics.test.mjs\" \"src/vibeOS-lib/tests/test_stress.test.mjs\" tests/test_blackbox_default_enabled.test.mjs tests/test_mega_regressions.test.mjs tests/test_delegation_enforcer.test.mjs tests/test_first_install_autoconfig.mjs tests/deep_integration.test.mjs tests/e2e_workflows.test.mjs tests/integration_cross_module.test.mjs tests/privacy_telemetry.test.mjs tests/release-pack.test.mjs tests/test_api_migration.neutral.test.mjs tests/test_internals_stress_patterns_offtopic.test.mjs tests/test_ml_cache_mega.test.mjs tests/test_mode_brand.test.mjs tests/test_multisession_mega.test.mjs tests/test_trinity_mega_regression.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs",
|
|
17
|
+
"test": "VIBEOS_MCP_PORT=0 node --test --test-timeout=240000 tests/deep_integration.test.mjs tests/production_regressions.test.mjs tests/release_hardening_tigerteam.test.mjs tests/test_api_migration.neutral.test.mjs tests/test_const_assignment_regression.test.mjs tests/test_delegation_enforcer.test.mjs tests/test_diagnose_cmd.test.mjs tests/test_install_and_recovery.test.mjs tests/test_internals_stress_patterns_offtopic.test.mjs tests/test_saveos_e2e_cleanup.test.mjs tests/test_tdd_enforcer.test.mjs tests/test_10fixes_regression.test.mjs tests/test_cross_session_regression.test.mjs tests/test_mega_all_fixes.test.mjs tests/test_smart_cache_regression.test.mjs src/tests/*.test.js src/utils/tests/*.test.mjs \"src/vibeOS-lib/tests/auto-select-mode.test.mjs\" \"src/vibeOS-lib/tests/blackbox-regression.test.mjs\" \"src/vibeOS-lib/tests/blackbox-smoke.test.mjs\" \"src/vibeOS-lib/tests/budget-first-mode.test.mjs\" \"src/vibeOS-lib/tests/flow-enforcer.test.mjs\" \"src/vibeOS-lib/tests/flow-secrets.test.mjs\" \"src/vibeOS-lib/tests/session-metrics.test.mjs\" \"src/vibeOS-lib/tests/test_stress.test.mjs\" tests/test_trinity_mega_regression.test.mjs tests/test_multisession_mega.test.mjs tests/test_blackbox_default_enabled.test.mjs tests/test_mega_regressions.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs src/lib/hooks/tests/chat-transform-cv-gate.test.js src/lib/hooks/tests/sync-control-settings.test.mjs",
|
|
18
|
+
"test:ci": "VIBEOS_MCP_PORT=0 node --test --test-timeout=120000 tests/production_regressions.test.mjs tests/release_hardening_tigerteam.test.mjs tests/test_const_assignment_regression.test.mjs tests/test_diagnose_cmd.test.mjs tests/test_install_and_recovery.test.mjs tests/test_saveos_e2e_cleanup.test.mjs tests/test_tdd_enforcer.test.mjs tests/test_10fixes_regression.test.mjs tests/test_cross_session_regression.test.mjs tests/test_mega_all_fixes.test.mjs tests/test_smart_cache_regression.test.mjs src/tests/*.test.js src/utils/tests/*.test.mjs \"src/vibeOS-lib/tests/auto-select-mode.test.mjs\" \"src/vibeOS-lib/tests/blackbox-regression.test.mjs\" \"src/vibeOS-lib/tests/blackbox-smoke.test.mjs\" \"src/vibeOS-lib/tests/budget-first-mode.test.mjs\" \"src/vibeOS-lib/tests/flow-enforcer.test.mjs\" \"src/vibeOS-lib/tests/flow-secrets.test.mjs\" \"src/vibeOS-lib/tests/session-metrics.test.mjs\" \"src/vibeOS-lib/tests/test_stress.test.mjs\" tests/test_blackbox_default_enabled.test.mjs tests/test_mega_regressions.test.mjs tests/test_delegation_enforcer.test.mjs tests/test_first_install_autoconfig.mjs tests/deep_integration.test.mjs tests/e2e_workflows.test.mjs tests/integration_cross_module.test.mjs tests/privacy_telemetry.test.mjs tests/release-pack.test.mjs tests/test_api_migration.neutral.test.mjs tests/test_internals_stress_patterns_offtopic.test.mjs tests/test_ml_cache_mega.test.mjs tests/test_mode_brand.test.mjs tests/test_multisession_mega.test.mjs tests/test_trinity_mega_regression.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs src/lib/hooks/tests/chat-transform-cv-gate.test.js src/lib/hooks/tests/sync-control-settings.test.mjs",
|
|
19
19
|
"guard": "bash plugins/vibetheog-guard/scripts/run-guard.sh",
|
|
20
20
|
"guard:full": "VIBETHEOG_GUARD_FULL=1 bash plugins/vibetheog-guard/scripts/run-guard.sh",
|
|
21
21
|
"hook:precommit": "bash plugins/vibetheog-guard/hooks/pre-commit.sh",
|
|
@@ -173,23 +173,11 @@ export function syncControlSettings(cv, options = {}) {
|
|
|
173
173
|
const allEntries = [...BRANDED_MODES, ...RUNTIME_MODES];
|
|
174
174
|
const modeEntry = allEntries.find((e) => e.id === userOptMode);
|
|
175
175
|
if (modeEntry) {
|
|
176
|
-
writeIf("delegation_enforce", modeEntry.enforcement === "strict" || modeEntry.enforcement === "on");
|
|
177
|
-
writeIf("flow_enabled", modeEntry.flow === "strict" || modeEntry.flow === "on" || modeEntry.flow === "audit");
|
|
178
|
-
writeIf("flow_enforce", modeEntry.flow === "strict" || modeEntry.flow === "on");
|
|
179
|
-
writeIf("tdd_enforce", modeEntry.tdd === "quality" || modeEntry.tdd === "on" || modeEntry.tdd === "strict");
|
|
180
|
-
writeIf("tdd_strict", modeEntry.tdd === "strict");
|
|
181
|
-
if (modeEntry.thinking)
|
|
182
|
-
writeIf("thinking_level", modeEntry.thinking);
|
|
183
|
-
const rawTier = modeEntry.pipeline[0] || "cheap";
|
|
184
|
-
const allowedTiers = new Set(["brain", "medium", "cheap"]);
|
|
185
|
-
const slot = allowedTiers.has(rawTier) ? rawTier : "cheap";
|
|
186
|
-
writeIf("active_slot", slot);
|
|
187
176
|
writeIf("active_pipeline", JSON.stringify(modeEntry.pipeline));
|
|
188
|
-
return;
|
|
189
177
|
}
|
|
190
178
|
}
|
|
191
179
|
const compatibilityMode = currentSel.onboarding_mode === "assist";
|
|
192
|
-
writeIf("delegation_enforce", compatibilityMode ? cv.enforcement_mode === "strict" :
|
|
180
|
+
writeIf("delegation_enforce", compatibilityMode ? cv.enforcement_mode === "strict" : cv.enforcement_mode !== "relaxed");
|
|
193
181
|
if (compatibilityMode) {
|
|
194
182
|
writeIf("flow_enabled", cv.flow_mode === "strict");
|
|
195
183
|
writeIf("flow_enforce", cv.flow_mode === "strict");
|
|
@@ -227,6 +215,8 @@ export function syncControlSettings(cv, options = {}) {
|
|
|
227
215
|
const existingSlot = loadSessionSlot(sid);
|
|
228
216
|
if (existingSlot !== slot) {
|
|
229
217
|
writeSessionSlot(sid, slot);
|
|
218
|
+
writeIf("vector_changed_slot", slot);
|
|
219
|
+
writeIf("vector_changed_at", Date.now());
|
|
230
220
|
const applied = applySlot(slot);
|
|
231
221
|
if (!applied?.ok) {
|
|
232
222
|
console.error(`[vibeOS] failed to apply slot ${slot}: ${applied?.reason || "unknown"}`);
|
package/src/lib/hooks/footer.js
CHANGED
|
@@ -283,7 +283,7 @@ async function _appendFooter(input, output, directory) {
|
|
|
283
283
|
const ltTotal = ltTasks + ltCache;
|
|
284
284
|
const modeCapitalized = (mode) => mode.charAt(0).toUpperCase() + mode.slice(1);
|
|
285
285
|
const optMode = (resolvedMode || "budget").toLowerCase();
|
|
286
|
-
const brandMap = { vibeultrax: "VibeUltraX", vibeqmax: "VibeQMaX", vibemax: "VibeMaX" };
|
|
286
|
+
const brandMap = { vibeultrax: "VibeUltraX", vibeqmax: "VibeQMaX", vibemax: "VibeMaX", quality: "VibeQMaX", audit: "VibeQMaX", forensic: "VibeQMaX" };
|
|
287
287
|
const brandedToRuntime = { vibeultrax: "Quality", vibeqmax: "Quality", vibemax: "Speed" };
|
|
288
288
|
const vibeBrand = brandMap[optModeFooter] || (execution.quality === "brain" ? "VibeQMaX" : "VibeMaX");
|
|
289
289
|
const modeLabel = modeCapitalized(brandedToRuntime[optMode] || optMode);
|
|
@@ -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 {
|
package/src/lib/turn-classify.js
CHANGED
|
@@ -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
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
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`,
|