vibeostheog 0.23.33 → 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 CHANGED
@@ -1,3 +1,8 @@
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
+
1
6
  ## 0.23.33
2
7
  - feat: wire forensic + audit into ML pipeline — classifyTurnSimple detects security/forensic intent, autoSelectMode returns audit/forensic mode
3
8
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibeostheog",
3
- "version": "0.23.33",
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
@@ -68,7 +68,6 @@ let context7Seen = new Set();
68
68
  let _prevOutputText = "";
69
69
  let _deferredBootstrapDone = false;
70
70
  let _skillsEnsured = new Set();
71
-
72
71
  let _runDeferredStartupBootstrap = null;
73
72
  const SAVE_EST = {
74
73
  WRITE_EDIT: 0.005,
@@ -433,7 +432,7 @@ export async function DelegationEnforcer({ client, directory } = {}) {
433
432
  getBlackboxResolution, scoreStress, applySlot, saveOptimizationMode,
434
433
  getFlowWarns, projectFingerprint, loadProjectState: loadProjectStateStable, saveProjectState: saveProjectStateStable,
435
434
  ensureProjectBucket, mergeProjectBucket, clearProjectPatterns,
436
- projectPatternRows, promotedProjectPatterns, detectTechStack, ensureProjectDocs,
435
+ projectPatternRows, promotedProjectPatterns, detectTechStack, ensureProjectDocs, ensureProjectSkill,
437
436
  discoverAvailableModels, classifyAndRankModels, modelToCcAlias, probeModel,
438
437
  setBlackboxEnabled, loadBlackboxState, saveBlackboxState,
439
438
  reportsIndex: reportsIndexStable, saveReportsIndex: saveReportsIndexStable, backupFile: backupFileStable, writeSessionSlot, writeSessionOptMode, _refreshModel,
@@ -460,7 +459,6 @@ export async function DelegationEnforcer({ client, directory } = {}) {
460
459
  _skillsEnsured.add(hookFp);
461
460
  } catch (_e) {}
462
461
  }
463
-
464
462
  onToolExecuteBefore._directory = directory;
465
463
  return onToolExecuteBefore(input, output);
466
464
  },
@@ -475,13 +473,6 @@ export async function DelegationEnforcer({ client, directory } = {}) {
475
473
  },
476
474
  "experimental.chat.messages.transform": async (_input, output) => {
477
475
  ensureDeferredBootstrap();
478
- if (directory && hookFp && !_skillsEnsured.has(hookFp)) {
479
- try {
480
- ensureProjectSkill(directory, hookFp);
481
- _skillsEnsured.add(hookFp);
482
- } catch (_e) {}
483
- }
484
-
485
476
  return onMessagesTransform(_input, output);
486
477
  },
487
478
  "experimental.session.compacting": async (_input, output) => {
@@ -494,13 +485,6 @@ export async function DelegationEnforcer({ client, directory } = {}) {
494
485
  setCurrentProjectName(directory ? directory.split("/").pop() : "unknown");
495
486
  }
496
487
  ensureDeferredBootstrap();
497
- if (directory && hookFp && !_skillsEnsured.has(hookFp)) {
498
- try {
499
- ensureProjectSkill(directory, hookFp);
500
- _skillsEnsured.add(hookFp);
501
- } catch (_e) {}
502
- }
503
-
504
488
  onSystemTransform._directory = directory;
505
489
  onSystemTransform._activeJob = activeJob;
506
490
  onSystemTransform._briefedProjects = systemBriefedProjects;
@@ -523,13 +507,6 @@ export async function DelegationEnforcer({ client, directory } = {}) {
523
507
  setCurrentProjectName(directory ? directory.split("/").pop() : "unknown");
524
508
  }
525
509
  ensureDeferredBootstrap();
526
- if (directory && hookFp && !_skillsEnsured.has(hookFp)) {
527
- try {
528
- ensureProjectSkill(directory, hookFp);
529
- _skillsEnsured.add(hookFp);
530
- } catch (_e) {}
531
- }
532
-
533
510
  await _appendFooter(_input, output, directory);
534
511
  },
535
512
  "message.updated": async (_input, output) => {
@@ -539,13 +516,6 @@ export async function DelegationEnforcer({ client, directory } = {}) {
539
516
  setCurrentProjectName(directory ? directory.split("/").pop() : "unknown");
540
517
  }
541
518
  ensureDeferredBootstrap();
542
- if (directory && hookFp && !_skillsEnsured.has(hookFp)) {
543
- try {
544
- ensureProjectSkill(directory, hookFp);
545
- _skillsEnsured.add(hookFp);
546
- } catch (_e) {}
547
- }
548
-
549
519
  await _appendFooter(_input, output, directory);
550
520
  },
551
521
  tool: {
@@ -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
  }