vibeostheog 0.24.27 → 0.24.29
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 +17 -0
- package/dist/vibeOS.js +105 -16
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,20 @@
|
|
|
1
|
+
## 0.24.29
|
|
2
|
+
- feat: promote data-backed experimental regimes (#158)
|
|
3
|
+
- feat: promote data-backed experimental regimes
|
|
4
|
+
- test: add live lifecycle regression
|
|
5
|
+
- chore: v0.24.28
|
|
6
|
+
Merge pull request #160 from DrunkkToys/codex/release-patch-0.24.28
|
|
7
|
+
Fix clean CI sync for generated modules
|
|
8
|
+
Fix CI sync for generated modules
|
|
9
|
+
Fix CI artifact sync
|
|
10
|
+
Sync generated flow rules
|
|
11
|
+
Merge remote-tracking branch 'origin/master' into codex/release-patch-0.24.28
|
|
12
|
+
Fix release CI regressions
|
|
13
|
+
Merge pull request #159 from DrunkkToys/codex/release-patch-0.24.28
|
|
14
|
+
Strengthen cascade lifecycle coverage
|
|
15
|
+
Merge branch 'master' of https://github.com/DrunkkToys/vibeOS into codex/release-patch-0.24.28
|
|
16
|
+
|
|
17
|
+
|
|
1
18
|
## 0.24.25
|
|
2
19
|
- fix: heal stale vibelitex recovery across cascade
|
|
3
20
|
|
package/dist/vibeOS.js
CHANGED
|
@@ -454,6 +454,12 @@ function autoSelectMode(subRegime, stressMultiplier) {
|
|
|
454
454
|
return "speed";
|
|
455
455
|
if (regime === "CONVERGING" || regime === "CLOSED")
|
|
456
456
|
return "quality";
|
|
457
|
+
if (regime === "IMPLEMENTING")
|
|
458
|
+
return "quality";
|
|
459
|
+
if (regime === "RESEARCH" || regime === "DESIGNING")
|
|
460
|
+
return "longrun";
|
|
461
|
+
if (regime === "REVIEWING")
|
|
462
|
+
return "audit";
|
|
457
463
|
if (stressMultiplier && stressMultiplier > QUALITY_STRESS_THRESHOLD)
|
|
458
464
|
return "quality";
|
|
459
465
|
return "litex";
|
|
@@ -515,6 +521,58 @@ var init_meta_controller = __esm({
|
|
|
515
521
|
context7_urgency: "preferred",
|
|
516
522
|
wbp_verbosity: "normal"
|
|
517
523
|
},
|
|
524
|
+
IMPLEMENTING: {
|
|
525
|
+
enforcement_mode: "strict",
|
|
526
|
+
enforcement_reason: "implementation work \u2014 validate code changes and keep tests on",
|
|
527
|
+
flow_mode: "strict",
|
|
528
|
+
flow_focus: ["write-edit-check", "no-untouched-files"],
|
|
529
|
+
tdd_mode: "strict",
|
|
530
|
+
tdd_focus: ["skeleton-on-write", "assertion-check"],
|
|
531
|
+
tier_bias: "brain",
|
|
532
|
+
thinking_mode: "brief",
|
|
533
|
+
stress_multiplier: 1.3,
|
|
534
|
+
context7_urgency: "required",
|
|
535
|
+
wbp_verbosity: "normal"
|
|
536
|
+
},
|
|
537
|
+
RESEARCH: {
|
|
538
|
+
enforcement_mode: "normal",
|
|
539
|
+
enforcement_reason: "research mode \u2014 collect evidence before changing anything",
|
|
540
|
+
flow_mode: "audit",
|
|
541
|
+
flow_focus: ["trace-audit"],
|
|
542
|
+
tdd_mode: "lazy",
|
|
543
|
+
tdd_focus: [],
|
|
544
|
+
tier_bias: "brain",
|
|
545
|
+
thinking_mode: "full",
|
|
546
|
+
stress_multiplier: 1.2,
|
|
547
|
+
context7_urgency: "required",
|
|
548
|
+
wbp_verbosity: "detailed"
|
|
549
|
+
},
|
|
550
|
+
REVIEWING: {
|
|
551
|
+
enforcement_mode: "strict",
|
|
552
|
+
enforcement_reason: "review mode \u2014 validate diffs and surface risks",
|
|
553
|
+
flow_mode: "strict",
|
|
554
|
+
flow_focus: ["write-edit-check", "no-untouched-files", "no-lgtm"],
|
|
555
|
+
tdd_mode: "quality",
|
|
556
|
+
tdd_focus: ["full-coverage", "edge-cases"],
|
|
557
|
+
tier_bias: "brain",
|
|
558
|
+
thinking_mode: "brief",
|
|
559
|
+
stress_multiplier: 1.1,
|
|
560
|
+
context7_urgency: "required",
|
|
561
|
+
wbp_verbosity: "normal"
|
|
562
|
+
},
|
|
563
|
+
DESIGNING: {
|
|
564
|
+
enforcement_mode: "normal",
|
|
565
|
+
enforcement_reason: "design mode \u2014 explore architecture and tradeoffs",
|
|
566
|
+
flow_mode: "audit",
|
|
567
|
+
flow_focus: ["trace-audit"],
|
|
568
|
+
tdd_mode: "normal",
|
|
569
|
+
tdd_focus: [],
|
|
570
|
+
tier_bias: "brain",
|
|
571
|
+
thinking_mode: "full",
|
|
572
|
+
stress_multiplier: 1.1,
|
|
573
|
+
context7_urgency: "required",
|
|
574
|
+
wbp_verbosity: "detailed"
|
|
575
|
+
},
|
|
518
576
|
CONVERGING: {
|
|
519
577
|
enforcement_mode: "strict",
|
|
520
578
|
enforcement_reason: "user about to commit \u2014 full enforcement, catch violations",
|
|
@@ -6292,7 +6350,7 @@ import { join as join7, dirname as dirname8 } from "node:path";
|
|
|
6292
6350
|
|
|
6293
6351
|
// src/vibeOS-lib/blackbox/resolution-tracker.js
|
|
6294
6352
|
var ResolutionTracker = class _ResolutionTracker {
|
|
6295
|
-
static SUB_REGIMES = ["INIT", "DIVERGENT", "EXPLORING", "REFINING", "CONVERGING", "CLOSED", "LOOPING"];
|
|
6353
|
+
static SUB_REGIMES = ["INIT", "DIVERGENT", "EXPLORING", "REFINING", "IMPLEMENTING", "RESEARCH", "REVIEWING", "DESIGNING", "CONVERGING", "CLOSED", "LOOPING"];
|
|
6296
6354
|
sessionId;
|
|
6297
6355
|
maxHistory;
|
|
6298
6356
|
history;
|
|
@@ -6902,6 +6960,12 @@ function autoSelectMode2(subRegime, stressMultiplier) {
|
|
|
6902
6960
|
return "speed";
|
|
6903
6961
|
if (regime === "CONVERGING" || regime === "CLOSED")
|
|
6904
6962
|
return "quality";
|
|
6963
|
+
if (regime === "IMPLEMENTING")
|
|
6964
|
+
return "quality";
|
|
6965
|
+
if (regime === "RESEARCH" || regime === "DESIGNING")
|
|
6966
|
+
return "longrun";
|
|
6967
|
+
if (regime === "REVIEWING")
|
|
6968
|
+
return "audit";
|
|
6905
6969
|
if (stress > QUALITY_STRESS_THRESHOLD2)
|
|
6906
6970
|
return "quality";
|
|
6907
6971
|
return "vibelitex";
|
|
@@ -10461,6 +10525,10 @@ function recordSaving(tool2, reason, saveEst, meta = {}) {
|
|
|
10461
10525
|
const w = ses.warns[i];
|
|
10462
10526
|
if (w?.key === warnKey && now - w.ts < WARN_DEDUPE_WINDOW_MS) {
|
|
10463
10527
|
w.count = (w.count || 1) + 1;
|
|
10528
|
+
w.est_savings_usd = roundUsd(Number(w.est_savings_usd || 0) + saveEst);
|
|
10529
|
+
w.saveEst = roundUsd(Number(w.saveEst || 0) + saveEst);
|
|
10530
|
+
ses.total_savings_usd = roundUsd(Number(ses.total_savings_usd || 0) + saveEst);
|
|
10531
|
+
s.lifetime.total_savings_usd = roundUsd(Number(s.lifetime.total_savings_usd || 0) + saveEst);
|
|
10464
10532
|
deduped = true;
|
|
10465
10533
|
}
|
|
10466
10534
|
}
|
|
@@ -11474,6 +11542,10 @@ var REGIME_TAG = {
|
|
|
11474
11542
|
DIVERGENT: "DVRG",
|
|
11475
11543
|
EXPLORING: "XPLR",
|
|
11476
11544
|
REFINING: "RFNE",
|
|
11545
|
+
IMPLEMENTING: "IMPL",
|
|
11546
|
+
RESEARCH: "RSCH",
|
|
11547
|
+
REVIEWING: "RVW",
|
|
11548
|
+
DESIGNING: "DSGN",
|
|
11477
11549
|
CONVERGING: "CVGE",
|
|
11478
11550
|
CLOSED: "CLSD",
|
|
11479
11551
|
LOOPING: "LOOP",
|
|
@@ -11501,6 +11573,28 @@ function resolveBrand(optMode, activeSlot) {
|
|
|
11501
11573
|
function resolveTierIcon(slot) {
|
|
11502
11574
|
return TIER_ICON[slot] || "\u26A1";
|
|
11503
11575
|
}
|
|
11576
|
+
function formatModeLabel(optMode) {
|
|
11577
|
+
const normalized = String(optMode || "").toLowerCase();
|
|
11578
|
+
if (!normalized)
|
|
11579
|
+
return "";
|
|
11580
|
+
if (normalized === "vibemax" || normalized === "vibelitex" || normalized === "budget")
|
|
11581
|
+
return "Budget";
|
|
11582
|
+
if (normalized === "vibeqmax" || normalized === "quality")
|
|
11583
|
+
return "Quality";
|
|
11584
|
+
if (normalized === "vibeultrax")
|
|
11585
|
+
return "VibeUltraX";
|
|
11586
|
+
if (normalized === "speed")
|
|
11587
|
+
return "Speed";
|
|
11588
|
+
if (normalized === "longrun")
|
|
11589
|
+
return "Longrun";
|
|
11590
|
+
if (normalized === "audit")
|
|
11591
|
+
return "Audit";
|
|
11592
|
+
if (normalized === "forensic")
|
|
11593
|
+
return "Forensic";
|
|
11594
|
+
if (normalized === "balanced")
|
|
11595
|
+
return "Balanced";
|
|
11596
|
+
return normalized.charAt(0).toUpperCase() + normalized.slice(1);
|
|
11597
|
+
}
|
|
11504
11598
|
function formatVectorPulse(vectorChangedSlot) {
|
|
11505
11599
|
if (!vectorChangedSlot)
|
|
11506
11600
|
return "";
|
|
@@ -11559,6 +11653,7 @@ function buildFooterLine(input) {
|
|
|
11559
11653
|
const { activeSlot, sessionSlot, providerLabel, modelName, ltTotal, ltTrend, vibeBrand, optMode, flashIcon, enfTags, vectorChangedSlot, subRegime } = input;
|
|
11560
11654
|
const tierIcon = resolveTierIcon(activeSlot);
|
|
11561
11655
|
const regimeTag = subRegime ? REGIME_TAG[subRegime] || subRegime.slice(0, 4) : null;
|
|
11656
|
+
const modeLabel = formatModeLabel(optMode);
|
|
11562
11657
|
let line = `\u2014 ${tierIcon} ${activeSlot} | ${providerLabel} | ${modelName}${regimeTag ? ` \u25B6 ${regimeTag}` : ""}`;
|
|
11563
11658
|
if (ltTotal > 0) {
|
|
11564
11659
|
const savingsPulse = formatSavingsPulse(ltTotal, ltTrend);
|
|
@@ -11567,7 +11662,7 @@ function buildFooterLine(input) {
|
|
|
11567
11662
|
}
|
|
11568
11663
|
line += ` | ${vibeBrand}${flashIcon}`;
|
|
11569
11664
|
if (optMode && optMode !== "auto") {
|
|
11570
|
-
line += ` ${
|
|
11665
|
+
line += ` ${modeLabel}`;
|
|
11571
11666
|
}
|
|
11572
11667
|
if (vectorChangedSlot && vectorChangedSlot !== activeSlot) {
|
|
11573
11668
|
line += ` | ${formatVectorPulse(vectorChangedSlot)}`;
|
|
@@ -11824,7 +11919,7 @@ async function _appendFooter(input, output, directory3) {
|
|
|
11824
11919
|
const activeSlot = selNowFooter.active_slot || "brain";
|
|
11825
11920
|
const flashIcon = isApiConnected2() ? " \u26A1" : "";
|
|
11826
11921
|
const displayMode = autoSelectMode2(currentSubRegime, _footerStress);
|
|
11827
|
-
const vibeBrand = resolveBrand(displayMode, activeSlot);
|
|
11922
|
+
const vibeBrand = resolveBrand(loadOptimizationMode() || displayMode, activeSlot);
|
|
11828
11923
|
const vibeLine = buildFooterLine({
|
|
11829
11924
|
activeSlot,
|
|
11830
11925
|
providerLabel: execution.provider_label,
|
|
@@ -11895,7 +11990,7 @@ import { writeFileSync as writeFileSync14, appendFileSync as appendFileSync6, ex
|
|
|
11895
11990
|
import { join as join17, dirname as dirname12, basename as basename4 } from "node:path";
|
|
11896
11991
|
import { createHash as createHash5 } from "node:crypto";
|
|
11897
11992
|
|
|
11898
|
-
// src/lib/cost-anomaly.
|
|
11993
|
+
// src/lib/cost-anomaly.ts
|
|
11899
11994
|
var COST_WINDOW_SIZE = 20;
|
|
11900
11995
|
var COST_ANOMALY_THRESHOLD = 3;
|
|
11901
11996
|
var COST_WARMUP_SAMPLES = 5;
|
|
@@ -11906,26 +12001,21 @@ var CostAnomalyDetector = class {
|
|
|
11906
12001
|
currentAnomalyCost = 0;
|
|
11907
12002
|
currentAnomalyMean = 0;
|
|
11908
12003
|
record(cost) {
|
|
11909
|
-
if (this.disabled)
|
|
11910
|
-
return;
|
|
12004
|
+
if (this.disabled) return;
|
|
11911
12005
|
this.costHistory.push(cost);
|
|
11912
12006
|
if (this.costHistory.length > COST_WINDOW_SIZE) {
|
|
11913
12007
|
this.costHistory.shift();
|
|
11914
12008
|
}
|
|
11915
12009
|
}
|
|
11916
12010
|
get mean() {
|
|
11917
|
-
if (this.costHistory.length === 0)
|
|
11918
|
-
return 0;
|
|
12011
|
+
if (this.costHistory.length === 0) return 0;
|
|
11919
12012
|
return this.costHistory.reduce((a, b) => a + b, 0) / this.costHistory.length;
|
|
11920
12013
|
}
|
|
11921
12014
|
checkAnomaly(model, cost) {
|
|
11922
|
-
if (this.disabled)
|
|
11923
|
-
|
|
11924
|
-
if (this.costHistory.length < COST_WARMUP_SAMPLES)
|
|
11925
|
-
return false;
|
|
12015
|
+
if (this.disabled) return false;
|
|
12016
|
+
if (this.costHistory.length < COST_WARMUP_SAMPLES) return false;
|
|
11926
12017
|
const avg = this.mean;
|
|
11927
|
-
if (avg <= 0 || cost <= avg)
|
|
11928
|
-
return false;
|
|
12018
|
+
if (avg <= 0 || cost <= avg) return false;
|
|
11929
12019
|
const ratio = cost / avg;
|
|
11930
12020
|
if (ratio > COST_ANOMALY_THRESHOLD) {
|
|
11931
12021
|
this.currentAnomalyModel = model;
|
|
@@ -11947,8 +12037,7 @@ var CostAnomalyDetector = class {
|
|
|
11947
12037
|
};
|
|
11948
12038
|
var _costDetector = null;
|
|
11949
12039
|
function getCostAnomalyDetector() {
|
|
11950
|
-
if (!_costDetector)
|
|
11951
|
-
_costDetector = new CostAnomalyDetector();
|
|
12040
|
+
if (!_costDetector) _costDetector = new CostAnomalyDetector();
|
|
11952
12041
|
return _costDetector;
|
|
11953
12042
|
}
|
|
11954
12043
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibeostheog",
|
|
3
|
-
"version": "0.24.
|
|
3
|
+
"version": "0.24.29",
|
|
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",
|