omnius 1.0.88 → 1.0.89

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
@@ -544514,9 +544514,6 @@ ${memoryLines.join("\n")}`
544514
544514
  const churnBlock = this._renderWriteChurnBlock(turn);
544515
544515
  if (churnBlock)
544516
544516
  _injections.push(churnBlock);
544517
- const progressBlock = this._renderProgressNudgeBlock(turn);
544518
- if (progressBlock)
544519
- _injections.push(progressBlock);
544520
544517
  const knowledgeBlock = this._renderKnowledgeBlock(recentToolResults);
544521
544518
  if (knowledgeBlock)
544522
544519
  _injections.push(knowledgeBlock);
@@ -545062,55 +545059,6 @@ ${memoryLines.join("\n")}`
545062
545059
  return { tc, output: _decomp2Block };
545063
545060
  }
545064
545061
  }
545065
- const PROGRESS_GATE_BYPASS_TOOLS = /* @__PURE__ */ new Set([
545066
- "todo_write",
545067
- "todo_read",
545068
- "task_complete",
545069
- "ask_user",
545070
- "phase_recall"
545071
- // useful for the agent to consult prior phase state before updating
545072
- ]);
545073
- if (this._progressGateActive && !PROGRESS_GATE_BYPASS_TOOLS.has(tc.name)) {
545074
- this.emit({
545075
- type: "tool_call",
545076
- toolName: tc.name,
545077
- toolArgs: tc.arguments,
545078
- turn,
545079
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
545080
- });
545081
- const recentWrites = [];
545082
- for (const [path12, info] of this._worldFacts.files) {
545083
- if ((info.writeCount ?? 0) > 0 && (info.lastWriteTurn ?? -1) >= 0 && turn - (info.lastWriteTurn ?? 0) <= 8) {
545084
- recentWrites.push({ path: path12, turn: info.lastWriteTurn ?? 0 });
545085
- }
545086
- }
545087
- recentWrites.sort((a2, b) => b.turn - a2.turn);
545088
- const showWrites = recentWrites.slice(0, 16);
545089
- const gateMsg = [
545090
- `[PROGRESS GATE — call todo_write FIRST before any other tool]`,
545091
- ``,
545092
- `You have completed ${this._writesSinceLastTodoWrite} file modification${this._writesSinceLastTodoWrite === 1 ? "" : "s"} since your last todo_write call.`,
545093
- `The next tool call MUST be todo_write to mark progress. This is enforced — non-todo tool calls are intercepted until plan state is updated.`,
545094
- ``,
545095
- `Recent file modifications (use these to decide what's done):`,
545096
- ...showWrites.map((w) => ` • ${w.path} (turn ${w.turn})`),
545097
- recentWrites.length > showWrites.length ? ` • ... +${recentWrites.length - showWrites.length} more` : "",
545098
- ``,
545099
- `Required action: call todo_write with the updated todo array — mark anything completed that these writes satisfy, advance the next item to in_progress, keep the rest pending.`,
545100
- `After todo_write succeeds, this gate releases and you can continue normal work.`,
545101
- ``,
545102
- `Why this exists: without the explicit progress update, your next turn will see the same in_progress todo, re-plan the same work, and re-emit identical tool calls (the "plan replay" failure mode that causes byte-identical writes to appear twice).`
545103
- ].filter(Boolean).join("\n");
545104
- this.emit({
545105
- type: "tool_result",
545106
- toolName: tc.name,
545107
- success: false,
545108
- content: gateMsg.slice(0, 120),
545109
- turn,
545110
- timestamp: (/* @__PURE__ */ new Date()).toISOString()
545111
- });
545112
- return { tc, output: gateMsg };
545113
- }
545114
545062
  const _argsKeyForBudget = `${tc.name}:${argsKey}`;
545115
545063
  const _isCachedHit = recentToolResults.has(_argsKeyForBudget);
545116
545064
  const budgetRemaining = toolCallBudget.get(tc.name);
@@ -571511,10 +571459,19 @@ var init_status_bar = __esm({
571511
571459
  syncEnd() {
571512
571460
  this.termWrite("\x1B[?2026l");
571513
571461
  }
571514
- /** Force a complete footer redraw (public wrapper for renderFooterAndPositionInput) */
571462
+ /** Force a complete footer redraw (public wrapper for renderFooterAndPositionInput).
571463
+ *
571464
+ * IMPORTANT: do NOT call `updateFooterHeight()` here. The inner render
571465
+ * function captures `oldFooterTop` from the CURRENT `_currentFooterHeight`
571466
+ * BEFORE updating it, so it can detect height changes and clear the
571467
+ * rows that the old (taller) footer used to occupy. Pre-calling
571468
+ * `updateFooterHeight` here would mutate the height to the new value
571469
+ * first, leaving the inner render to think nothing changed and skipping
571470
+ * the transition-row clear — which is exactly what caused stale prompt
571471
+ * text to remain on the input box's top unicode border after submitting
571472
+ * a multi-line input. */
571515
571473
  redrawFooter() {
571516
571474
  if (!this.active) return;
571517
- this.updateFooterHeight();
571518
571475
  this.renderFooterAndPositionInput();
571519
571476
  }
571520
571477
  /** Callback to get available slash commands for suggestion matching */
@@ -654588,6 +654545,9 @@ ${result.content.slice(0, 2e3)}${result.content.length > 2e3 ? "\n[truncated]" :
654588
654545
  if (!setupReady) return;
654589
654546
  persistHistoryLine(line);
654590
654547
  const input = line.trim();
654548
+ if (statusBar?.isActive && line.length > 0) {
654549
+ statusBar.redrawFooter();
654550
+ }
654591
654551
  if (!input) {
654592
654552
  if (pasteBuffer.length > 0) {
654593
654553
  if (pasteIndicatorShown) {
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.88",
3
+ "version": "1.0.89",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.88",
9
+ "version": "1.0.89",
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.88",
3
+ "version": "1.0.89",
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",