vibeostheog 0.23.32 → 0.23.34
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 +9 -0
- package/package.json +3 -3
- package/src/index.js +9 -2
- package/src/lib/classifiers.js +3 -0
- package/src/lib/trinity-tool.js +6 -0
- package/src/lib/turn-classify.js +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
## 0.23.34
|
|
2
|
+
- fix: restore footer ML-driven display + 6 integration tests calling _appendFooter directly to prevent regression from stale .ts compilation
|
|
3
|
+
- fix: wire ensureProjectSkill into tool.execute.before and trinity guard
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
## 0.23.33
|
|
7
|
+
- feat: wire forensic + audit into ML pipeline — classifyTurnSimple detects security/forensic intent, autoSelectMode returns audit/forensic mode
|
|
8
|
+
|
|
9
|
+
|
|
1
10
|
## 0.23.32
|
|
2
11
|
- test: 14 agent_mode integration tests — plan only for complex regimes, stress-gated
|
|
3
12
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibeostheog",
|
|
3
|
-
"version": "0.23.
|
|
3
|
+
"version": "0.23.34",
|
|
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_agent_mode_integration.test.mjs tests/test_patterns_telemetry_integration.test.mjs tests/test_footer_dynamic_integration.test.mjs tests/test_ml_pipeline_e2e.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs tests/test_cv_ml_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_agent_mode_integration.test.mjs tests/test_patterns_telemetry_integration.test.mjs tests/test_footer_dynamic_integration.test.mjs tests/test_ml_pipeline_e2e.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs tests/test_cv_ml_integration.test.mjs src/lib/hooks/tests/chat-transform-cv-gate.test.js src/lib/hooks/tests/sync-control-settings.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_footer_alert_regression.test.mjs tests/test_agent_mode_integration.test.mjs tests/test_patterns_telemetry_integration.test.mjs tests/test_footer_dynamic_integration.test.mjs tests/test_ml_pipeline_e2e.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs tests/test_cv_ml_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_footer_alert_regression.test.mjs tests/test_agent_mode_integration.test.mjs tests/test_patterns_telemetry_integration.test.mjs tests/test_footer_dynamic_integration.test.mjs tests/test_ml_pipeline_e2e.test.mjs tests/test_vibeultrax_pipeline_integration.test.mjs tests/test_cv_ml_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",
|
package/src/index.js
CHANGED
|
@@ -25,7 +25,7 @@ import { createTrinityTool } from "./lib/trinity-tool.js";
|
|
|
25
25
|
import { classifyAndRankModels, modelToCcAlias, discoverAvailableModels, probeModel } from "./lib/trinity-rebuild.js";
|
|
26
26
|
import { _appendFooter } from "./lib/hooks/footer.js";
|
|
27
27
|
import { onToolExecuteBefore, onToolExecuteAfter, setToolDirectory } from "./lib/hooks/tool-execute.js";
|
|
28
|
-
import { onMessagesTransform, onSystemTransform, latestUserIntent } from "./lib/hooks/chat-transform.js";
|
|
28
|
+
import { onMessagesTransform, onSystemTransform, latestUserIntent, ensureProjectSkill } from "./lib/hooks/chat-transform.js";
|
|
29
29
|
import { onSessionCompacting } from "./lib/hooks/session-compact.js";
|
|
30
30
|
import { onShellEnv, setShellDirectory } from "./lib/hooks/shell-env.js";
|
|
31
31
|
function getVibeOSHome() {
|
|
@@ -67,6 +67,7 @@ let _mcpServerStartupPromise = null;
|
|
|
67
67
|
let context7Seen = new Set();
|
|
68
68
|
let _prevOutputText = "";
|
|
69
69
|
let _deferredBootstrapDone = false;
|
|
70
|
+
let _skillsEnsured = new Set();
|
|
70
71
|
let _runDeferredStartupBootstrap = null;
|
|
71
72
|
const SAVE_EST = {
|
|
72
73
|
WRITE_EDIT: 0.005,
|
|
@@ -431,7 +432,7 @@ export async function DelegationEnforcer({ client, directory } = {}) {
|
|
|
431
432
|
getBlackboxResolution, scoreStress, applySlot, saveOptimizationMode,
|
|
432
433
|
getFlowWarns, projectFingerprint, loadProjectState: loadProjectStateStable, saveProjectState: saveProjectStateStable,
|
|
433
434
|
ensureProjectBucket, mergeProjectBucket, clearProjectPatterns,
|
|
434
|
-
projectPatternRows, promotedProjectPatterns, detectTechStack, ensureProjectDocs,
|
|
435
|
+
projectPatternRows, promotedProjectPatterns, detectTechStack, ensureProjectDocs, ensureProjectSkill,
|
|
435
436
|
discoverAvailableModels, classifyAndRankModels, modelToCcAlias, probeModel,
|
|
436
437
|
setBlackboxEnabled, loadBlackboxState, saveBlackboxState,
|
|
437
438
|
reportsIndex: reportsIndexStable, saveReportsIndex: saveReportsIndexStable, backupFile: backupFileStable, writeSessionSlot, writeSessionOptMode, _refreshModel,
|
|
@@ -452,6 +453,12 @@ export async function DelegationEnforcer({ client, directory } = {}) {
|
|
|
452
453
|
setCurrentProjectName(directory ? directory.split("/").pop() : "unknown");
|
|
453
454
|
}
|
|
454
455
|
ensureDeferredBootstrap();
|
|
456
|
+
if (directory && hookFp && !_skillsEnsured.has(hookFp)) {
|
|
457
|
+
try {
|
|
458
|
+
ensureProjectSkill(directory, hookFp);
|
|
459
|
+
_skillsEnsured.add(hookFp);
|
|
460
|
+
} catch (_e) {}
|
|
461
|
+
}
|
|
455
462
|
onToolExecuteBefore._directory = directory;
|
|
456
463
|
return onToolExecuteBefore(input, output);
|
|
457
464
|
},
|
package/src/lib/classifiers.js
CHANGED
|
@@ -96,6 +96,9 @@ export function classifyTurnSimple(userText) {
|
|
|
96
96
|
const lower = String(userText || "").trim();
|
|
97
97
|
if (!lower)
|
|
98
98
|
return "INIT";
|
|
99
|
+
if (/(security|vulnerability|audit|owasp|inject|exploit|penetration|cve|attack|threat|compliance|gdpr|privacy|encrypt|xss|csrf|authn|authz|pentest|forensic|research|analyze dependencies|license audit|deep analysis|investigate|root cause|reverse engineer|disassemble|memory dump|core dump)/i.test(lower)) {
|
|
100
|
+
return "FORENSIC";
|
|
101
|
+
}
|
|
99
102
|
// Q&A / research patterns -> EXPLORING (relaxed enforcement)
|
|
100
103
|
if (/^(how|what|why|when|where|who|can you|could you|tell me|explain|describe|show|list|check|is there|are there|does|do you|summarize|elaborate|clarify|inspect|trace|find|search|look|read|show me|dump)/i.test(lower)) {
|
|
101
104
|
return "EXPLORING";
|
package/src/lib/trinity-tool.js
CHANGED
|
@@ -749,6 +749,12 @@ export function createTrinityTool(deps) {
|
|
|
749
749
|
return "Working directory not accessible.";
|
|
750
750
|
const techStack = deps.detectTechStack(deps.directory);
|
|
751
751
|
const result = deps.ensureProjectDocs(deps.directory, techStack);
|
|
752
|
+
const _fp = deps.projectFingerprint(deps.directory);
|
|
753
|
+
if (_fp) {
|
|
754
|
+
try {
|
|
755
|
+
deps.ensureProjectSkill(deps.directory, _fp);
|
|
756
|
+
} catch (_e) {}
|
|
757
|
+
}
|
|
752
758
|
if (result.created.length === 0 && result.skipped.length > 0) {
|
|
753
759
|
return `AGENTS.md and README.md already exist. Use \`trinity guard\` to check for missing features.`;
|
|
754
760
|
}
|
package/src/lib/turn-classify.js
CHANGED
|
@@ -12,6 +12,8 @@ function getVibeOSHome() {
|
|
|
12
12
|
function autoSelectMode(subRegime, stressMultiplier) {
|
|
13
13
|
const regime = String(subRegime || "INIT").toUpperCase();
|
|
14
14
|
const stress = Number(stressMultiplier ?? 0);
|
|
15
|
+
if (regime === "AUDIT" || regime === "FORENSIC")
|
|
16
|
+
return regime.toLowerCase();
|
|
15
17
|
if (regime === "LOOPING")
|
|
16
18
|
return "speed";
|
|
17
19
|
if (regime === "CONVERGING" || regime === "CLOSED")
|