omnius 1.0.483 → 1.0.485

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/dist/index.js CHANGED
@@ -576436,13 +576436,14 @@ function uniqueLimited(values) {
576436
576436
  return uniqueValues;
576437
576437
  return uniqueValues.slice(-MAX_FORBIDDEN_FAMILIES);
576438
576438
  }
576439
- var directiveCounter, TERMINAL_INCOMPLETE_IGNORE_THRESHOLD, MAX_FORBIDDEN_FAMILIES, FocusSupervisor;
576439
+ var directiveCounter, TERMINAL_INCOMPLETE_IGNORE_THRESHOLD, MAX_FORBIDDEN_FAMILIES, REPEATED_FAMILY_VIOLATION_LIMIT, FocusSupervisor;
576440
576440
  var init_focusSupervisor = __esm({
576441
576441
  "packages/orchestrator/dist/focusSupervisor.js"() {
576442
576442
  "use strict";
576443
576443
  directiveCounter = 0;
576444
576444
  TERMINAL_INCOMPLETE_IGNORE_THRESHOLD = 8;
576445
576445
  MAX_FORBIDDEN_FAMILIES = 12;
576446
+ REPEATED_FAMILY_VIOLATION_LIMIT = 3;
576446
576447
  FocusSupervisor = class {
576447
576448
  mode;
576448
576449
  modelTier;
@@ -576462,6 +576463,7 @@ var init_focusSupervisor = __esm({
576462
576463
  convergenceFamilyCounts = /* @__PURE__ */ new Map();
576463
576464
  ignoredDirectiveStreak = 0;
576464
576465
  lastIgnoredDirectiveTurn = null;
576466
+ repeatedViolationCounts = /* @__PURE__ */ new Map();
576465
576467
  availableTools = null;
576466
576468
  constructor(options2 = {}) {
576467
576469
  this.mode = options2.mode ?? "auto";
@@ -576558,6 +576560,28 @@ var init_focusSupervisor = __esm({
576558
576560
  prior.ignoredCount++;
576559
576561
  this.ignoredDirectiveStreak++;
576560
576562
  this.lastIgnoredDirectiveTurn = input.turn;
576563
+ const familyViolationKey = `${prior.id}|${family}`;
576564
+ const familyViolationCount = (this.repeatedViolationCounts.get(familyViolationKey) ?? 0) + 1;
576565
+ this.repeatedViolationCounts.set(familyViolationKey, familyViolationCount);
576566
+ if (prior.requiredNextAction !== "creative_pivot_or_research" && familyViolationCount >= REPEATED_FAMILY_VIOLATION_LIMIT) {
576567
+ const directive = this.setDirective({
576568
+ turn: input.turn,
576569
+ state: "forced_replan",
576570
+ reason: `model repeatedly retried the same blocked action family (${family}) ${familyViolationCount} times for directive ${prior.id}`,
576571
+ requiredNextAction: "creative_pivot_or_research",
576572
+ forbiddenActionFamilies: uniqueLimited([
576573
+ ...prior.forbiddenActionFamilies,
576574
+ family
576575
+ ])
576576
+ });
576577
+ return this.block(directive, [
576578
+ "[FOCUS SUPERVISOR BLOCK: LOOP CONTROL]",
576579
+ `Directive ${prior.id} was repeatedly ignored with ${family}.`,
576580
+ `Required next action: ${directive.requiredNextAction}.`,
576581
+ actionReasonSummary(input.actionReason),
576582
+ "Stop trying this action-family repeatedly. Pivot to a materially different approach or web_search the blocker, then continue."
576583
+ ].filter(Boolean).join("\n"), false);
576584
+ }
576561
576585
  if (prior.requiredNextAction === "read_authoritative_target" && input.cachedResult && (input.duplicateHitCount ?? 0) >= Math.max(1, this.repeatGateMax - 1)) {
576562
576586
  const deadlockDirective = this.setDirective({
576563
576587
  turn: input.turn,
@@ -576672,6 +576696,24 @@ var init_focusSupervisor = __esm({
576672
576696
  this.clearSatisfiedDirective(input.runtimeAuthored ? "cached authoritative evidence reused" : "authoritative evidence already available", input.turn);
576673
576697
  return;
576674
576698
  }
576699
+ if (input.toolName === "shell" && input.success) {
576700
+ if (this.convergenceBreaker) {
576701
+ const fam = actionFamily(input.toolName, input.args, this.familyCwd);
576702
+ this.convergenceBreaker.resolve(fam);
576703
+ this.convergenceFamilyCounts.delete(fam);
576704
+ }
576705
+ if (this.directive?.requiredNextAction === "run_verification") {
576706
+ this.clearSatisfiedDirective(input.runtimeAuthored ? "cached verification replay consumed" : "verification ran successfully", input.turn);
576707
+ } else if (input.isReadLike && this.directive?.requiredNextAction === "read_authoritative_target") {
576708
+ this.clearSatisfiedDirective("authoritative evidence read via shell", input.turn);
576709
+ } else if (!input.isReadLike && this.directive?.requiredNextAction === "use_cached_evidence") {
576710
+ this.clearSatisfiedDirective("distinct shell action executed after cached evidence", input.turn);
576711
+ } else if (input.runtimeAuthored) {
576712
+ this.lastDecision = "runtime_authored_not_satisfied";
576713
+ this.lastReason = "runtime-authored control result did not execute the requested tool";
576714
+ }
576715
+ return;
576716
+ }
576675
576717
  if (input.runtimeAuthored) {
576676
576718
  this.lastDecision = "runtime_authored_not_satisfied";
576677
576719
  this.lastReason = "runtime-authored control result did not execute the requested tool";
@@ -576701,21 +576743,6 @@ var init_focusSupervisor = __esm({
576701
576743
  }
576702
576744
  return;
576703
576745
  }
576704
- if (input.toolName === "shell" && input.success) {
576705
- if (this.convergenceBreaker) {
576706
- const fam = actionFamily(input.toolName, input.args, this.familyCwd);
576707
- this.convergenceBreaker.resolve(fam);
576708
- this.convergenceFamilyCounts.delete(fam);
576709
- }
576710
- if (this.directive?.requiredNextAction === "run_verification") {
576711
- this.clearSatisfiedDirective("verification ran successfully", input.turn);
576712
- } else if (input.isReadLike && this.directive?.requiredNextAction === "read_authoritative_target") {
576713
- this.clearSatisfiedDirective("authoritative evidence read via shell", input.turn);
576714
- } else if (!input.isReadLike && this.directive?.requiredNextAction === "use_cached_evidence") {
576715
- this.clearSatisfiedDirective("distinct shell action executed after cached evidence", input.turn);
576716
- }
576717
- return;
576718
- }
576719
576746
  if (input.success)
576720
576747
  return;
576721
576748
  const family = failureFamilyKey(input.toolName, input.args, input.error, input.output, this.familyCwd);
@@ -576872,6 +576899,9 @@ var init_focusSupervisor = __esm({
576872
576899
  createdTurn: input.turn,
576873
576900
  ignoredCount: 0
576874
576901
  };
576902
+ if (!stable) {
576903
+ this.repeatedViolationCounts.clear();
576904
+ }
576875
576905
  this.directive = directive;
576876
576906
  this.state = directive.state;
576877
576907
  this.lastReason = directive.reason;
@@ -576888,6 +576918,7 @@ var init_focusSupervisor = __esm({
576888
576918
  this.state = "observe";
576889
576919
  this.ignoredDirectiveStreak = 0;
576890
576920
  this.lastIgnoredDirectiveTurn = null;
576921
+ this.repeatedViolationCounts.clear();
576891
576922
  }
576892
576923
  pass() {
576893
576924
  return {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.483",
3
+ "version": "1.0.485",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.483",
9
+ "version": "1.0.485",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
@@ -4096,9 +4096,9 @@
4096
4096
  }
4097
4097
  },
4098
4098
  "node_modules/hono": {
4099
- "version": "4.12.27",
4100
- "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.27.tgz",
4101
- "integrity": "sha512-1yrb/+w6HWQJrUCLkJ2IF5jNIPvvFkblV5RNOYl6bV+OA6p9GLcMpHFFGTosSvHvcAUibuUukRqhlYI4z32C7Q==",
4099
+ "version": "4.12.28",
4100
+ "resolved": "https://registry.npmjs.org/hono/-/hono-4.12.28.tgz",
4101
+ "integrity": "sha512-YwUvVpSF7m1yOblFPrU3Hbo8XhPheBoiyfGuII6z19LnOr6JpDnyyp7LFNrfV56wS8tpvtBFGRISHN02pDdLOA==",
4102
4102
  "license": "MIT",
4103
4103
  "engines": {
4104
4104
  "node": ">=16.9.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.483",
3
+ "version": "1.0.485",
4
4
  "description": "AI coding agent powered by open-source models (Ollama/vLLM) — interactive TUI with agentic tool-calling loop",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",