omnius 1.0.101 → 1.0.103

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
@@ -563250,17 +563250,17 @@ function buildTopBorder(title, metrics2, width) {
563250
563250
  let metricsSegment;
563251
563251
  let fillerWidth;
563252
563252
  if (titleSpan + metricsSpan + 4 <= inner) {
563253
- titleSegment = `${FG_BORDER}├${FG_TITLE}${titleChip}${RESET}${FG_BORDER}┤`;
563254
- metricsSegment = metricsChip ? `${FG_BORDER}├${FG_METRIC}${metricsChip}${RESET}${FG_BORDER}┤` : "";
563253
+ titleSegment = `${FG_BORDER}┤${FG_TITLE}${titleChip}${RESET}${FG_BORDER}├`;
563254
+ metricsSegment = metricsChip ? `${FG_BORDER}┤${FG_METRIC}${metricsChip}${RESET}${FG_BORDER}├` : "";
563255
563255
  fillerWidth = inner - titleSpan - metricsSpan - 2;
563256
563256
  } else if (titleSpan + 4 <= inner) {
563257
- titleSegment = `${FG_BORDER}├${FG_TITLE}${titleChip}${RESET}${FG_BORDER}┤`;
563257
+ titleSegment = `${FG_BORDER}┤${FG_TITLE}${titleChip}${RESET}${FG_BORDER}├`;
563258
563258
  metricsSegment = "";
563259
563259
  fillerWidth = inner - titleSpan - 2;
563260
563260
  } else {
563261
563261
  const room = Math.max(3, inner - 8);
563262
563262
  const truncated = titleVisible.length > room ? titleVisible.slice(0, Math.max(1, room - 1)) + "…" : titleVisible;
563263
- titleSegment = `${FG_BORDER}├${FG_TITLE} ${truncated} ${RESET}${FG_BORDER}┤`;
563263
+ titleSegment = `${FG_BORDER}┤${FG_TITLE} ${truncated} ${RESET}${FG_BORDER}├`;
563264
563264
  metricsSegment = "";
563265
563265
  fillerWidth = Math.max(0, inner - (truncated.length + 4) - 2);
563266
563266
  }
@@ -564421,7 +564421,8 @@ var init_render = __esm({
564421
564421
  green: (t2) => ansi2("32", t2),
564422
564422
  yellow: (t2) => ansi2("33", t2),
564423
564423
  blue: (t2) => ansi2("34", t2),
564424
- magenta: (t2) => ansi2("35", t2),
564424
+ magenta: (t2) => ansi2("38;5;198", t2),
564425
+ // deep pink
564425
564426
  cyan: (t2) => ansi2("36", t2),
564426
564427
  white: (t2) => ansi2("37", t2),
564427
564428
  bgBlue: (t2) => ansi2("44", t2),
@@ -564434,7 +564435,7 @@ var init_render = __esm({
564434
564435
  sub: (t2) => fg256(tuiTextDim(), t2),
564435
564436
  /** Dim text — readable grey for hints/placeholders */
564436
564437
  hint: (t2) => fg256(tuiTextDim(), t2),
564437
- /** Error text — magenta (bright) for errors */
564438
+ /** Error text — deep pink for errors */
564438
564439
  error: (t2) => fg256(198, t2),
564439
564440
  /** Warning text — warm orange for warnings */
564440
564441
  warn: (t2) => fg256(214, t2),
@@ -564589,8 +564590,8 @@ var init_render = __esm({
564589
564590
  BOX_BR2 = "╯";
564590
564591
  BOX_H2 = "─";
564591
564592
  BOX_V2 = "│";
564592
- BOX_TJ_L2 = "";
564593
- BOX_TJ_R2 = "";
564593
+ BOX_TJ_L2 = "";
564594
+ BOX_TJ_R2 = "";
564594
564595
  RESET2 = "\x1B[0m";
564595
564596
  _contentWriteHook = null;
564596
564597
  HINTS = [
@@ -651868,6 +651869,16 @@ async function startInteractive(config, repoPath) {
651868
651869
  } catch {
651869
651870
  }
651870
651871
  let restoredSessionContext = null;
651872
+ let terminalRestoredForExit = false;
651873
+ let interactiveExiting = false;
651874
+ const restoreTerminalForExit = () => {
651875
+ if (!process.stdout.isTTY || terminalRestoredForExit) return;
651876
+ terminalRestoredForExit = true;
651877
+ process.stdout.write(
651878
+ "\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?1015l\x1B[r\x1B[0m\x1B[?1049l\x1B[2J\x1B[3J\x1B]50;ClearScrollback\x07\x1B[H\x1B[?25h"
651879
+ // show cursor
651880
+ );
651881
+ };
651871
651882
  if (process.stdout.isTTY) {
651872
651883
  setTermSize(process.stdout.rows ?? 24, process.stdout.columns ?? 80);
651873
651884
  process.stdout.write(
@@ -651883,13 +651894,8 @@ async function startInteractive(config, repoPath) {
651883
651894
  // wizard completes and MouseFilterStream is created. Enabling mouse
651884
651895
  // here would leak SGR coordinate sequences into readline prompts.
651885
651896
  );
651886
- const restoreScreen = () => {
651887
- process.stdout.write(
651888
- "\x1B[?1002l\x1B[?1003l\x1B[?1006l\x1B[?1015l\x1B[?25h\x1B[?1049l"
651889
- // leave alt screen
651890
- );
651891
- };
651892
651897
  const cleanupAndExit = (code8) => {
651898
+ interactiveExiting = true;
651893
651899
  if (_shellToolRef) _shellToolRef.killAll();
651894
651900
  killAllFullSubAgents();
651895
651901
  taskManager.stopAll();
@@ -651904,10 +651910,10 @@ async function startInteractive(config, repoPath) {
651904
651910
  teardownTuiTasks();
651905
651911
  } catch {
651906
651912
  }
651907
- restoreScreen();
651913
+ restoreTerminalForExit();
651908
651914
  process.exit(code8);
651909
651915
  };
651910
- process.on("exit", restoreScreen);
651916
+ process.on("exit", restoreTerminalForExit);
651911
651917
  process.on("SIGINT", () => cleanupAndExit(130));
651912
651918
  process.on("SIGTERM", () => cleanupAndExit(143));
651913
651919
  }
@@ -656263,6 +656269,7 @@ ${result.content.slice(0, 2e3)}${result.content.length > 2e3 ? "\n[truncated]" :
656263
656269
  if (input.startsWith("/")) {
656264
656270
  const quitMatch = input.trim().replace(/^\//, "").toLowerCase();
656265
656271
  if (quitMatch === "quit" || quitMatch === "exit" || quitMatch === "q") {
656272
+ interactiveExiting = true;
656266
656273
  if (activeTask) activeTask.runner.abort();
656267
656274
  taskManager.stopAll();
656268
656275
  if (blessEngine?.isActive) blessEngine.stop();
@@ -656271,25 +656278,18 @@ ${result.content.slice(0, 2e3)}${result.content.length > 2e3 ? "\n[truncated]" :
656271
656278
  dmnEngine = null;
656272
656279
  killAllFullSubAgents();
656273
656280
  statusBar.deactivate();
656274
- process.stdout.write(
656275
- `\x1B[?1002l\x1B[?1006l\x1B[r\x1B[?25h\x1B[2J\x1B[H${c3.dim("Goodbye!")}
656276
- `
656277
- );
656278
- rl.close();
656281
+ restoreTerminalForExit();
656279
656282
  process.exit(0);
656280
656283
  }
656281
656284
  const cmdResult = await writeContentAsync(
656282
656285
  () => handleSlashCommand(input, commandCtx)
656283
656286
  );
656284
656287
  if (cmdResult === "exit") {
656288
+ interactiveExiting = true;
656285
656289
  if (activeTask) activeTask.runner.abort();
656286
656290
  taskManager.stopAll();
656287
656291
  statusBar.deactivate();
656288
- process.stdout.write(
656289
- `\x1B[?1002l\x1B[?1006l\x1B[r\x1B[?25h\x1B[2J\x1B[H${c3.dim("Goodbye!")}
656290
- `
656291
- );
656292
- rl.close();
656292
+ restoreTerminalForExit();
656293
656293
  process.exit(0);
656294
656294
  }
656295
656295
  if (cmdResult === "handled") {
@@ -657005,6 +657005,8 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
657005
657005
  }
657006
657006
  });
657007
657007
  rl.on("close", () => {
657008
+ if (interactiveExiting) return;
657009
+ interactiveExiting = true;
657008
657010
  if (peerMesh) {
657009
657011
  peerMesh.stop().catch(() => {
657010
657012
  });
@@ -657012,10 +657014,7 @@ Rationale: ${proposal.rationale}${provenanceNote}`;
657012
657014
  inferenceRouter = null;
657013
657015
  }
657014
657016
  statusBar.deactivate();
657015
- process.stdout.write("\x1B[?1049l");
657016
- process.stdout.write(`
657017
- ${c3.dim("Goodbye!")}
657018
- `);
657017
+ restoreTerminalForExit();
657019
657018
  process.exit(0);
657020
657019
  });
657021
657020
  rl.on("SIGINT", () => {
@@ -658648,7 +658647,6 @@ function createCli(options2) {
658648
658647
  return;
658649
658648
  }
658650
658649
  if (input === "exit" || input === "quit") {
658651
- console.log("Goodbye.");
658652
658650
  rl.close();
658653
658651
  return;
658654
658652
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.101",
3
+ "version": "1.0.103",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.101",
9
+ "version": "1.0.103",
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.101",
3
+ "version": "1.0.103",
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",