omnius 1.0.531 โ†’ 1.0.532

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
@@ -560801,6 +560801,10 @@ var init_adaptive_edit_strategy = __esm({
560801
560801
  });
560802
560802
 
560803
560803
  // packages/execution/dist/boundary-verifier.js
560804
+ function normalizeCompilerOutputLine(line) {
560805
+ const trimmed = line.trim();
560806
+ return trimmed.replace(/^\d+:\s+(?=(?:.*?:\d+(?::\d+)?:\s*(?:fatal\s+)?(?:error|warning):|(?:UnknownPackageError|PackageError):))/i, "");
560807
+ }
560804
560808
  function isStructuralBoundary(path16) {
560805
560809
  if (HEADER_EXT.test(path16))
560806
560810
  return true;
@@ -560848,7 +560852,7 @@ function parseCompilerDiagnostics(text2, language = "unknown") {
560848
560852
  }
560849
560853
  }
560850
560854
  for (const raw of allLines) {
560851
- const line = raw.trim();
560855
+ const line = normalizeCompilerOutputLine(raw);
560852
560856
  if (!line)
560853
560857
  continue;
560854
560858
  const pytestMatch = line.match(/^FAILED\s+(.+?)(?:::(\w+))?(?:\s+-\s+(.+))?$/);
@@ -560863,6 +560867,15 @@ function parseCompilerDiagnostics(text2, language = "unknown") {
560863
560867
  }
560864
560868
  if (!/error|FAILED|unrecognized|Traceback|Warning|warning/i.test(line))
560865
560869
  continue;
560870
+ const packageError = line.match(/^(?:UnknownPackageError|PackageError):\s*(.*)$/i);
560871
+ if (packageError) {
560872
+ out.push({
560873
+ kind: "import_error",
560874
+ symbol: firstQuoted(packageError[1] ?? line),
560875
+ message: packageError[1] ?? line
560876
+ });
560877
+ continue;
560878
+ }
560866
560879
  if (/unrecognized\s+(element|attribute)/i.test(line) || /not\s+allowed\s+here/i.test(line)) {
560867
560880
  const fileMatch = line.match(/^(.+?):/);
560868
560881
  const lnMatch = line.match(/:(\d+):/);
@@ -560875,6 +560888,8 @@ function parseCompilerDiagnostics(text2, language = "unknown") {
560875
560888
  continue;
560876
560889
  }
560877
560890
  const loc = line.match(/^(.+?):(\d+):(?:\d+:)?\s*(?:fatal\s+)?error:\s*(.*)$/i);
560891
+ if (!loc)
560892
+ continue;
560878
560893
  const file = loc?.[1];
560879
560894
  const lineNo = loc ? Number(loc[2]) : void 0;
560880
560895
  const msg = loc?.[3] ?? line;
@@ -581021,7 +581036,7 @@ function isDeprioritizedDiagnostic(diag) {
581021
581036
  function normalizeFile(file) {
581022
581037
  if (!file)
581023
581038
  return void 0;
581024
- const unix = file.trim().replace(/\\/g, "/");
581039
+ const unix = file.trim().replace(/\\/g, "/").replace(/^\d+:\s+(?=.*\.[a-z0-9]+(?::|$))/i, "");
581025
581040
  if (!unix)
581026
581041
  return void 0;
581027
581042
  const normalized = path7.posix.normalize(unix).replace(/^\.\//, "");
@@ -582625,6 +582640,12 @@ function isRunnerOwnedGitPath(path16) {
582625
582640
  const normalized = normalizeGitPath(path16);
582626
582641
  return RUNNER_OWNED_PREFIXES.some((prefix) => normalized.startsWith(prefix));
582627
582642
  }
582643
+ function isGeneratedArtifactGitPath(path16) {
582644
+ return GENERATED_ARTIFACT_PATH_RE.test(normalizeGitPath(path16));
582645
+ }
582646
+ function isTrackableProjectGitPath(path16) {
582647
+ return !isRunnerOwnedGitPath(path16) && !isGeneratedArtifactGitPath(path16);
582648
+ }
582628
582649
  function normalizeGitPath(path16) {
582629
582650
  return path16.replace(/\\/g, "/").replace(/^\.\//, "");
582630
582651
  }
@@ -582703,7 +582724,7 @@ function parseGitPorcelainStatusZ(raw) {
582703
582724
  i2++;
582704
582725
  }
582705
582726
  }
582706
- if (!isRunnerOwnedGitPath(entry.path))
582727
+ if (isTrackableProjectGitPath(entry.path))
582707
582728
  entries.push(entry);
582708
582729
  }
582709
582730
  return entries;
@@ -582763,7 +582784,7 @@ function buildChangedPaths(input) {
582763
582784
  }
582764
582785
  for (const path16 of input.mutatedPaths) {
582765
582786
  const rel = normalizeMutatedPath(input.repoRoot, path16);
582766
- if (rel && !isRunnerOwnedGitPath(rel))
582787
+ if (rel && isTrackableProjectGitPath(rel))
582767
582788
  changed.add(rel);
582768
582789
  }
582769
582790
  return {
@@ -582859,7 +582880,7 @@ async function refreshGitProgressState(state, input) {
582859
582880
  const currentStatus = parseGitPorcelainStatusZ(statusRaw);
582860
582881
  const currentDirtyPaths = pathsFromStatus(currentStatus);
582861
582882
  const currentUntrackedPaths = pathsFromStatus(currentStatus.filter((entry) => entry.untracked));
582862
- const mutatedPaths = normalizePathList((input.mutatedPaths ?? []).map((path16) => normalizeMutatedPath(repoRoot, path16)).filter((path16) => path16 && !isRunnerOwnedGitPath(path16)));
582883
+ const mutatedPaths = normalizePathList((input.mutatedPaths ?? []).map((path16) => normalizeMutatedPath(repoRoot, path16)).filter((path16) => path16 && isTrackableProjectGitPath(path16)));
582863
582884
  const delta = buildChangedPaths({
582864
582885
  repoRoot,
582865
582886
  baselineEntries: state.baselineStatus,
@@ -583011,12 +583032,13 @@ function summarizeGitProgressForTrajectory(state) {
583011
583032
  error: state.error
583012
583033
  };
583013
583034
  }
583014
- var RUNNER_OWNED_PREFIXES;
583035
+ var RUNNER_OWNED_PREFIXES, GENERATED_ARTIFACT_PATH_RE;
583015
583036
  var init_git_progress = __esm({
583016
583037
  "packages/orchestrator/dist/git-progress.js"() {
583017
583038
  "use strict";
583018
583039
  init_process_async2();
583019
583040
  RUNNER_OWNED_PREFIXES = [".omnius/"];
583041
+ GENERATED_ARTIFACT_PATH_RE = /(^|\/)(?:\.pio\/build|node_modules|\.pnpm-store|\.cache|coverage|\.next|\.nuxt|target\/debug|target\/release)(\/|$)/i;
583020
583042
  }
583021
583043
  });
583022
583044
 
@@ -629895,7 +629917,12 @@ ${c3.magenta("โ—")} ${c3.italic(text2)}
629895
629917
  `);
629896
629918
  }
629897
629919
  function renderVoiceText(text2) {
629898
- process.stdout.write(` ${c3.dim("๐Ÿ”Š")} ${c3.italic(c3.dim(text2))}
629920
+ if (process.env["OMNIUS_SHOW_SPOKEN_TEXT"] !== "1" && process.env["OMNIUS_RENDER_VOICE_TEXT"] !== "1") {
629921
+ return;
629922
+ }
629923
+ const clean5 = text2.replace(/\s+/g, " ").trim();
629924
+ if (!clean5) return;
629925
+ process.stdout.write(` ${c3.dim("voice")} ${c3.italic(c3.dim(clean5))}
629899
629926
  `);
629900
629927
  }
629901
629928
  function renderUserInterrupt(text2) {
@@ -638751,8 +638778,7 @@ function buildRestoreHistoryAnchor(repoRoot) {
638751
638778
  const [latest] = listSessions(repoRoot);
638752
638779
  if (!latest?.id) return null;
638753
638780
  const lines = loadSessionHistory(repoRoot, latest.id) ?? [];
638754
- const restoredLines = sanitizeRestoredSessionLines(lines);
638755
- const meaningfulTail = restoredLines.map((line) => cleanSessionHistoryDisplayLine(line)).filter((line) => line && !isNoisySessionHistoryLine(line)).slice(-18).map((line) => `- ${normalizeSessionText(line, 220)}`);
638781
+ const recordedLineCount = lines.filter((line) => String(line ?? "").trim()).length;
638756
638782
  const path16 = join136(OMNIUS_DIR, SESSIONS_DIR, `${latest.id}.jsonl`);
638757
638783
  const statePath = join136(OMNIUS_DIR, SESSIONS_DIR, `${latest.id}${TUI_STATE_SUFFIX}`);
638758
638784
  const hasTuiState = existsSync125(join136(repoRoot, statePath));
@@ -638760,12 +638786,10 @@ function buildRestoreHistoryAnchor(repoRoot) {
638760
638786
  latest_visual_session_id=${latest.id}
638761
638787
  ` + (hasTuiState ? `full_tui_state_path=${statePath}
638762
638788
  ` : "") + `full_transcript_path=${path16}
638763
- recorded_lines=${restoredLines.length}
638764
- ` + (meaningfulTail.length > 0 ? `Recent visible transcript tail:
638765
- ${meaningfulTail.join("\n")}
638766
- ` : "") + `Recall contract: the full transcript artifact above is restored into the TUI scrollback and is the authoritative previous interface state. Read it only when exact prior UI/tool output is needed; otherwise use this restored state to avoid rediscovery.
638789
+ available_transcript_lines=${recordedLineCount}
638790
+ Recall contract: do not replay or ingest the transcript wholesale. Use the structured session recap and todo state first. Read the transcript artifact only when exact prior UI/tool output is needed.
638767
638791
  </restored-interface-history>`;
638768
- return { sessionId: latest.id, path: path16, lineCount: restoredLines.length, block };
638792
+ return { sessionId: latest.id, path: path16, lineCount: recordedLineCount, block };
638769
638793
  }
638770
638794
  function appendRestoreBlocks(base3, blocks) {
638771
638795
  return [base3, ...blocks].filter((part) => part && part.trim()).join("\n\n");
@@ -638917,14 +638941,20 @@ function updateSessionEntry(repoRoot, sessionId, patch) {
638917
638941
  }
638918
638942
  }
638919
638943
  function cleanSessionHistoryDisplayLine(line) {
638920
- return String(line || "").replace(/\x1B\[[0-9;]*[a-zA-Z]/g, "").replace(/^[>โฏโ–นยทโˆ™โ€ข*+\-\s]+/, "").replace(/^\[.*?\]\s*/, "").replace(/^(?:User|Assistant|You|Open Agent|Omnius)\s*:\s*/i, "").replace(/\s+/g, " ").trim();
638944
+ return String(line || "").replace(/\x1B\[[0-9;]*[a-zA-Z]/g, "").replace(/^\s*(?:[>โฏโ–นยทโˆ™โ€ข*+\-]\s*)+/, "").replace(/^\[.*?\]\s*/, "").replace(/^(?:User|Assistant|You|Open Agent|Omnius)\s*:\s*/i, "").replace(/\s+/g, " ").trim();
638921
638945
  }
638922
- function isNoisySessionHistoryLine(line) {
638923
- const clean5 = cleanSessionHistoryDisplayLine(line || "");
638924
- if (!clean5) return true;
638925
- const withoutEventPrefix = clean5.replace(/^(?:E|W|โš )\s+/, "");
638926
- const noise2 = /^(?:Previous session found|REST API:|Nexus P2P network connected|No context to restore|Starting fresh|Use \/endpoint|Knowledge graph:|Zettelkasten:|Episodes captured:|Current OMNIUS_HOST:|Loaded TUI session|General session$|Chat tui:sess|TUI session\b|Using (?:expanded )?context model|Using model|Context (?:auto-)?restored|Context restored|Recovered session|Last task:|Voice feedback enabled\b|Clone ref:|clone-[^\s]+\.wav$|Memory maintenance:|reclaimed\b.*\.?$|Task timeout reached during backend retry|Incomplete: task timed out\b|Task incomplete\b|Tokens:\s*[\d,~]+|\(manual save\)|continue$|\[VRAM|VRAM |model_info|KV |arch[ -]capped|i\s+(?:starting|loaded|using|context|rest|nexus|previous)\b|\bSHELL TRANSCRIPT\b|Invoking todo write|decompositionContract|Todos have been modified successfully|continuing with python|๐Ÿ”Š|SHELL)$/i;
638927
- return noise2.test(clean5) || noise2.test(withoutEventPrefix);
638946
+ function normalizeStoredSessionLine(line) {
638947
+ return String(line ?? "").replace(/\x1B\[[0-9;]*[a-zA-Z]/g, "").replace(/\s+$/g, "");
638948
+ }
638949
+ function isAuthoredSessionLine(line) {
638950
+ return AUTHORED_SESSION_LINE.test(line.trimStart());
638951
+ }
638952
+ function isAuthoredSessionContinuation(line, previousWasAuthored) {
638953
+ if (!previousWasAuthored) return false;
638954
+ if (!/^\s{2,}\S/.test(line)) return false;
638955
+ const trimmed = line.trimStart();
638956
+ if (!trimmed || trimmed.startsWith("๐Ÿ”Š")) return false;
638957
+ return !VISUAL_CHROME_LINE.test(trimmed);
638928
638958
  }
638929
638959
  function sanitizeRestoredSessionLines(lines, options2 = {}) {
638930
638960
  const maxLines = Math.max(
@@ -638933,16 +638963,24 @@ function sanitizeRestoredSessionLines(lines, options2 = {}) {
638933
638963
  );
638934
638964
  const out = [];
638935
638965
  let previousBlank = false;
638966
+ let previousWasAuthored = false;
638936
638967
  for (const raw of lines) {
638937
- const line = String(raw ?? "").replace(/\x1B\[[0-9;]*[a-zA-Z]/g, "").replace(/\s+$/g, "");
638938
- if (isNoisySessionHistoryLine(line)) continue;
638968
+ const line = normalizeStoredSessionLine(String(raw ?? ""));
638939
638969
  if (!line.trim()) {
638970
+ previousWasAuthored = false;
638940
638971
  if (previousBlank) continue;
638941
638972
  previousBlank = true;
638942
638973
  out.push("");
638943
638974
  continue;
638944
638975
  }
638976
+ const keep = isAuthoredSessionLine(line) || isAuthoredSessionContinuation(line, previousWasAuthored);
638977
+ if (!keep) {
638978
+ previousWasAuthored = false;
638979
+ previousBlank = false;
638980
+ continue;
638981
+ }
638945
638982
  previousBlank = false;
638983
+ previousWasAuthored = true;
638946
638984
  out.push(line);
638947
638985
  }
638948
638986
  while (out[0] === "") out.shift();
@@ -638950,20 +638988,22 @@ function sanitizeRestoredSessionLines(lines, options2 = {}) {
638950
638988
  return out.slice(-maxLines);
638951
638989
  }
638952
638990
  function firstMeaningfulSessionHistoryLine(lines) {
638953
- for (const line of lines) {
638991
+ for (const line of sanitizeRestoredSessionLines(lines, { maxLines: 12 })) {
638954
638992
  const clean5 = cleanSessionHistoryDisplayLine(line);
638955
- if (!isNoisySessionHistoryLine(clean5)) return clean5;
638993
+ if (clean5) return clean5;
638956
638994
  }
638957
638995
  return "";
638958
638996
  }
638959
638997
  function sanitizeSessionHistoryEntry(repoRoot, entry) {
638960
- if (!isNoisySessionHistoryLine(entry.name) && !isNoisySessionHistoryLine(entry.description)) return entry;
638998
+ const nameLooksAuthored = isAuthoredSessionLine(entry.name) || cleanSessionHistoryDisplayLine(entry.name).length > 0;
638999
+ const descriptionLooksAuthored = isAuthoredSessionLine(entry.description) || cleanSessionHistoryDisplayLine(entry.description).length > 0;
639000
+ if (nameLooksAuthored && descriptionLooksAuthored) return entry;
638961
639001
  const lines = loadSessionHistory(repoRoot, entry.id) || [];
638962
639002
  const fallback = firstMeaningfulSessionHistoryLine(lines);
638963
639003
  return {
638964
639004
  ...entry,
638965
- name: isNoisySessionHistoryLine(entry.name) ? fallback ? fallback.length > 40 ? fallback.slice(0, 37) + "..." : fallback : entry.name : entry.name,
638966
- description: isNoisySessionHistoryLine(entry.description) ? fallback || entry.description : entry.description
639005
+ name: !nameLooksAuthored ? fallback ? fallback.length > 40 ? fallback.slice(0, 37) + "..." : fallback : entry.name : entry.name,
639006
+ description: !descriptionLooksAuthored ? fallback || entry.description : entry.description
638967
639007
  };
638968
639008
  }
638969
639009
  function saveSessionHistory(repoRoot, sessionId, contentLines, meta) {
@@ -639270,7 +639310,7 @@ function deleteUsageRecord(kind, value2, repoRoot) {
639270
639310
  remove(join136(repoRoot, OMNIUS_DIR, USAGE_HISTORY_FILE));
639271
639311
  }
639272
639312
  }
639273
- var OMNIUS_DIR, LEGACY_DIRS, SUBDIRS, gitignoreWatchers, gitignoreRetryTimers, CONTEXT_FILES, PENDING_TASK_FILE, HANDOFF_FILE, CONTEXT_SAVE_FILE, CONTEXT_LEDGER_FILE, MAX_CONTEXT_ENTRIES, MAX_SESSION_DIARY_ENTRIES, MAX_SESSION_DIARY_DETAILED_ENTRIES, MAX_CONTEXT_LEDGER_LINES, MAX_CONTEXT_LEDGER_BYTES, SAME_TASK_REPLACE_WINDOW_MS, LOCK_TIMEOUT_MS, LOCK_RETRY_MS, LOCK_RETRY_MAX, DEFAULT_RESTORED_SESSION_HISTORY_MAX_LINES, DEICTIC_CONTINUATION_TERMS, SESSIONS_DIR, SESSIONS_INDEX, TUI_STATE_SUFFIX, SKIP_DIRS3, HOME_SKIP_DIRS, USAGE_HISTORY_FILE, MAX_HISTORY_RECORDS;
639313
+ var OMNIUS_DIR, LEGACY_DIRS, SUBDIRS, gitignoreWatchers, gitignoreRetryTimers, CONTEXT_FILES, PENDING_TASK_FILE, HANDOFF_FILE, CONTEXT_SAVE_FILE, CONTEXT_LEDGER_FILE, MAX_CONTEXT_ENTRIES, MAX_SESSION_DIARY_ENTRIES, MAX_SESSION_DIARY_DETAILED_ENTRIES, MAX_CONTEXT_LEDGER_LINES, MAX_CONTEXT_LEDGER_BYTES, SAME_TASK_REPLACE_WINDOW_MS, LOCK_TIMEOUT_MS, LOCK_RETRY_MS, LOCK_RETRY_MAX, DEFAULT_RESTORED_SESSION_HISTORY_MAX_LINES, DEICTIC_CONTINUATION_TERMS, SESSIONS_DIR, SESSIONS_INDEX, TUI_STATE_SUFFIX, AUTHORED_SESSION_LINE, VISUAL_CHROME_LINE, SKIP_DIRS3, HOME_SKIP_DIRS, USAGE_HISTORY_FILE, MAX_HISTORY_RECORDS;
639274
639314
  var init_omnius_directory = __esm({
639275
639315
  "packages/cli/src/tui/omnius-directory.ts"() {
639276
639316
  init_dist5();
@@ -639335,6 +639375,8 @@ var init_omnius_directory = __esm({
639335
639375
  SESSIONS_DIR = "sessions";
639336
639376
  SESSIONS_INDEX = "sessions-index.json";
639337
639377
  TUI_STATE_SUFFIX = ".tui-state.json";
639378
+ AUTHORED_SESSION_LINE = /^(?:User|Assistant|You|Open Agent|Omnius)\s*:/i;
639379
+ VISUAL_CHROME_LINE = /^[โ•ญโ•ฎโ•ฐโ•ฏโ”‚โ”œโ”คโ”ฌโ”ดโ”Œโ”โ””โ”˜โ”€โ”โ•\[\]โ–Œโ–โ–ˆโ–’โ–‘โ—โ—‹โ—โ—–โ–ถ!ยทโˆ™โ€ข*+\-]|^(?:E|W|โš )\s/;
639338
639380
  SKIP_DIRS3 = /* @__PURE__ */ new Set([
639339
639381
  "node_modules",
639340
639382
  ".git",
@@ -671298,9 +671340,9 @@ sleep 1
671298
671340
  const snapshot = typeof prompt === "string" ? null : prompt;
671299
671341
  ctx3.setRestoredContext?.(prompt);
671300
671342
  renderInfo(
671301
- `Context restored from ${info?.entries ?? 0} saved session(s)${snapshot?.historyLineCount ? `; replayed ${snapshot.historyLineCount} transcript line(s)` : ""}${snapshot?.todoCount ? `; restored ${snapshot.todoCount} todo(s)` : ""}. Will be injected into your next task.`
671343
+ `Context restored from ${info?.entries ?? 0} saved session(s)${snapshot?.historyLineCount ? `; transcript artifact available (${snapshot.historyLineCount} line(s))` : ""}${snapshot?.todoCount ? `; restored ${snapshot.todoCount} todo(s)` : ""}. Will be injected into your next task.`
671302
671344
  );
671303
- if (!snapshot?.historyLineCount) renderContextHistory(ctx3, "Session History");
671345
+ renderContextHistory(ctx3, "Session History");
671304
671346
  } else {
671305
671347
  renderWarning(
671306
671348
  "No saved session context found. Complete a task first, or use /context save."
@@ -752209,13 +752251,15 @@ ${result.summary}`
752209
752251
  const taskSummary = hasTaskToResume ? getLastTaskSummary2(repoRoot) : null;
752210
752252
  const resumeMsg = taskSummary ? `v${version5} โ€” picking up: ${taskSummary}` : `Updated to v${version5}.`;
752211
752253
  const restoreSnapshot = buildContextRestoreSnapshot(repoRoot);
752212
- const replayedVisual = restoreSnapshot ? applyRestoreSnapshot(restoreSnapshot, { replayVisual: true }) : false;
752254
+ if (restoreSnapshot) {
752255
+ applyRestoreSnapshot(restoreSnapshot, { replayVisual: false });
752256
+ }
752213
752257
  writeContent(() => {
752214
752258
  renderInfo(resumeMsg);
752215
752259
  if (restoreSnapshot) {
752216
752260
  const info = loadSessionContext(repoRoot);
752217
752261
  renderInfo(
752218
- `Context restored from ${info?.entries.length ?? 0} session(s)${replayedVisual ? `; replayed ${restoreSnapshot.historyLineCount ?? 0} transcript line(s).` : "."}`
752262
+ `Context restored from ${info?.entries.length ?? 0} session(s); transcript artifact available (${restoreSnapshot.historyLineCount ?? 0} line(s)).`
752219
752263
  );
752220
752264
  }
752221
752265
  });
@@ -756309,7 +756353,7 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
756309
756353
  if (typeof ctx3 === "string") {
756310
756354
  restoredSessionContext = ctx3;
756311
756355
  } else {
756312
- applyRestoreSnapshot(ctx3, { replayVisual: true });
756356
+ applyRestoreSnapshot(ctx3, { replayVisual: false });
756313
756357
  }
756314
756358
  },
756315
756359
  contextShow() {
@@ -756455,30 +756499,26 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
756455
756499
  if (doRestore) {
756456
756500
  const snapshot = buildContextRestoreSnapshot(repoRoot);
756457
756501
  if (snapshot) {
756458
- const replayedVisual = applyRestoreSnapshot(snapshot, {
756459
- replayVisual: true
756460
- });
756502
+ applyRestoreSnapshot(snapshot, { replayVisual: false });
756461
756503
  const info = loadSessionContext(repoRoot);
756462
756504
  writeContent(() => {
756463
756505
  renderInfo(
756464
- auto ? `Context auto-restored from ${info?.entries.length ?? 0} session(s)${replayedVisual ? `; replayed ${snapshot.historyLineCount ?? 0} transcript line(s)` : ""}${snapshot.todoCount ? `; restored ${snapshot.todoCount} todo(s)` : ""}.` : `Context restored from ${info?.entries.length ?? 0} session(s)${replayedVisual ? `; replayed ${snapshot.historyLineCount ?? 0} transcript line(s)` : ""}${snapshot.todoCount ? `; restored ${snapshot.todoCount} todo(s)` : ""}.`
756506
+ auto ? `Context auto-restored from ${info?.entries.length ?? 0} session(s); transcript artifact available (${snapshot.historyLineCount ?? 0} line(s))${snapshot.todoCount ? `; restored ${snapshot.todoCount} todo(s)` : ""}.` : `Context restored from ${info?.entries.length ?? 0} session(s); transcript artifact available (${snapshot.historyLineCount ?? 0} line(s))${snapshot.todoCount ? `; restored ${snapshot.todoCount} todo(s)` : ""}.`
756465
756507
  );
756466
- if (!replayedVisual) {
756467
- if (statusBar.isActive && !isNeovimActive() && !isOverlayActive()) {
756468
- renderSessionHistoryBox(
756469
- {
756470
- registerDynamicBlock: (id2, render2) => statusBar.registerDynamicBlock(id2, render2),
756471
- appendDynamicBlock: (id2) => statusBar.appendDynamicBlock(id2)
756472
- },
756473
- sessionContextToHistoryBoxData(info, "Session History")
756474
- );
756475
- } else {
756476
- const historyDisplay = formatSessionHistoryDisplay(info);
756477
- process.stdout.write(
756478
- historyDisplay.endsWith("\n") ? historyDisplay : `${historyDisplay}
756508
+ if (statusBar.isActive && !isNeovimActive() && !isOverlayActive()) {
756509
+ renderSessionHistoryBox(
756510
+ {
756511
+ registerDynamicBlock: (id2, render2) => statusBar.registerDynamicBlock(id2, render2),
756512
+ appendDynamicBlock: (id2) => statusBar.appendDynamicBlock(id2)
756513
+ },
756514
+ sessionContextToHistoryBoxData(info, "Session History")
756515
+ );
756516
+ } else {
756517
+ const historyDisplay = formatSessionHistoryDisplay(info);
756518
+ process.stdout.write(
756519
+ historyDisplay.endsWith("\n") ? historyDisplay : `${historyDisplay}
756479
756520
  `
756480
- );
756481
- }
756521
+ );
756482
756522
  }
756483
756523
  });
756484
756524
  } else {
@@ -756541,7 +756581,7 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
756541
756581
  const restoreSnapshot = buildContextRestoreSnapshot(repoRoot);
756542
756582
  if (restoreSnapshot) {
756543
756583
  applyRestoreSnapshot(restoreSnapshot, {
756544
- replayVisual: true,
756584
+ replayVisual: false,
756545
756585
  injectNextTask: false
756546
756586
  });
756547
756587
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.531",
3
+ "version": "1.0.532",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.531",
9
+ "version": "1.0.532",
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.531",
3
+ "version": "1.0.532",
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",