omnius 1.0.474 → 1.0.476

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
@@ -576110,6 +576110,25 @@ function normalizeShellForFamily(command, cwd4) {
576110
576110
  } while (s2 !== prev);
576111
576111
  return s2.replace(/\s+/g, " ").trim();
576112
576112
  }
576113
+ function failureProgressSignal(text2) {
576114
+ const s2 = String(text2 || "");
576115
+ if (!s2.trim())
576116
+ return void 0;
576117
+ let explicit;
576118
+ for (const m2 of s2.matchAll(/(\d+)\s+(?:errors?|failures?|failed|problems?)\b/gi)) {
576119
+ const n2 = Number(m2[1]);
576120
+ if (Number.isFinite(n2))
576121
+ explicit = Math.max(explicit ?? 0, n2);
576122
+ }
576123
+ if (explicit != null)
576124
+ return explicit;
576125
+ let lines = 0;
576126
+ for (const line of s2.split(/\r?\n/)) {
576127
+ if (/\b(errors?|fail(?:ed|ure|ures|s)?)\b/i.test(line))
576128
+ lines++;
576129
+ }
576130
+ return lines > 0 ? lines : void 0;
576131
+ }
576113
576132
  function actionFamily(toolName, args, cwd4) {
576114
576133
  if (isEditTool(toolName)) {
576115
576134
  const path13 = primaryPath(args);
@@ -576567,7 +576586,11 @@ var init_focusSupervisor = __esm({
576567
576586
  turn: input.turn,
576568
576587
  sample: next.sample,
576569
576588
  errorClass: next.errorClass,
576570
- mutatedSinceLast: this.sawMutationSinceFailure
576589
+ mutatedSinceLast: this.sawMutationSinceFailure,
576590
+ // Root fix: progress = the action's error count dropped, not that an
576591
+ // edit happened. Extract the signal from the action's own output so a
576592
+ // futile edit loop (rebuilding with the same error count) escalates.
576593
+ failureSignal: failureProgressSignal(input.output || input.error)
576571
576594
  });
576572
576595
  this.sawMutationSinceFailure = false;
576573
576596
  if (verdict.tier === "abandon") {
@@ -576730,6 +576753,8 @@ var init_convergence_breaker = __esm({
576730
576753
  baseline = /* @__PURE__ */ new Map();
576731
576754
  /** Progress decay accumulated this session (one per productive mutation). */
576732
576755
  decay = /* @__PURE__ */ new Map();
576756
+ /** Last verification signal (error count) seen per family, for delta-based progress. */
576757
+ lastSignal = /* @__PURE__ */ new Map();
576733
576758
  constructor(options2 = {}) {
576734
576759
  this.warnRound = Math.max(1, options2.warnRound ?? DEFAULTS.warnRound);
576735
576760
  this.stallRound = Math.max(this.warnRound + 1, options2.stallRound ?? DEFAULTS.stallRound);
@@ -576749,7 +576774,15 @@ var init_convergence_breaker = __esm({
576749
576774
  }
576750
576775
  const base3 = this.baseline.get(obs.family) ?? 0;
576751
576776
  let dec = this.decay.get(obs.family) ?? 0;
576752
- if (obs.mutatedSinceLast) {
576777
+ let madeProgress;
576778
+ if (obs.failureSignal != null) {
576779
+ const prev = this.lastSignal.get(obs.family);
576780
+ madeProgress = prev != null && obs.failureSignal < prev;
576781
+ this.lastSignal.set(obs.family, obs.failureSignal);
576782
+ } else {
576783
+ madeProgress = Boolean(obs.mutatedSinceLast);
576784
+ }
576785
+ if (madeProgress) {
576753
576786
  dec += 1;
576754
576787
  this.decay.set(obs.family, dec);
576755
576788
  }
@@ -576771,6 +576804,7 @@ var init_convergence_breaker = __esm({
576771
576804
  this.live.delete(family);
576772
576805
  this.baseline.delete(family);
576773
576806
  this.decay.delete(family);
576807
+ this.lastSignal.delete(family);
576774
576808
  this.store.save({ family, rounds: 0, updatedAtMs: Date.now() });
576775
576809
  }
576776
576810
  snapshot() {
@@ -577035,6 +577069,40 @@ var init_longhaul_integration = __esm({
577035
577069
  return null;
577036
577070
  }
577037
577071
  }
577072
+ /**
577073
+ * WO-1 (PyTy pattern): parse a failed build/verify command's own output for
577074
+ * named STRUCTURAL contract violations (signature mismatch / duplicate
577075
+ * definition / unknown member or symbol) and return guidance naming the exact
577076
+ * drifted symbols, so the next edit targets the drift instead of guessing.
577077
+ * Uses the model's own compiler output — no separate compiler run. Generic
577078
+ * across gcc/clang/tsc; returns null when there's nothing structural.
577079
+ */
577080
+ diagnosticGuidance(output) {
577081
+ try {
577082
+ const diags = parseCompilerDiagnostics(String(output || ""));
577083
+ const byKind = /* @__PURE__ */ new Map();
577084
+ for (const d2 of diags) {
577085
+ if (d2.kind !== "signature_mismatch" && d2.kind !== "duplicate_definition" && d2.kind !== "unknown_member" && d2.kind !== "unknown_symbol")
577086
+ continue;
577087
+ if (!d2.symbol)
577088
+ continue;
577089
+ const arr = byKind.get(d2.kind) ?? [];
577090
+ if (!arr.includes(d2.symbol) && arr.length < 4)
577091
+ arr.push(d2.symbol);
577092
+ byKind.set(d2.kind, arr);
577093
+ }
577094
+ const parts = [];
577095
+ for (const [kind, syms] of byKind) {
577096
+ if (syms.length)
577097
+ parts.push(`${kind.replace(/_/g, " ")} → ${syms.join(", ")}`);
577098
+ }
577099
+ if (parts.length === 0)
577100
+ return null;
577101
+ return `Compiler reports structural contract violations — reconcile these EXACT symbols before editing unrelated files: ${parts.join("; ")}. A signature/definition mismatch means a declaration and its use disagree; fix them against the locked contract (or regenerate the unit) rather than patching around it.`;
577102
+ } catch {
577103
+ return null;
577104
+ }
577105
+ }
577038
577106
  /**
577039
577107
  * WO-5: decide whether to compact now (threshold AND rubric). The hard ceiling
577040
577108
  * guarantees a truly-full window still compacts.
@@ -592471,6 +592539,14 @@ ${rec.guidance}` : rec.guidance;
592471
592539
  ${dir}` : dir;
592472
592540
  }
592473
592541
  }
592542
+ if (!result.success) {
592543
+ const diag = lh.diagnosticGuidance(result.output ?? result.error ?? "");
592544
+ if (diag) {
592545
+ runtimeSystemGuidance = runtimeSystemGuidance ? `${runtimeSystemGuidance}
592546
+
592547
+ ${diag}` : diag;
592548
+ }
592549
+ }
592474
592550
  }
592475
592551
  } catch {
592476
592552
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.474",
3
+ "version": "1.0.476",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.474",
9
+ "version": "1.0.476",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.474",
3
+ "version": "1.0.476",
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",