omnius 1.0.502 → 1.0.504

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
@@ -582310,6 +582310,12 @@ var init_agenticRunner = __esm({
582310
582310
  _verifyFailures = /* @__PURE__ */ new Set();
582311
582311
  _verifyCommandFailures = /* @__PURE__ */ new Set();
582312
582312
  _artifactInspectionFailures = /* @__PURE__ */ new Set();
582313
+ // REG-62: baseline of verification failures captured at task start.
582314
+ // Pre-existing failures (from a prior reused-run instance, or from a
582315
+ // build that was already broken before this task) are excluded from the
582316
+ // task_complete gate so they don't produce false-positive holds. Only
582317
+ // failures NEW relative to this baseline block completion.
582318
+ _verifyFailuresBaseline = /* @__PURE__ */ new Set();
582313
582319
  // REG-37e: track whether we've already nudged the agent about the
582314
582320
  // verifyCommand / declaredArtifacts fields. Empirical observation
582315
582321
  // from run #15: across 30 todo_writes, agent set neither field
@@ -589404,6 +589410,7 @@ Respond with your assessment, then take action.`;
589404
589410
  this._lastWorldStateTurn = -1;
589405
589411
  this._fileWritesSinceLastWorldState = 0;
589406
589412
  this._resetVisualEvidenceState();
589413
+ this._verifyFailuresBaseline = new Set(this._verifyFailures);
589407
589414
  if (typeof this.backend.setAbortSignal === "function") {
589408
589415
  this.backend.setAbortSignal(this._abortController.signal);
589409
589416
  }
@@ -590187,19 +590194,20 @@ TASK: ${scrubbedTask}` : scrubbedTask;
590187
590194
  return true;
590188
590195
  };
590189
590196
  const holdUnresolvedVerificationTaskComplete = (turn) => {
590190
- if (this._verifyFailures.size === 0)
590197
+ const newFailures = [...this._verifyFailures].filter((f2) => !this._verifyFailuresBaseline.has(f2));
590198
+ if (newFailures.length === 0)
590191
590199
  return false;
590192
- const failures = [...this._verifyFailures].slice(0, 8);
590200
+ const failures = newFailures.slice(0, 8);
590193
590201
  const feedback = [
590194
590202
  `[COMPLETION BLOCKED — unresolved todo verification]`,
590195
- `The active todo list still contains completed items whose required evidence has not been satisfied.`,
590203
+ `The active todo list still contains completed items whose required evidence has not been satisfied by work done in THIS task.`,
590196
590204
  ``,
590197
- `Unresolved verification item(s):`,
590205
+ `Unresolved verification item(s) introduced this run:`,
590198
590206
  ...failures.map((item) => ` - ${item}`),
590199
590207
  ``,
590200
- `Run the missing verifyCommand exactly, repair the todo evidence, or mark the todo blocked. Do not call task_complete until the verification state is clean.`
590208
+ `Run the missing verifyCommand exactly, repair the todo evidence, or mark the todo blocked. Do not call task_complete until the verification state is clean. (Pre-existing failures present at task start are ignored.)`
590201
590209
  ].join("\n");
590202
- lastCompletionGateReason = `${this._verifyFailures.size} unresolved todo verification failure(s)`;
590210
+ lastCompletionGateReason = `${newFailures.length} unresolved todo verification failure(s) introduced this run`;
590203
590211
  lastCompletionGateFeedback = feedback;
590204
590212
  lastCompletionGateCode = "todo_verification";
590205
590213
  messages2.push({ role: "system", content: feedback });
@@ -639045,6 +639053,19 @@ var init_status_bar = __esm({
639045
639053
  return rawTotal;
639046
639054
  }
639047
639055
  }
639056
+ /**
639057
+ * The context-window value the OPERATOR-FACING gauge should measure against:
639058
+ * the REAL reported window from the provider/model, NOT the tier-capped
639059
+ * working window. A model advertising 262K must show its gauge against 262K
639060
+ * so "context used" reflects the true headroom the operator expects, not the
639061
+ * internal compaction ceiling. The capped value (effectiveContextTotal) is
639062
+ * still used for internal compaction/threshold logic; this is display-only.
639063
+ * Falls back to the raw window when unknown.
639064
+ */
639065
+ reportedContextTotal(rawTotal, cappedFallback = 0) {
639066
+ if (rawTotal > 0) return rawTotal;
639067
+ return cappedFallback > 0 ? cappedFallback : 0;
639068
+ }
639048
639069
  setModelName(name10) {
639049
639070
  this.setHeaderIdentity(
639050
639071
  name10,
@@ -641373,7 +641394,7 @@ ${CONTENT_BG_SEQ}`);
641373
641394
  });
641374
641395
  {
641375
641396
  const ctxUsed = m2.estimatedContextTokens;
641376
- const ctxTotal = this.effectiveContextTotal(m2.contextWindowSize);
641397
+ const ctxTotal = this.reportedContextTotal(m2.contextWindowSize, this.effectiveContextTotal(m2.contextWindowSize));
641377
641398
  let ctxSuffix = "";
641378
641399
  let ctxSuffixW = 0;
641379
641400
  let ctxCompSuffix = "";
@@ -641742,7 +641763,7 @@ ${CONTENT_BG_SEQ}`);
641742
641763
  /** Push current context window usage to the braille spinner */
641743
641764
  pushSpinnerContextMetrics() {
641744
641765
  const ctxUsed = this.metrics.estimatedContextTokens;
641745
- const ctxTotal = this.effectiveContextTotal(this.metrics.contextWindowSize);
641766
+ const ctxTotal = this.reportedContextTotal(this.metrics.contextWindowSize, this.effectiveContextTotal(this.metrics.contextWindowSize));
641746
641767
  const contextPct = ctxTotal > 0 ? Math.round(ctxUsed / ctxTotal * 100) : 0;
641747
641768
  this._brailleSpinner.setMetrics({ contextPct });
641748
641769
  }
@@ -743125,7 +743146,7 @@ function gatherMemorySnippets(root) {
743125
743146
  return snippets;
743126
743147
  }
743127
743148
  async function createSteeringIntakeBackend(config, repoRoot) {
743128
- const normalizeSteeringBaseUrl = (url) => url.replace(/\/(v1|api)\/?$/i, "").replace(/\/+$/, "");
743149
+ const normalizeSteeringBaseUrl = (url) => url.replace(/\/v1\/?$/i, "").replace(/\/+$/, "");
743129
743150
  if (config.backendType === "nexus") {
743130
743151
  const nexusTool = new NexusTool(repoRoot);
743131
743152
  await nexusTool.execute({ action: "connect" });
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.502",
3
+ "version": "1.0.504",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.502",
9
+ "version": "1.0.504",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
@@ -5108,9 +5108,9 @@
5108
5108
  }
5109
5109
  },
5110
5110
  "node_modules/lru-cache": {
5111
- "version": "11.5.1",
5112
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz",
5113
- "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==",
5111
+ "version": "11.5.2",
5112
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz",
5113
+ "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==",
5114
5114
  "license": "BlueOak-1.0.0",
5115
5115
  "engines": {
5116
5116
  "node": "20 || >=22"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.502",
3
+ "version": "1.0.504",
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",