omnius 1.0.447 → 1.0.448

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
@@ -272845,11 +272845,11 @@ var require_out = __commonJS({
272845
272845
  async.read(path12, getSettings(optionsOrSettingsOrCallback), callback);
272846
272846
  }
272847
272847
  exports.stat = stat9;
272848
- function statSync66(path12, optionsOrSettings) {
272848
+ function statSync67(path12, optionsOrSettings) {
272849
272849
  const settings = getSettings(optionsOrSettings);
272850
272850
  return sync.read(path12, settings);
272851
272851
  }
272852
- exports.statSync = statSync66;
272852
+ exports.statSync = statSync67;
272853
272853
  function getSettings(settingsOrOptions = {}) {
272854
272854
  if (settingsOrOptions instanceof settings_1.default) {
272855
272855
  return settingsOrOptions;
@@ -310276,7 +310276,7 @@ ${lanes.join("\n")}
310276
310276
  return process.memoryUsage().heapUsed;
310277
310277
  },
310278
310278
  getFileSize(path12) {
310279
- const stat9 = statSync66(path12);
310279
+ const stat9 = statSync67(path12);
310280
310280
  if (stat9 == null ? void 0 : stat9.isFile()) {
310281
310281
  return stat9.size;
310282
310282
  }
@@ -310320,7 +310320,7 @@ ${lanes.join("\n")}
310320
310320
  }
310321
310321
  };
310322
310322
  return nodeSystem;
310323
- function statSync66(path12) {
310323
+ function statSync67(path12) {
310324
310324
  try {
310325
310325
  return _fs.statSync(path12, statSyncOptions);
310326
310326
  } catch {
@@ -310379,7 +310379,7 @@ ${lanes.join("\n")}
310379
310379
  activeSession.post("Profiler.stop", (err, { profile }) => {
310380
310380
  var _a2;
310381
310381
  if (!err) {
310382
- if ((_a2 = statSync66(profilePath)) == null ? void 0 : _a2.isDirectory()) {
310382
+ if ((_a2 = statSync67(profilePath)) == null ? void 0 : _a2.isDirectory()) {
310383
310383
  profilePath = _path.join(profilePath, `${(/* @__PURE__ */ new Date()).toISOString().replace(/:/g, "-")}+P${process.pid}.cpuprofile`);
310384
310384
  }
310385
310385
  try {
@@ -310499,7 +310499,7 @@ ${lanes.join("\n")}
310499
310499
  let stat9;
310500
310500
  if (typeof dirent === "string" || dirent.isSymbolicLink()) {
310501
310501
  const name10 = combinePaths(path12, entry);
310502
- stat9 = statSync66(name10);
310502
+ stat9 = statSync67(name10);
310503
310503
  if (!stat9) {
310504
310504
  continue;
310505
310505
  }
@@ -310523,7 +310523,7 @@ ${lanes.join("\n")}
310523
310523
  return matchFiles(path12, extensions, excludes, includes, useCaseSensitiveFileNames2, process.cwd(), depth, getAccessibleFileSystemEntries, realpath);
310524
310524
  }
310525
310525
  function fileSystemEntryExists(path12, entryKind) {
310526
- const stat9 = statSync66(path12);
310526
+ const stat9 = statSync67(path12);
310527
310527
  if (!stat9) {
310528
310528
  return false;
310529
310529
  }
@@ -310565,7 +310565,7 @@ ${lanes.join("\n")}
310565
310565
  }
310566
310566
  function getModifiedTime3(path12) {
310567
310567
  var _a2;
310568
- return (_a2 = statSync66(path12)) == null ? void 0 : _a2.mtime;
310568
+ return (_a2 = statSync67(path12)) == null ? void 0 : _a2.mtime;
310569
310569
  }
310570
310570
  function setModifiedTime(path12, time) {
310571
310571
  try {
@@ -573005,6 +573005,7 @@ context_fabric: included=${included.length} dropped=${dropped.length} truncated=
573005
573005
  });
573006
573006
 
573007
573007
  // packages/orchestrator/dist/evidenceLedger.js
573008
+ import { statSync as statSync36 } from "node:fs";
573008
573009
  function buildExtract(content) {
573009
573010
  const lines = content.split("\n");
573010
573011
  if (lines.length <= SMALL_LINES && content.length <= SMALL_CHARS) {
@@ -573075,13 +573076,15 @@ var init_evidenceLedger = __esm({
573075
573076
  fidelity: keepNew ? built.fidelity : existing.fidelity,
573076
573077
  ranges: mergeRanges([...existing.ranges, range]),
573077
573078
  lastReadTurn: turn,
573078
- stale: false
573079
+ stale: false,
573080
+ mtimeMs: input.mtimeMs ?? existing.mtimeMs
573079
573081
  });
573080
573082
  return;
573081
573083
  }
573082
573084
  this.entries.set(path12, {
573083
573085
  path: path12,
573084
573086
  readVersion: fileVersion,
573087
+ mtimeMs: input.mtimeMs ?? 0,
573085
573088
  lastReadTurn: turn,
573086
573089
  ranges: [range],
573087
573090
  content: built.text,
@@ -573102,6 +573105,33 @@ var init_evidenceLedger = __esm({
573102
573105
  const e2 = this.entries.get(path12);
573103
573106
  return !!e2 && !e2.stale;
573104
573107
  }
573108
+ /**
573109
+ * Validate evidence freshness against the real filesystem via stat().
573110
+ * If the file's mtime has changed since we last read it (external mutation
573111
+ * like a manual chmod, device reconnect, or human edit), mark as stale.
573112
+ * Returns true if evidence was valid, false if became stale or stat failed.
573113
+ */
573114
+ validateFreshness(path12) {
573115
+ const e2 = this.entries.get(path12);
573116
+ if (!e2)
573117
+ return false;
573118
+ if (e2.stale)
573119
+ return false;
573120
+ if (e2.mtimeMs <= 0)
573121
+ return true;
573122
+ try {
573123
+ const st = statSync36(path12, { throwIfNoEntry: false });
573124
+ if (!st)
573125
+ return true;
573126
+ if (st.mtimeMs > e2.mtimeMs) {
573127
+ e2.stale = true;
573128
+ return false;
573129
+ }
573130
+ return true;
573131
+ } catch {
573132
+ return true;
573133
+ }
573134
+ }
573105
573135
  get(path12) {
573106
573136
  return this.entries.get(path12);
573107
573137
  }
@@ -573150,7 +573180,7 @@ var init_evidenceLedger = __esm({
573150
573180
  });
573151
573181
 
573152
573182
  // packages/orchestrator/dist/contextWindowDump.js
573153
- import { existsSync as existsSync100, mkdirSync as mkdirSync58, readdirSync as readdirSync32, readFileSync as readFileSync78, statSync as statSync36, unlinkSync as unlinkSync17, writeFileSync as writeFileSync48, appendFileSync as appendFileSync9 } from "node:fs";
573183
+ import { existsSync as existsSync100, mkdirSync as mkdirSync58, readdirSync as readdirSync32, readFileSync as readFileSync78, statSync as statSync37, unlinkSync as unlinkSync17, writeFileSync as writeFileSync48, appendFileSync as appendFileSync9 } from "node:fs";
573154
573184
  import { homedir as homedir35 } from "node:os";
573155
573185
  import { join as join111, resolve as resolve51 } from "node:path";
573156
573186
  import { createHash as createHash28 } from "node:crypto";
@@ -573394,7 +573424,7 @@ function pruneOldDumpFiles(dir) {
573394
573424
  try {
573395
573425
  const files = readdirSync32(dir).filter((file) => file.endsWith(".json") && file !== "latest.json").map((file) => {
573396
573426
  const path12 = join111(dir, file);
573397
- return { path: path12, mtimeMs: statSync36(path12).mtimeMs };
573427
+ return { path: path12, mtimeMs: statSync37(path12).mtimeMs };
573398
573428
  }).sort((a2, b) => b.mtimeMs - a2.mtimeMs);
573399
573429
  for (const file of files.slice(maxFiles))
573400
573430
  unlinkSync17(file.path);
@@ -573762,7 +573792,7 @@ var init_adversaryStream = __esm({
573762
573792
  });
573763
573793
 
573764
573794
  // packages/orchestrator/dist/debugArtifactLibrary.js
573765
- import { appendFileSync as appendFileSync10, existsSync as existsSync101, mkdirSync as mkdirSync59, readFileSync as readFileSync79, statSync as statSync37, writeFileSync as writeFileSync49 } from "node:fs";
573795
+ import { appendFileSync as appendFileSync10, existsSync as existsSync101, mkdirSync as mkdirSync59, readFileSync as readFileSync79, statSync as statSync38, writeFileSync as writeFileSync49 } from "node:fs";
573766
573796
  import { createHash as createHash29 } from "node:crypto";
573767
573797
  import { basename as basename23, join as join112, relative as relative10, resolve as resolve52 } from "node:path";
573768
573798
  function debugArtifactRoot(cwd4 = process.cwd(), stateDir) {
@@ -574354,7 +574384,7 @@ function readJson2(path12) {
574354
574384
  }
574355
574385
  function pathExists(path12) {
574356
574386
  try {
574357
- statSync37(path12);
574387
+ statSync38(path12);
574358
574388
  return true;
574359
574389
  } catch {
574360
574390
  return false;
@@ -574459,12 +574489,7 @@ function isEvidenceGatheringTool(toolName) {
574459
574489
  ].includes(toolName);
574460
574490
  }
574461
574491
  function isEditTool(toolName) {
574462
- return [
574463
- "file_write",
574464
- "file_edit",
574465
- "file_patch",
574466
- "batch_edit"
574467
- ].includes(toolName);
574492
+ return ["file_write", "file_edit", "file_patch", "batch_edit"].includes(toolName);
574468
574493
  }
574469
574494
  function isReportTool(toolName) {
574470
574495
  return toolName === "task_complete" || toolName === "ask_user";
@@ -574604,7 +574629,9 @@ function quickHash(input) {
574604
574629
  return hash.toString(16).padStart(8, "0");
574605
574630
  }
574606
574631
  function uniqueLimited(values) {
574607
- const uniqueValues = [...new Set(values.filter((value2) => value2.trim().length > 0))];
574632
+ const uniqueValues = [
574633
+ ...new Set(values.filter((value2) => value2.trim().length > 0))
574634
+ ];
574608
574635
  if (uniqueValues.length <= MAX_FORBIDDEN_FAMILIES)
574609
574636
  return uniqueValues;
574610
574637
  return uniqueValues.slice(-MAX_FORBIDDEN_FAMILIES);
@@ -574672,6 +574699,17 @@ var init_focusSupervisor = __esm({
574672
574699
  this.lastContext = input.context ?? this.lastContext;
574673
574700
  if (!this.enabled)
574674
574701
  return this.pass();
574702
+ if (input.context && this.lastContext && this.ignoredDirectiveStreak > 0) {
574703
+ const oldP = this.lastContext.pressureRatio ?? 0;
574704
+ const newP = input.context.pressureRatio ?? 0;
574705
+ const oldS = this.lastContext.signalToNoiseRatio;
574706
+ const newS = input.context.signalToNoiseRatio;
574707
+ const pressureShift = oldP > 0 ? Math.abs(newP - oldP) / oldP : 0;
574708
+ const snrShift = oldS !== null && oldS !== void 0 && oldS > 0 ? Math.abs((newS ?? 0) - oldS) / oldS : 0;
574709
+ if (pressureShift > 0.2 || snrShift > 0.2) {
574710
+ this.ignoredDirectiveStreak = 0;
574711
+ }
574712
+ }
574675
574713
  const family = actionFamily(input.toolName, input.args);
574676
574714
  const prior = this.directive;
574677
574715
  if (prior && violatesDirective(prior, input)) {
@@ -574694,6 +574732,21 @@ var init_focusSupervisor = __esm({
574694
574732
  prior.ignoredCount++;
574695
574733
  this.ignoredDirectiveStreak++;
574696
574734
  this.lastIgnoredDirectiveTurn = input.turn;
574735
+ if ((prior.requiredNextAction === "read_authoritative_target" || prior.requiredNextAction === "use_cached_evidence") && input.cachedResult && (input.duplicateHitCount ?? 0) >= Math.max(1, this.repeatGateMax - 1)) {
574736
+ const deadlockDirective = this.setDirective({
574737
+ turn: input.turn,
574738
+ state: "terminal_incomplete",
574739
+ reason: `read target is repeat-gated (${input.duplicateHitCount} hits); directive ${prior.id} cannot be satisfied without fresh reads; report blocked with evidence`,
574740
+ requiredNextAction: "report_incomplete",
574741
+ forbiddenActionFamilies: []
574742
+ });
574743
+ return this.block(deadlockDirective, [
574744
+ "[FOCUS SUPERVISOR: DEADLOCK]",
574745
+ `Directive ${prior.id} (${prior.requiredNextAction}) requires reading evidence that is repeat-gated (${input.duplicateHitCount} identical reads).`,
574746
+ "The model cannot satisfy this directive because the repeat gate blocks re-reads, and other actions are forbidden by the current directive.",
574747
+ "Report incomplete/blocked with the concrete evidence you have, and describe what additional access would break the deadlock."
574748
+ ].join("\n"), false);
574749
+ }
574697
574750
  if (strict && prior.ignoredCount >= 1) {
574698
574751
  const terminal = this.ignoredDirectiveStreak >= TERMINAL_INCOMPLETE_IGNORE_THRESHOLD;
574699
574752
  const ignoredManyTimes = this.ignoredDirectiveStreak >= 3;
@@ -574912,12 +574965,21 @@ var init_focusSupervisor = __esm({
574912
574965
  this.lastIgnoredDirectiveTurn = null;
574913
574966
  }
574914
574967
  pass() {
574915
- return { kind: "pass", state: this.state, ...this.directive ? { directive: this.directive } : {} };
574968
+ return {
574969
+ kind: "pass",
574970
+ state: this.state,
574971
+ ...this.directive ? { directive: this.directive } : {}
574972
+ };
574916
574973
  }
574917
574974
  inject(directive, message2) {
574918
574975
  this.lastDecision = "inject_guidance";
574919
574976
  this.lastReason = directive.reason;
574920
- return { kind: "inject_guidance", state: directive.state, directive, message: message2 };
574977
+ return {
574978
+ kind: "inject_guidance",
574979
+ state: directive.state,
574980
+ directive,
574981
+ message: message2
574982
+ };
574921
574983
  }
574922
574984
  block(directive, message2, success) {
574923
574985
  this.lastDecision = "block_tool_call";
@@ -575926,7 +575988,7 @@ __export(preflightSnapshot_exports, {
575926
575988
  formatPreflightStatus: () => formatPreflightStatus,
575927
575989
  freeDiskBytes: () => freeDiskBytes
575928
575990
  });
575929
- import { existsSync as existsSync102, readFileSync as readFileSync80, statSync as statSync38, statfsSync as statfsSync6 } from "node:fs";
575991
+ import { existsSync as existsSync102, readFileSync as readFileSync80, statSync as statSync39, statfsSync as statfsSync6 } from "node:fs";
575930
575992
  import { homedir as homedir36, platform as platform4, arch as arch2, totalmem as totalmem4, freemem as freemem3, hostname as hostname3 } from "node:os";
575931
575993
  import { join as join113 } from "node:path";
575932
575994
  import { createHash as createHash30 } from "node:crypto";
@@ -576102,7 +576164,7 @@ function sha2564(s2) {
576102
576164
  }
576103
576165
  function freeDiskBytes(path12 = "/tmp") {
576104
576166
  try {
576105
- const st = statSync38(path12);
576167
+ const st = statSync39(path12);
576106
576168
  if (!st.isDirectory())
576107
576169
  return -1;
576108
576170
  const fs11 = statfsSync6(path12);
@@ -576146,7 +576208,7 @@ __export(postActionVerifier_exports, {
576146
576208
  classifyShellIntent: () => classifyShellIntent,
576147
576209
  verifyShellOutcome: () => verifyShellOutcome
576148
576210
  });
576149
- import { existsSync as existsSync103, readFileSync as readFileSync81, readdirSync as readdirSync33, statSync as statSync39 } from "node:fs";
576211
+ import { existsSync as existsSync103, readFileSync as readFileSync81, readdirSync as readdirSync33, statSync as statSync40 } from "node:fs";
576150
576212
  import { join as join114 } from "node:path";
576151
576213
  function classifyShellIntent(cmd) {
576152
576214
  const stripped = cmd.replace(/^cd\s+\S+\s*&&\s*/, "").trim();
@@ -576359,7 +576421,7 @@ function listNpmInstalled(installRootAbs) {
576359
576421
  continue;
576360
576422
  const sub2 = join114(installRootAbs, name10);
576361
576423
  try {
576362
- if (!statSync39(sub2).isDirectory())
576424
+ if (!statSync40(sub2).isDirectory())
576363
576425
  continue;
576364
576426
  } catch {
576365
576427
  continue;
@@ -576431,7 +576493,7 @@ function mostRecentFileMtimeMs(root, maxDepth) {
576431
576493
  const full = join114(dir, name10);
576432
576494
  let st;
576433
576495
  try {
576434
- st = statSync39(full);
576496
+ st = statSync40(full);
576435
576497
  } catch {
576436
576498
  continue;
576437
576499
  }
@@ -577288,19 +577350,62 @@ function detectTaskMode(task) {
577288
577350
  }
577289
577351
  return false;
577290
577352
  }
577291
- function slimSystemPromptForTaskMode(prompt) {
577292
- const SECTION_HEADERS_TO_REMOVE = [
577293
- /^##\s*Interactive\s*\/\s*Long-?Running Sessions\s*$/im,
577294
- /^##\s*Document Generation Strategy\s*$/im,
577295
- /^##\s*Calculations\s*[—-]\s*Always Execute, Never Guess\s*$/im,
577296
- /^##\s*Knowledge Gaps\s*[—-]\s*Search, Don't Hallucinate\s*$/im,
577297
- /^##\s*Self-Awareness( & Introspection)?\s*$/im,
577298
- /^##\s*Debugging\s*[—-]\s*Observe Before Reasoning\s*$/im
577353
+ function slimSystemPromptForTaskMode(prompt, task) {
577354
+ const taskLower = (task ?? "").toLowerCase();
577355
+ const taskMentions = (...keywords2) => keywords2.some((k) => taskLower.includes(k));
577356
+ const SECTION_RULES = [
577357
+ {
577358
+ header: /^##\s*Interactive\s*\/\s*Long-?Running Sessions\s*$/im,
577359
+ keywords: []
577360
+ },
577361
+ { header: /^##\s*Document Generation Strategy\s*$/im, keywords: [] },
577362
+ {
577363
+ header: /^##\s*Calculations\s*[—-]\s*Always Execute, Never Guess\s*$/im,
577364
+ keywords: []
577365
+ },
577366
+ {
577367
+ header: /^##\s*Knowledge Gaps\s*[—-]\s*Search, Don't Hallucinate\s*$/im,
577368
+ keywords: []
577369
+ },
577370
+ { header: /^##\s*Self-Awareness( & Introspection)?\s*$/im, keywords: [] },
577371
+ {
577372
+ header: /^##\s*Debugging\s*[—-]\s*Observe Before Reasoning\s*$/im,
577373
+ keywords: []
577374
+ },
577375
+ // Feature-heavy sections — stripped unless task is relevant
577376
+ {
577377
+ header: /^##\s*Nexus P2P Networking\b.*$/im,
577378
+ keywords: ["nexus", "p2p", "peer", "wallet", "payment", "invoke", "mesh"]
577379
+ },
577380
+ {
577381
+ header: /^##\s*Temporal Agency\b.*$/im,
577382
+ keywords: ["cron", "schedule", "reminder", "agenda", "temporal"]
577383
+ },
577384
+ { header: /^##\s*Skills \(AIWG\)\s*$/im, keywords: ["skill", "aiwg"] },
577385
+ { header: /^##\s*Slash Commands\b.*$/im, keywords: ["slash", "command"] },
577386
+ {
577387
+ header: /^##\s*Priority Ingress\b.*$/im,
577388
+ keywords: ["priority", "delegate", "ingress", "classify"]
577389
+ },
577390
+ {
577391
+ header: /^##\s*Custom Tools\b.*$/im,
577392
+ keywords: ["create_tool", "custom tool", "workflow", "reusable"]
577393
+ },
577394
+ {
577395
+ header: /^##\s*RLM Context Operating System\b.*$/im,
577396
+ keywords: ["rlm", "repl", "recursive", "llm_query"]
577397
+ },
577398
+ {
577399
+ header: /^##\s*Desktop Automation\s*&?\s*Vision\b.*$/im,
577400
+ keywords: ["desktop", "click", "screenshot", "xdotool", "browser", "ui"]
577401
+ }
577299
577402
  ];
577300
577403
  const CHAT_MODE_BLOCK = /^\*\*CHAT MODE\*\*[\s\S]*?(?=\*\*TASK MODE\*\*)/im;
577301
577404
  let out = prompt;
577302
- for (const re of SECTION_HEADERS_TO_REMOVE) {
577303
- out = out.replace(new RegExp(re.source + "[\\s\\S]*?(?=^##\\s|\\Z)", "im"), "");
577405
+ for (const rule of SECTION_RULES) {
577406
+ if (rule.keywords.length > 0 && taskMentions(...rule.keywords))
577407
+ continue;
577408
+ out = out.replace(new RegExp(rule.header.source + "[\\s\\S]*?(?=^##\\s|\\Z)", "im"), "");
577304
577409
  }
577305
577410
  out = out.replace(CHAT_MODE_BLOCK, "");
577306
577411
  out = out.replace(/^\*\*TASK MODE\*\*[^\n]*\n/im, "");
@@ -578403,7 +578508,12 @@ ${parts.join("\n")}
578403
578508
  _workboardHasEditEvidence(card) {
578404
578509
  if (!card)
578405
578510
  return false;
578406
- const editTools = /* @__PURE__ */ new Set(["file_write", "file_edit", "batch_edit", "file_patch"]);
578511
+ const editTools = /* @__PURE__ */ new Set([
578512
+ "file_write",
578513
+ "file_edit",
578514
+ "batch_edit",
578515
+ "file_patch"
578516
+ ]);
578407
578517
  return card.evidence.some((e2) => {
578408
578518
  if (typeof e2.tool === "string" && editTools.has(e2.tool))
578409
578519
  return true;
@@ -579035,7 +579145,10 @@ ${parts.join("\n")}
579035
579145
  const selected = /* @__PURE__ */ new Map();
579036
579146
  let selectedBy = "none";
579037
579147
  try {
579038
- const embeddings = await generateEmbeddingBatch([taskGoal, ...candidates.map((pattern) => this._failurePatternText(pattern))], { baseUrl: this._embeddingBaseUrl(), timeoutMs: 12e3 });
579148
+ const embeddings = await generateEmbeddingBatch([
579149
+ taskGoal,
579150
+ ...candidates.map((pattern) => this._failurePatternText(pattern))
579151
+ ], { baseUrl: this._embeddingBaseUrl(), timeoutMs: 12e3 });
579039
579152
  const query = embeddings[0]?.vector;
579040
579153
  const minScore = Number.parseFloat(process.env["OMNIUS_FAILURE_PATTERN_SIM_MIN"] ?? "0.58");
579041
579154
  if (query) {
@@ -579242,7 +579355,7 @@ ${parts.join("\n")}
579242
579355
  const pressureCue = pressureCheck(task);
579243
579356
  const rawPrompt = getSystemPromptForTier(this.options.modelTier);
579244
579357
  const taskModeOn = detectTaskMode(task);
579245
- const slimmedPrompt = taskModeOn ? slimSystemPromptForTaskMode(rawPrompt) : rawPrompt;
579358
+ const slimmedPrompt = taskModeOn ? slimSystemPromptForTaskMode(rawPrompt, task) : rawPrompt;
579246
579359
  const basePrompt = slimmedPrompt + pressureCue;
579247
579360
  if (taskModeOn) {
579248
579361
  this.emit({
@@ -582193,7 +582306,9 @@ ${contentPreview}
582193
582306
  return true;
582194
582307
  if (/\bperl\s+-[A-Za-z]*i[A-Za-z]*\b/.test(cmd))
582195
582308
  return true;
582196
- if (/\b(?:cp|mv|rm|mkdir|rmdir|touch|truncate|ln|install)\b/i.test(cmd))
582309
+ if (/\b(?:cp|mv|rm|mkdir|rmdir|touch|truncate|ln|install|chmod|chown|chgrp|setfacl)\b/i.test(cmd))
582310
+ return true;
582311
+ if (/\b(?:udevadm|mount|umount|modprobe|insmod)\b/i.test(cmd))
582197
582312
  return true;
582198
582313
  if (/\b(?:python3?|node|ruby|deno|bun)\b[\s\S]{0,240}\b(?:writeFile|writeFileSync|openSync|mkdirSync|renameSync|unlinkSync|rmSync)\b/i.test(cmd))
582199
582314
  return true;
@@ -582614,7 +582729,8 @@ ${sections.join("\n")}` : sections.join("\n");
582614
582729
  try {
582615
582730
  const memMod = await Promise.resolve().then(() => (init_dist(), dist_exports));
582616
582731
  if (typeof memMod.contextItemsFromMessages === "function") {
582617
- helperItems = this._normalizeExternalContextItems(await memMod.contextItemsFromMessages(input.messages.slice(-12)));
582732
+ const msgsForCtx = input.messages.filter((m2) => m2.role !== "system");
582733
+ helperItems = this._normalizeExternalContextItems(await memMod.contextItemsFromMessages(msgsForCtx.slice(-12)));
582618
582734
  }
582619
582735
  } catch {
582620
582736
  helperItems = [];
@@ -582872,7 +582988,7 @@ ${chunk.content}`, {
582872
582988
  this._contextLedger.prune(turn);
582873
582989
  const goalBlock = [
582874
582990
  this._renderRuntimeRootBlock(),
582875
- this._taskState.goal ? `Active task: ${this._taskState.goal}` : null
582991
+ this._taskState.goal ? `Active task: (see user message above — the goal block defers to the user message as the authoritative source)` : null
582876
582992
  ].filter(Boolean).join("\n\n");
582877
582993
  const filesystemBlock = this._renderFilesystemStateBlock(turn);
582878
582994
  const todoBlock = this._renderTodoStateBlock(turn);
@@ -587830,6 +587946,24 @@ Read the current file if needed, make a different concrete edit, or move to veri
587830
587946
  const _repeatGateMax = this._resolveRepeatGateMax();
587831
587947
  const isFailedShellRepeat = tc.name === "shell" && typeof _existingFp?.result === "string" && _existingFp.result.includes("status: failure");
587832
587948
  const repeatGateEligible = isReadLike || tc.name === "memory_write" || isFailedShellRepeat;
587949
+ if (isReadLike && this._evidenceLedger) {
587950
+ const readArgs = tc.arguments;
587951
+ const readPath2 = String(readArgs?.["path"] ?? readArgs?.["file"] ?? "");
587952
+ if (readPath2) {
587953
+ const wasFresh = this._evidenceLedger.validateFreshness(readPath2);
587954
+ if (!wasFresh) {
587955
+ recentToolResults.delete(toolFingerprint);
587956
+ dedupHitCount.delete(toolFingerprint);
587957
+ this._recentFailures = (this._recentFailures ?? []).filter((f2) => f2.fingerprint !== toolFingerprint);
587958
+ repeatShortCircuit = null;
587959
+ this.emit({
587960
+ type: "status",
587961
+ content: `[EXTERNAL MUTATION] ${readPath2} mtime changed since last read — cache invalidated, fresh read allowed`,
587962
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
587963
+ });
587964
+ }
587965
+ }
587966
+ }
587833
587967
  if (repeatGateEligible && _existingFp !== void 0 && _repeatGateMax > 0) {
587834
587968
  if (criticDecision.hitNumber >= _repeatGateMax) {
587835
587969
  if (isReadLike) {
@@ -588235,6 +588369,7 @@ Respond with EXACTLY this structure before your next tool call:
588235
588369
  content: result.output,
588236
588370
  range: { start: start3, end },
588237
588371
  fileVersion: this._worldFacts.files.get(p2)?.writeCount ?? 0,
588372
+ mtimeMs: Date.now(),
588238
588373
  turn
588239
588374
  });
588240
588375
  }
@@ -596973,7 +597108,7 @@ var init_constraint_learner = __esm({
596973
597108
  });
596974
597109
 
596975
597110
  // packages/orchestrator/dist/nexusBackend.js
596976
- import { existsSync as existsSync104, statSync as statSync40, openSync, readSync, closeSync, unlinkSync as unlinkSync18, writeFileSync as writeFileSync50 } from "node:fs";
597111
+ import { existsSync as existsSync104, statSync as statSync41, openSync, readSync, closeSync, unlinkSync as unlinkSync18, writeFileSync as writeFileSync50 } from "node:fs";
596977
597112
  import { watch as fsWatch } from "node:fs";
596978
597113
  import { join as join115 } from "node:path";
596979
597114
  import { tmpdir as tmpdir21 } from "node:os";
@@ -597334,7 +597469,7 @@ ${suffix}` } : m2);
597334
597469
  finish();
597335
597470
  }, 50);
597336
597471
  });
597337
- const stat9 = statSync40(streamFile, { throwIfNoEntry: false });
597472
+ const stat9 = statSync41(streamFile, { throwIfNoEntry: false });
597338
597473
  if (!stat9 || stat9.size <= position)
597339
597474
  continue;
597340
597475
  const fd = openSync(streamFile, "r");
@@ -602237,7 +602372,7 @@ var init_missionSystem = __esm({
602237
602372
  });
602238
602373
 
602239
602374
  // packages/orchestrator/dist/context-references.js
602240
- import { readFileSync as readFileSync88, readdirSync as readdirSync35, statSync as statSync41 } from "node:fs";
602375
+ import { readFileSync as readFileSync88, readdirSync as readdirSync35, statSync as statSync42 } from "node:fs";
602241
602376
  import { homedir as homedir38 } from "node:os";
602242
602377
  import { join as join123, resolve as resolve53, relative as relative11, sep as sep3, extname as extname13 } from "node:path";
602243
602378
  function estimateTokens6(text2) {
@@ -602384,7 +602519,7 @@ function buildFolderListing(dirPath, cwd4, limit = 200) {
602384
602519
  continue;
602385
602520
  const full = join123(current, entry);
602386
602521
  try {
602387
- if (statSync41(full).isDirectory()) {
602522
+ if (statSync42(full).isDirectory()) {
602388
602523
  dirs.push(entry);
602389
602524
  } else {
602390
602525
  files.push(entry);
@@ -602408,7 +602543,7 @@ function buildFolderListing(dirPath, cwd4, limit = 200) {
602408
602543
  const full = join123(current, f2);
602409
602544
  let meta = "?";
602410
602545
  try {
602411
- const st = statSync41(full);
602546
+ const st = statSync42(full);
602412
602547
  if (st.isFile()) {
602413
602548
  const size = st.size;
602414
602549
  if (isBinaryFile(full)) {
@@ -602447,7 +602582,7 @@ function expandFileReference(ref, cwd4, allowedRoot) {
602447
602582
  } catch (err) {
602448
602583
  return [`${ref.raw}: ${err.message}`, null];
602449
602584
  }
602450
- if (!statSync41(filePath, { throwIfNoEntry: false })?.isFile()) {
602585
+ if (!statSync42(filePath, { throwIfNoEntry: false })?.isFile()) {
602451
602586
  return [`${ref.raw}: file not found`, null];
602452
602587
  }
602453
602588
  if (isBinaryFile(filePath)) {
@@ -602480,7 +602615,7 @@ function expandFolderReference(ref, cwd4, allowedRoot) {
602480
602615
  } catch (err) {
602481
602616
  return [`${ref.raw}: ${err.message}`, null];
602482
602617
  }
602483
- if (!statSync41(dirPath, { throwIfNoEntry: false })?.isDirectory()) {
602618
+ if (!statSync42(dirPath, { throwIfNoEntry: false })?.isDirectory()) {
602484
602619
  return [`${ref.raw}: folder not found`, null];
602485
602620
  }
602486
602621
  const listing = buildFolderListing(dirPath, cwd4);
@@ -603607,7 +603742,7 @@ __export(memory_maintenance_exports, {
603607
603742
  startIdleMemoryMaintenance: () => startIdleMemoryMaintenance
603608
603743
  });
603609
603744
  import { spawn as spawn27 } from "node:child_process";
603610
- import { createWriteStream, existsSync as existsSync109, mkdirSync as mkdirSync66, readFileSync as readFileSync89, statSync as statSync42, writeFileSync as writeFileSync56 } from "node:fs";
603745
+ import { createWriteStream, existsSync as existsSync109, mkdirSync as mkdirSync66, readFileSync as readFileSync89, statSync as statSync43, writeFileSync as writeFileSync56 } from "node:fs";
603611
603746
  import { fileURLToPath as fileURLToPath15 } from "node:url";
603612
603747
  import { join as join124 } from "node:path";
603613
603748
  function startIdleMemoryMaintenance(options2) {
@@ -603840,7 +603975,7 @@ function writeLastRunAt(repoRoot, value2) {
603840
603975
  function readLatestSummary(repoRoot) {
603841
603976
  const ledgerPath = join124(repoRoot, ".omnius", "memory-maintenance", "runs.jsonl");
603842
603977
  try {
603843
- if (!existsSync109(ledgerPath) || statSync42(ledgerPath).size === 0) return null;
603978
+ if (!existsSync109(ledgerPath) || statSync43(ledgerPath).size === 0) return null;
603844
603979
  const lines = readFileSync89(ledgerPath, "utf8").split(/\r?\n/).filter(Boolean);
603845
603980
  const last2 = lines.at(-1);
603846
603981
  if (!last2) return null;
@@ -604118,7 +604253,7 @@ __export(image_ascii_preview_exports, {
604118
604253
  isLowInformationAsciiPreview: () => isLowInformationAsciiPreview
604119
604254
  });
604120
604255
  import { createRequire as createRequire5 } from "node:module";
604121
- import { existsSync as existsSync110, readFileSync as readFileSync90, statSync as statSync43 } from "node:fs";
604256
+ import { existsSync as existsSync110, readFileSync as readFileSync90, statSync as statSync44 } from "node:fs";
604122
604257
  import { resolve as resolve54 } from "node:path";
604123
604258
  function clamp7(n2, min, max) {
604124
604259
  if (!Number.isFinite(n2)) return min;
@@ -604398,7 +604533,7 @@ async function buildImageAsciiPreview(inputPath, options2 = {}) {
604398
604533
  const imagePath = resolve54(inputPath);
604399
604534
  if (!existsSync110(imagePath)) return null;
604400
604535
  try {
604401
- if (!statSync43(imagePath).isFile()) return null;
604536
+ if (!statSync44(imagePath).isFile()) return null;
604402
604537
  } catch {
604403
604538
  return null;
604404
604539
  }
@@ -606493,7 +606628,7 @@ transcribe-cli error: ${transcribeCliError}` : "";
606493
606628
 
606494
606629
  // packages/cli/src/tui/camera-streamer.ts
606495
606630
  import { spawn as spawn30 } from "node:child_process";
606496
- import { existsSync as existsSync113, mkdirSync as mkdirSync70, statSync as statSync44, unlinkSync as unlinkSync20 } from "node:fs";
606631
+ import { existsSync as existsSync113, mkdirSync as mkdirSync70, statSync as statSync45, unlinkSync as unlinkSync20 } from "node:fs";
606497
606632
  import { join as join128 } from "node:path";
606498
606633
  function streamFps(configured) {
606499
606634
  const raw = configured ?? Number(process.env["OMNIUS_LIVE_STREAM_FPS"] ?? "");
@@ -606557,7 +606692,7 @@ var init_camera_streamer = __esm({
606557
606692
  const stream = this.streams.get(source);
606558
606693
  if (!stream || !existsSync113(stream.framePath)) return null;
606559
606694
  try {
606560
- const stats = statSync44(stream.framePath);
606695
+ const stats = statSync45(stream.framePath);
606561
606696
  if (!stats.isFile() || stats.size <= 0) return null;
606562
606697
  return { path: stream.framePath, mtimeMs: stats.mtimeMs };
606563
606698
  } catch {
@@ -606705,7 +606840,7 @@ var init_camera_streamer = __esm({
606705
606840
  });
606706
606841
 
606707
606842
  // packages/cli/src/tui/live-vlm.ts
606708
- import { existsSync as existsSync114, readFileSync as readFileSync93, statSync as statSync45 } from "node:fs";
606843
+ import { existsSync as existsSync114, readFileSync as readFileSync93, statSync as statSync46 } from "node:fs";
606709
606844
  var DEFAULT_LIVE_VLM_MODEL, MAX_IMAGE_BYTES, VLM_SYSTEM_PROMPT, LiveVlmEngine;
606710
606845
  var init_live_vlm = __esm({
606711
606846
  "packages/cli/src/tui/live-vlm.ts"() {
@@ -606827,7 +606962,7 @@ var init_live_vlm = __esm({
606827
606962
  if (Date.now() - this.lastFailureAt < 2e4) return null;
606828
606963
  if (!existsSync114(framePath)) return null;
606829
606964
  try {
606830
- if (statSync45(framePath).size > MAX_IMAGE_BYTES) return null;
606965
+ if (statSync46(framePath).size > MAX_IMAGE_BYTES) return null;
606831
606966
  } catch {
606832
606967
  return null;
606833
606968
  }
@@ -622041,7 +622176,7 @@ import { EventEmitter as EventEmitter8 } from "node:events";
622041
622176
  import { randomBytes as randomBytes22, timingSafeEqual } from "node:crypto";
622042
622177
  import { URL as URL2 } from "node:url";
622043
622178
  import { loadavg as loadavg2, cpus as cpus4, totalmem as totalmem7, freemem as freemem6 } from "node:os";
622044
- import { existsSync as existsSync119, readFileSync as readFileSync98, writeFileSync as writeFileSync61, unlinkSync as unlinkSync21, mkdirSync as mkdirSync73, readdirSync as readdirSync39, statSync as statSync46, statfsSync as statfsSync7 } from "node:fs";
622179
+ import { existsSync as existsSync119, readFileSync as readFileSync98, writeFileSync as writeFileSync61, unlinkSync as unlinkSync21, mkdirSync as mkdirSync73, readdirSync as readdirSync39, statSync as statSync47, statfsSync as statfsSync7 } from "node:fs";
622045
622180
  import { join as join133 } from "node:path";
622046
622181
  function cleanForwardHeaders(raw, targetHost) {
622047
622182
  const out = {};
@@ -623913,7 +624048,7 @@ ${this.formatConnectionInfo()}`);
623913
624048
  let recentActive = 0;
623914
624049
  for (const f2 of files.slice(-10)) {
623915
624050
  try {
623916
- const st = statSync46(join133(invocDir, f2));
624051
+ const st = statSync47(join133(invocDir, f2));
623917
624052
  if (now2 - st.mtimeMs < 1e4) recentActive++;
623918
624053
  } catch {
623919
624054
  }
@@ -625909,7 +626044,7 @@ __export(omnius_directory_exports, {
625909
626044
  writeIndexMeta: () => writeIndexMeta,
625910
626045
  writeTaskHandoff: () => writeTaskHandoff2
625911
626046
  });
625912
- import { appendFileSync as appendFileSync14, cpSync as cpSync2, existsSync as existsSync122, mkdirSync as mkdirSync76, readFileSync as readFileSync101, writeFileSync as writeFileSync64, readdirSync as readdirSync41, statSync as statSync47, unlinkSync as unlinkSync23, openSync as openSync2, closeSync as closeSync2, renameSync as renameSync11, watch as fsWatch2 } from "node:fs";
626047
+ import { appendFileSync as appendFileSync14, cpSync as cpSync2, existsSync as existsSync122, mkdirSync as mkdirSync76, readFileSync as readFileSync101, writeFileSync as writeFileSync64, readdirSync as readdirSync41, statSync as statSync48, unlinkSync as unlinkSync23, openSync as openSync2, closeSync as closeSync2, renameSync as renameSync11, watch as fsWatch2 } from "node:fs";
625913
626048
  import { join as join136, relative as relative14, basename as basename26, dirname as dirname40, resolve as resolve58 } from "node:path";
625914
626049
  import { homedir as homedir42 } from "node:os";
625915
626050
  import { createHash as createHash39 } from "node:crypto";
@@ -625917,7 +626052,7 @@ function isGitRoot(dir) {
625917
626052
  const gitPath = join136(dir, ".git");
625918
626053
  if (!existsSync122(gitPath)) return false;
625919
626054
  try {
625920
- const stat9 = statSync47(gitPath);
626055
+ const stat9 = statSync48(gitPath);
625921
626056
  if (stat9.isFile()) {
625922
626057
  return readFileSync101(gitPath, "utf-8").trim().startsWith("gitdir:");
625923
626058
  }
@@ -626269,7 +626404,7 @@ function loadRecentSessions(repoRoot, limit = 5) {
626269
626404
  if (!existsSync122(historyDir)) return [];
626270
626405
  try {
626271
626406
  const files = readdirSync41(historyDir).filter((f2) => f2.endsWith(".json") && f2 !== "pending-task.json").map((f2) => {
626272
- const stat9 = statSync47(join136(historyDir, f2));
626407
+ const stat9 = statSync48(join136(historyDir, f2));
626273
626408
  return { file: f2, mtime: stat9.mtimeMs };
626274
626409
  }).sort((a2, b) => b.mtime - a2.mtime).slice(0, limit);
626275
626410
  return files.map((f2) => {
@@ -626530,7 +626665,7 @@ function mergeSessionContextEntry(previous, incoming) {
626530
626665
  function pruneContextLedger(ledgerPath) {
626531
626666
  try {
626532
626667
  if (!existsSync122(ledgerPath)) return;
626533
- const st = statSync47(ledgerPath);
626668
+ const st = statSync48(ledgerPath);
626534
626669
  if (st.size <= MAX_CONTEXT_LEDGER_BYTES) return;
626535
626670
  const lines = readFileSync101(ledgerPath, "utf-8").split(/\r?\n/).filter((line) => line.trim().length > 0);
626536
626671
  if (lines.length <= MAX_CONTEXT_LEDGER_LINES) return;
@@ -626804,7 +626939,7 @@ function selectActiveTaskAnchor(repoRoot) {
626804
626939
  const runId = ledger.runId || name10.replace(/\.json$/, "");
626805
626940
  const workboard = readRestoreWorkboard(repoRoot, runId);
626806
626941
  const score = scoreRestoreLedger(ledger, workboard);
626807
- const mtimeMs = statSync47(filePath).mtimeMs;
626942
+ const mtimeMs = statSync48(filePath).mtimeMs;
626808
626943
  return { ledger: { ...ledger, runId }, workboard, score, mtimeMs };
626809
626944
  }).filter((item) => Boolean(item));
626810
626945
  candidates.sort((a2, b) => b.score - a2.score || b.mtimeMs - a2.mtimeMs);
@@ -627499,14 +627634,14 @@ var init_session_summary = __esm({
627499
627634
 
627500
627635
  // packages/cli/src/tui/cad-model-viewer.ts
627501
627636
  import { createServer as createServer7 } from "node:http";
627502
- import { existsSync as existsSync123, readFileSync as readFileSync102, statSync as statSync48 } from "node:fs";
627637
+ import { existsSync as existsSync123, readFileSync as readFileSync102, statSync as statSync49 } from "node:fs";
627503
627638
  import { basename as basename27, extname as extname16, resolve as resolve59 } from "node:path";
627504
627639
  function getCurrentCadModelViewer() {
627505
627640
  return currentViewer;
627506
627641
  }
627507
627642
  async function startCadModelViewer(filePath) {
627508
627643
  const resolved = filePath ? resolve59(filePath) : void 0;
627509
- if (resolved && (!existsSync123(resolved) || !statSync48(resolved).isFile())) {
627644
+ if (resolved && (!existsSync123(resolved) || !statSync49(resolved).isFile())) {
627510
627645
  throw new Error(`3D model file not found: ${resolved}`);
627511
627646
  }
627512
627647
  if (currentViewer) {
@@ -635092,7 +635227,7 @@ __export(personaplex_exports, {
635092
635227
  startPersonaPlexDaemon: () => startPersonaPlexDaemon,
635093
635228
  stopPersonaPlex: () => stopPersonaPlex
635094
635229
  });
635095
- import { existsSync as existsSync127, writeFileSync as writeFileSync66, readFileSync as readFileSync106, mkdirSync as mkdirSync78, copyFileSync as copyFileSync5, readdirSync as readdirSync42, statSync as statSync49 } from "node:fs";
635230
+ import { existsSync as existsSync127, writeFileSync as writeFileSync66, readFileSync as readFileSync106, mkdirSync as mkdirSync78, copyFileSync as copyFileSync5, readdirSync as readdirSync42, statSync as statSync50 } from "node:fs";
635096
635231
  import { join as join141, dirname as dirname43 } from "node:path";
635097
635232
  import { homedir as homedir45 } from "node:os";
635098
635233
  import { spawn as spawn33 } from "node:child_process";
@@ -635627,7 +635762,7 @@ print('Converted')
635627
635762
  }
635628
635763
  if (existsSync127(cachedBf16)) {
635629
635764
  extraArgs.push("--moshi-weight", cachedBf16);
635630
- log22(`Using distilled weights: ${(statSync49(cachedBf16).size / 1024 ** 3).toFixed(1)}GB`);
635765
+ log22(`Using distilled weights: ${(statSync50(cachedBf16).size / 1024 ** 3).toFixed(1)}GB`);
635631
635766
  } else {
635632
635767
  extraArgs.push("--moshi-weight", weightPath);
635633
635768
  }
@@ -635658,7 +635793,7 @@ print('Converted')
635658
635793
  );
635659
635794
  if (existsSync127(cachedBf16)) {
635660
635795
  extraArgs.push("--moshi-weight", cachedBf16);
635661
- log22(`Using dequantized cache: ${(statSync49(cachedBf16).size / 1024 ** 3).toFixed(1)}GB`);
635796
+ log22(`Using dequantized cache: ${(statSync50(cachedBf16).size / 1024 ** 3).toFixed(1)}GB`);
635662
635797
  }
635663
635798
  } catch (e2) {
635664
635799
  log22(`Dequantization failed — server will try to load original weights`);
@@ -639726,7 +639861,7 @@ var init_platforms = __esm({
639726
639861
  });
639727
639862
 
639728
639863
  // packages/cli/src/tui/workspace-explorer.ts
639729
- import { existsSync as existsSync130, readdirSync as readdirSync43, readFileSync as readFileSync108, statSync as statSync50 } from "node:fs";
639864
+ import { existsSync as existsSync130, readdirSync as readdirSync43, readFileSync as readFileSync108, statSync as statSync51 } from "node:fs";
639730
639865
  import { basename as basename28, extname as extname17, join as join143, relative as relative15, resolve as resolve60 } from "node:path";
639731
639866
  function exploreWorkspace(root, options2 = {}) {
639732
639867
  const query = (options2.query ?? "").trim().toLowerCase();
@@ -639763,7 +639898,7 @@ function exploreWorkspace(root, options2 = {}) {
639763
639898
  const rel = relative15(root, full).replace(/\\/g, "/");
639764
639899
  if (query && !rel.toLowerCase().includes(query)) continue;
639765
639900
  try {
639766
- const st = statSync50(full);
639901
+ const st = statSync51(full);
639767
639902
  entries.push({
639768
639903
  path: rel,
639769
639904
  sizeBytes: st.size,
@@ -639815,7 +639950,7 @@ function previewWorkspaceFile(root, relPath, options2 = {}) {
639815
639950
  throw new Error("File path escapes workspace root");
639816
639951
  }
639817
639952
  if (!existsSync130(full)) throw new Error(`File not found: ${relPath}`);
639818
- const st = statSync50(full);
639953
+ const st = statSync51(full);
639819
639954
  if (!st.isFile()) throw new Error(`Not a file: ${relPath}`);
639820
639955
  if (st.size > maxBytes) {
639821
639956
  return [
@@ -643999,7 +644134,7 @@ __export(kg_prune_exports, {
643999
644134
  pruneKnowledgeGraph: () => pruneKnowledgeGraph,
644000
644135
  pruneKnowledgeGraphWithInference: () => pruneKnowledgeGraphWithInference
644001
644136
  });
644002
- import { existsSync as existsSync137, statSync as statSync52 } from "node:fs";
644137
+ import { existsSync as existsSync137, statSync as statSync53 } from "node:fs";
644003
644138
  import { join as join149 } from "node:path";
644004
644139
  function stateDirFor(workingDir) {
644005
644140
  return join149(workingDir, ".omnius");
@@ -644019,13 +644154,13 @@ function knowledgeGraphStats(workingDir) {
644019
644154
  };
644020
644155
  if (stats.exists) {
644021
644156
  try {
644022
- stats.sizeBytes = statSync52(dbPath).size;
644157
+ stats.sizeBytes = statSync53(dbPath).size;
644023
644158
  } catch {
644024
644159
  }
644025
644160
  }
644026
644161
  if (existsSync137(archivePath)) {
644027
644162
  try {
644028
- stats.archiveSizeBytes = statSync52(archivePath).size;
644163
+ stats.archiveSizeBytes = statSync53(archivePath).size;
644029
644164
  } catch {
644030
644165
  }
644031
644166
  }
@@ -646577,7 +646712,7 @@ import {
646577
646712
  readFileSync as readFileSync115,
646578
646713
  unlinkSync as unlinkSync29,
646579
646714
  readdirSync as readdirSync46,
646580
- statSync as statSync53,
646715
+ statSync as statSync54,
646581
646716
  copyFileSync as copyFileSync6,
646582
646717
  rmSync as rmSync11
646583
646718
  } from "node:fs";
@@ -646711,7 +646846,7 @@ function mergeDir2(src2, dst) {
646711
646846
  if (entry.isDirectory()) {
646712
646847
  mergeDir2(s2, d2);
646713
646848
  } else if (entry.isFile()) {
646714
- if (!existsSync141(d2) || statSync53(s2).mtimeMs > statSync53(d2).mtimeMs) {
646849
+ if (!existsSync141(d2) || statSync54(s2).mtimeMs > statSync54(d2).mtimeMs) {
646715
646850
  copyFileSync6(s2, d2);
646716
646851
  }
646717
646852
  }
@@ -648194,7 +648329,7 @@ except Exception as exc:
648194
648329
  const p2 = join153(dir, f2);
648195
648330
  let size = 0;
648196
648331
  try {
648197
- size = statSync53(p2).size;
648332
+ size = statSync54(p2).size;
648198
648333
  } catch {
648199
648334
  }
648200
648335
  const entry = meta[f2];
@@ -651173,7 +651308,7 @@ import {
651173
651308
  mkdirSync as mkdirSync85,
651174
651309
  readdirSync as readdirSync47,
651175
651310
  lstatSync as lstatSync2,
651176
- statSync as statSync54,
651311
+ statSync as statSync55,
651177
651312
  rmSync as rmSync12,
651178
651313
  appendFileSync as appendFileSync16,
651179
651314
  writeSync as writeSync2
@@ -653982,7 +654117,7 @@ async function handleSlashCommand(input, ctx3) {
653982
654117
  ipfsFiles = files.length;
653983
654118
  for (const f2 of files) {
653984
654119
  try {
653985
- ipfsBytes += statSync54(join154(ipfsLocalDir, f2)).size;
654120
+ ipfsBytes += statSync55(join154(ipfsLocalDir, f2)).size;
653986
654121
  } catch {
653987
654122
  }
653988
654123
  }
@@ -653995,7 +654130,7 @@ async function handleSlashCommand(input, ctx3) {
653995
654130
  else {
653996
654131
  heliaBlocks++;
653997
654132
  try {
653998
- heliaBytes += statSync54(join154(dir, entry.name)).size;
654133
+ heliaBytes += statSync55(join154(dir, entry.name)).size;
653999
654134
  } catch {
654000
654135
  }
654001
654136
  }
@@ -654138,7 +654273,7 @@ async function handleSlashCommand(input, ctx3) {
654138
654273
  lines.push(`
654139
654274
  ${c3.bold("Structured Memory (SQLite)")}`);
654140
654275
  lines.push(
654141
- ` Memories: ${c3.bold(String(count))} DB: ${c3.dim(formatFileSize(statSync54(dbPath).size))}`
654276
+ ` Memories: ${c3.bold(String(count))} DB: ${c3.dim(formatFileSize(statSync55(dbPath).size))}`
654142
654277
  );
654143
654278
  cDb(db);
654144
654279
  }
@@ -654170,7 +654305,7 @@ async function handleSlashCommand(input, ctx3) {
654170
654305
  walkStorage(full, subCat);
654171
654306
  } else {
654172
654307
  try {
654173
- const sz = statSync54(full).size;
654308
+ const sz = statSync55(full).size;
654174
654309
  totalBytes += sz;
654175
654310
  if (!categories[category])
654176
654311
  categories[category] = { files: 0, bytes: 0 };
@@ -661330,7 +661465,7 @@ async function showCohereDashboard(ctx3) {
661330
661465
  const snapItems = snaps.slice(0, 20).map((f2) => ({
661331
661466
  key: f2,
661332
661467
  label: f2.replace(".json", ""),
661333
- detail: `${formatFileSize(statSync54(join154(snapDir, f2)).size)}`
661468
+ detail: `${formatFileSize(statSync55(join154(snapDir, f2)).size)}`
661334
661469
  }));
661335
661470
  if (snapItems.length > 0) {
661336
661471
  await tuiSelect({
@@ -667974,7 +668109,7 @@ var init_commands = __esm({
667974
668109
  });
667975
668110
 
667976
668111
  // packages/cli/src/tui/project-context.ts
667977
- import { existsSync as existsSync143, readFileSync as readFileSync117, readdirSync as readdirSync48, mkdirSync as mkdirSync86, statSync as statSync55, writeFileSync as writeFileSync74 } from "node:fs";
668112
+ import { existsSync as existsSync143, readFileSync as readFileSync117, readdirSync as readdirSync48, mkdirSync as mkdirSync86, statSync as statSync56, writeFileSync as writeFileSync74 } from "node:fs";
667978
668113
  import { dirname as dirname47, join as join155, basename as basename30, resolve as resolve63 } from "node:path";
667979
668114
  import { homedir as homedir53 } from "node:os";
667980
668115
  function projectContextUrlSpanAt(text2, index) {
@@ -668636,7 +668771,7 @@ function safeReadDir(dir) {
668636
668771
  }
668637
668772
  function isDirectory2(path12) {
668638
668773
  try {
668639
- return statSync55(path12).isDirectory();
668774
+ return statSync56(path12).isDirectory();
668640
668775
  } catch {
668641
668776
  return false;
668642
668777
  }
@@ -678156,7 +678291,7 @@ import {
678156
678291
  existsSync as existsSync153,
678157
678292
  mkdirSync as mkdirSync94,
678158
678293
  readFileSync as readFileSync126,
678159
- statSync as statSync56,
678294
+ statSync as statSync57,
678160
678295
  unlinkSync as unlinkSync32,
678161
678296
  writeFileSync as writeFileSync81
678162
678297
  } from "node:fs";
@@ -678669,7 +678804,7 @@ function materializeTelegramCreativeArtifactForSend(root, rawPath) {
678669
678804
  }
678670
678805
  function safeStatFile(path12) {
678671
678806
  try {
678672
- return statSync56(path12).isFile();
678807
+ return statSync57(path12).isFile();
678673
678808
  } catch {
678674
678809
  return false;
678675
678810
  }
@@ -678941,7 +679076,7 @@ ${(result.error || result.output || "").slice(0, 1200)}`,
678941
679076
  for (const fn of cleanup) fn();
678942
679077
  }
678943
679078
  rememberCreated(this.root, guarded.path.abs);
678944
- const sizeKB = Math.round(statSync56(guarded.path.abs).size / 1024);
679079
+ const sizeKB = Math.round(statSync57(guarded.path.abs).size / 1024);
678945
679080
  this.emitProgress(start2, {
678946
679081
  stage: "save",
678947
679082
  message: `Saved scoped audio file (${sizeKB}KB)`
@@ -682334,7 +682469,7 @@ import {
682334
682469
  existsSync as existsSync156,
682335
682470
  unlinkSync as unlinkSync35,
682336
682471
  readdirSync as readdirSync56,
682337
- statSync as statSync57,
682472
+ statSync as statSync58,
682338
682473
  readFileSync as readFileSync129,
682339
682474
  writeFileSync as writeFileSync83,
682340
682475
  appendFileSync as appendFileSync19
@@ -687288,7 +687423,7 @@ Model: <code>${escapeTelegramHTML(model.id)}</code>`
687288
687423
  }
687289
687424
  let sent = 0;
687290
687425
  for (const path12 of paths) {
687291
- if (!existsSync156(path12) || !statSync57(path12).isFile()) continue;
687426
+ if (!existsSync156(path12) || !statSync58(path12).isFile()) continue;
687292
687427
  const kind = classifyMedia(path12) ?? "document";
687293
687428
  const messageId = await this.sendMediaReference(
687294
687429
  msg.chatId,
@@ -699617,7 +699752,7 @@ ${knownList}` : "Private-user telegram_send_file target must be this DM or a kno
699617
699752
  const abs = isAbsolute14(trimmed) ? resolve68(trimmed) : resolve68(base3, trimmed);
699618
699753
  if (!existsSync156(abs))
699619
699754
  return { ok: false, error: `File does not exist: ${trimmed}` };
699620
- if (!statSync57(abs).isFile())
699755
+ if (!statSync58(abs).isFile())
699621
699756
  return { ok: false, error: `Path is not a file: ${trimmed}` };
699622
699757
  return { ok: true, path: abs };
699623
699758
  }
@@ -700131,7 +700266,7 @@ ${text2}`.trim()
700131
700266
  }
700132
700267
  async sendTelegramFileToChat(chatId, path12, options2) {
700133
700268
  const abs = resolve68(path12);
700134
- if (!existsSync156(abs) || !statSync57(abs).isFile()) {
700269
+ if (!existsSync156(abs) || !statSync58(abs).isFile()) {
700135
700270
  throw new Error(`File does not exist or is not a regular file: ${path12}`);
700136
700271
  }
700137
700272
  return this.sendMediaReferenceStrict(
@@ -700401,7 +700536,7 @@ Content-Type: ${contentType}\r
700401
700536
  for (const path12 of paths) {
700402
700537
  const abs = resolve68(path12);
700403
700538
  if (subAgent.deliveredArtifacts.includes(abs)) continue;
700404
- if (!existsSync156(abs) || !statSync57(abs).isFile()) continue;
700539
+ if (!existsSync156(abs) || !statSync58(abs).isFile()) continue;
700405
700540
  subAgent.deliveredArtifacts.push(abs);
700406
700541
  await this.sendMediaReference(
700407
700542
  msg.chatId,
@@ -700443,7 +700578,7 @@ Content-Type: ${contentType}\r
700443
700578
  abs
700444
700579
  );
700445
700580
  if (!materialized.ok) continue;
700446
- if (!existsSync156(materialized.path) || !statSync57(materialized.path).isFile()) {
700581
+ if (!existsSync156(materialized.path) || !statSync58(materialized.path).isFile()) {
700447
700582
  materialized.cleanup?.();
700448
700583
  continue;
700449
700584
  }
@@ -702631,7 +702766,7 @@ __export(projects_exports, {
702631
702766
  setCurrentProject: () => setCurrentProject,
702632
702767
  unregisterProject: () => unregisterProject
702633
702768
  });
702634
- import { readFileSync as readFileSync130, writeFileSync as writeFileSync84, mkdirSync as mkdirSync97, existsSync as existsSync157, statSync as statSync58, renameSync as renameSync14 } from "node:fs";
702769
+ import { readFileSync as readFileSync130, writeFileSync as writeFileSync84, mkdirSync as mkdirSync97, existsSync as existsSync157, statSync as statSync59, renameSync as renameSync14 } from "node:fs";
702635
702770
  import { homedir as homedir56 } from "node:os";
702636
702771
  import { basename as basename41, join as join169, resolve as resolve69 } from "node:path";
702637
702772
  import { randomUUID as randomUUID19 } from "node:crypto";
@@ -702657,7 +702792,7 @@ function listProjects() {
702657
702792
  const alive = [];
702658
702793
  for (const p2 of projects) {
702659
702794
  try {
702660
- if (statSync58(p2.root).isDirectory()) alive.push(p2);
702795
+ if (statSync59(p2.root).isDirectory()) alive.push(p2);
702661
702796
  } catch {
702662
702797
  }
702663
702798
  }
@@ -703803,7 +703938,7 @@ var init_audit_log = __esm({
703803
703938
 
703804
703939
  // packages/cli/src/api/disk-task-output.ts
703805
703940
  import { open } from "node:fs/promises";
703806
- import { existsSync as existsSync160, mkdirSync as mkdirSync100, statSync as statSync59 } from "node:fs";
703941
+ import { existsSync as existsSync160, mkdirSync as mkdirSync100, statSync as statSync60 } from "node:fs";
703807
703942
  import { dirname as dirname51 } from "node:path";
703808
703943
  import * as fsConstants from "node:constants";
703809
703944
  var O_NOFOLLOW2, O_APPEND2, O_CREAT2, O_WRONLY2, OPEN_FLAGS_WRITE, OPEN_MODE, DiskTaskOutput;
@@ -703902,7 +704037,7 @@ var init_disk_task_output = __esm({
703902
704037
  if (!existsSync160(this.path)) {
703903
704038
  return { content: "", nextOffset: offset, eof: true, size: 0 };
703904
704039
  }
703905
- const st = statSync59(this.path);
704040
+ const st = statSync60(this.path);
703906
704041
  if (offset >= st.size) {
703907
704042
  return { content: "", nextOffset: offset, eof: true, size: st.size };
703908
704043
  }
@@ -704090,7 +704225,7 @@ data: ${JSON.stringify(ev)}
704090
704225
  });
704091
704226
 
704092
704227
  // packages/cli/src/api/routes-media.ts
704093
- import { existsSync as existsSync161, mkdirSync as mkdirSync101, statSync as statSync60, copyFileSync as copyFileSync7, createReadStream } from "node:fs";
704228
+ import { existsSync as existsSync161, mkdirSync as mkdirSync101, statSync as statSync61, copyFileSync as copyFileSync7, createReadStream } from "node:fs";
704094
704229
  import { basename as basename42, join as join172, resolve as pathResolve2 } from "node:path";
704095
704230
  function mediaWorkDir() {
704096
704231
  return join172(omniusHomeDir(), "media", "_work");
@@ -704391,7 +704526,7 @@ async function runGeneration(ctx3, kind, buildTool, buildArgs) {
704391
704526
  const published = publishToGallery(srcPath, kind);
704392
704527
  const size = (() => {
704393
704528
  try {
704394
- return statSync60(published.path).size;
704529
+ return statSync61(published.path).size;
704395
704530
  } catch {
704396
704531
  return 0;
704397
704532
  }
@@ -704498,7 +704633,7 @@ function handleFile(ctx3) {
704498
704633
  const ext = full.slice(full.lastIndexOf(".")).toLowerCase();
704499
704634
  ctx3.res.writeHead(200, {
704500
704635
  "Content-Type": MIME_BY_EXT[ext] || "application/octet-stream",
704501
- "Content-Length": statSync60(full).size,
704636
+ "Content-Length": statSync61(full).size,
704502
704637
  "Cache-Control": "private, max-age=3600"
704503
704638
  });
704504
704639
  createReadStream(full).pipe(ctx3.res);
@@ -705087,7 +705222,7 @@ __export(aiwg_exports, {
705087
705222
  resolveAiwgRoot: () => resolveAiwgRoot,
705088
705223
  tryRouteAiwg: () => tryRouteAiwg
705089
705224
  });
705090
- import { existsSync as existsSync163, readFileSync as readFileSync134, readdirSync as readdirSync57, statSync as statSync61 } from "node:fs";
705225
+ import { existsSync as existsSync163, readFileSync as readFileSync134, readdirSync as readdirSync57, statSync as statSync62 } from "node:fs";
705091
705226
  import { join as join174 } from "node:path";
705092
705227
  import { homedir as homedir58 } from "node:os";
705093
705228
  import { execSync as execSync38 } from "node:child_process";
@@ -705189,7 +705324,7 @@ function listAiwgFrameworks() {
705189
705324
  for (const name10 of readdirSync57(frameworksDir)) {
705190
705325
  const p2 = join174(frameworksDir, name10);
705191
705326
  try {
705192
- const st = statSync61(p2);
705327
+ const st = statSync62(p2);
705193
705328
  if (!st.isDirectory()) continue;
705194
705329
  const agg = aggregateDir(p2);
705195
705330
  out.push({
@@ -705226,7 +705361,7 @@ function aggregateDir(dir, depth = 0) {
705226
705361
  out.commands += sub2.commands;
705227
705362
  } else if (e2.isFile()) {
705228
705363
  try {
705229
- const st = statSync61(p2);
705364
+ const st = statSync62(p2);
705230
705365
  out.files++;
705231
705366
  out.bytes += st.size;
705232
705367
  if (e2.name.endsWith(".md")) {
@@ -705360,7 +705495,7 @@ function listAiwgAddons() {
705360
705495
  for (const name10 of readdirSync57(addonsDir)) {
705361
705496
  const p2 = join174(addonsDir, name10);
705362
705497
  try {
705363
- const st = statSync61(p2);
705498
+ const st = statSync62(p2);
705364
705499
  if (!st.isDirectory()) continue;
705365
705500
  const agg = aggregateDir(p2);
705366
705501
  out.push({
@@ -706245,7 +706380,7 @@ var init_graphical_sudo = __esm({
706245
706380
  });
706246
706381
 
706247
706382
  // packages/cli/src/api/routes-v1.ts
706248
- import { existsSync as existsSync167, mkdirSync as mkdirSync105, readFileSync as readFileSync137, readdirSync as readdirSync58, statSync as statSync62 } from "node:fs";
706383
+ import { existsSync as existsSync167, mkdirSync as mkdirSync105, readFileSync as readFileSync137, readdirSync as readdirSync58, statSync as statSync63 } from "node:fs";
706249
706384
  import { join as join178, resolve as pathResolve3 } from "node:path";
706250
706385
  import { homedir as homedir61 } from "node:os";
706251
706386
  async function tryRouteV1(ctx3) {
@@ -707463,7 +707598,7 @@ async function handleFilesRead(ctx3) {
707463
707598
  }));
707464
707599
  return true;
707465
707600
  }
707466
- const st = statSync62(resolved);
707601
+ const st = statSync63(resolved);
707467
707602
  if (st.isDirectory()) {
707468
707603
  sendProblem(res, problemDetails({
707469
707604
  type: P2.invalidRequest,
@@ -722653,7 +722788,7 @@ import {
722653
722788
  watch as fsWatch4,
722654
722789
  renameSync as renameSync17,
722655
722790
  unlinkSync as unlinkSync37,
722656
- statSync as statSync63,
722791
+ statSync as statSync64,
722657
722792
  openSync as openSync6,
722658
722793
  readSync as readSync2,
722659
722794
  closeSync as closeSync6
@@ -723013,7 +723148,7 @@ function fileEntryMetadata(dir, entry) {
723013
723148
  kind: fileKindForPath(entry.name)
723014
723149
  };
723015
723150
  try {
723016
- const st = statSync63(target);
723151
+ const st = statSync64(target);
723017
723152
  meta["size"] = st.size;
723018
723153
  meta["mtime"] = new Date(st.mtimeMs).toISOString();
723019
723154
  } catch {
@@ -723025,7 +723160,7 @@ function contentDispositionName(filePath) {
723025
723160
  return name10.replace(/["\r\n]/g, "");
723026
723161
  }
723027
723162
  function streamWorkspaceFile(req3, res, target) {
723028
- const st = statSync63(target);
723163
+ const st = statSync64(target);
723029
723164
  if (!st.isFile()) {
723030
723165
  jsonResponse(res, 400, { error: "Path is not a file", path: target });
723031
723166
  return;
@@ -727022,7 +727157,7 @@ function handleV1RunsById(res, id2) {
727022
727157
  const enriched = { ...job };
727023
727158
  if (outputFile && existsSync170(outputFile)) {
727024
727159
  try {
727025
- const size = statSync63(outputFile).size;
727160
+ const size = statSync64(outputFile).size;
727026
727161
  const tailSize = Math.min(size, 4096);
727027
727162
  const buffer2 = Buffer.alloc(tailSize);
727028
727163
  const fd = openSync6(outputFile, "r");
@@ -727670,7 +727805,7 @@ async function handleRequest(req3, res, ollamaUrl, verbose, runtimeDefaults = {}
727670
727805
  const dir = path12.dirname(cssEntry);
727671
727806
  const fullPath = path12.join(dir, entry.path);
727672
727807
  if (fs11.existsSync(fullPath)) {
727673
- const stat9 = statSync63(fullPath);
727808
+ const stat9 = statSync64(fullPath);
727674
727809
  res.writeHead(200, {
727675
727810
  "Content-Type": entry.ct,
727676
727811
  "Content-Length": String(stat9.size),
@@ -728222,17 +728357,17 @@ async function handleRequest(req3, res, ollamaUrl, verbose, runtimeDefaults = {}
728222
728357
  const child = join182(dir, e2.name);
728223
728358
  const omniusDir = join182(child, ".omnius");
728224
728359
  try {
728225
- if (statSync63(omniusDir).isDirectory()) {
728360
+ if (statSync64(omniusDir).isDirectory()) {
728226
728361
  const name10 = e2.name;
728227
728362
  const prefsFile = join182(omniusDir, "config.json");
728228
728363
  let lastSeen = 0;
728229
728364
  try {
728230
- lastSeen = statSync63(prefsFile).mtimeMs;
728365
+ lastSeen = statSync64(prefsFile).mtimeMs;
728231
728366
  } catch {
728232
728367
  }
728233
728368
  if (!lastSeen) {
728234
728369
  try {
728235
- lastSeen = statSync63(omniusDir).mtimeMs;
728370
+ lastSeen = statSync64(omniusDir).mtimeMs;
728236
728371
  } catch {
728237
728372
  }
728238
728373
  }
@@ -728281,17 +728416,17 @@ async function handleRequest(req3, res, ollamaUrl, verbose, runtimeDefaults = {}
728281
728416
  const child = join182(dir, e2.name);
728282
728417
  const omniusDir = join182(child, ".omnius");
728283
728418
  try {
728284
- if (statSync63(omniusDir).isDirectory()) {
728419
+ if (statSync64(omniusDir).isDirectory()) {
728285
728420
  const name10 = e2.name;
728286
728421
  const prefsFile = join182(omniusDir, "config.json");
728287
728422
  let lastSeen = 0;
728288
728423
  try {
728289
- lastSeen = statSync63(prefsFile).mtimeMs;
728424
+ lastSeen = statSync64(prefsFile).mtimeMs;
728290
728425
  } catch {
728291
728426
  }
728292
728427
  if (!lastSeen) {
728293
728428
  try {
728294
- lastSeen = statSync63(omniusDir).mtimeMs;
728429
+ lastSeen = statSync64(omniusDir).mtimeMs;
728295
728430
  } catch {
728296
728431
  }
728297
728432
  }
@@ -733312,7 +733447,7 @@ import {
733312
733447
  appendFileSync as appendFileSync21,
733313
733448
  rmSync as rmSync16,
733314
733449
  readdirSync as readdirSync60,
733315
- statSync as statSync64,
733450
+ statSync as statSync65,
733316
733451
  mkdirSync as mkdirSync110
733317
733452
  } from "node:fs";
733318
733453
  import { existsSync as existsSync171 } from "node:fs";
@@ -738701,7 +738836,7 @@ This is an independent background session started from /background.`
738701
738836
  if (!entry.startsWith(partialName)) continue;
738702
738837
  const full = join184(searchDir, entry);
738703
738838
  try {
738704
- const st = statSync64(full);
738839
+ const st = statSync65(full);
738705
738840
  const suffix = st.isDirectory() ? "/" : "";
738706
738841
  const display = isAbsolute15 ? full : full.startsWith(repoRoot + sep5) ? full.slice(repoRoot.length + 1) : full;
738707
738842
  completions.push(display + suffix);
@@ -741365,11 +741500,11 @@ Respond concisely and safely. Remember: you are talking to the general public.`;
741365
741500
  }
741366
741501
  if (name10 === "voice_list_files") {
741367
741502
  const baseDir = String(args?.dir ?? ".");
741368
- const { readdirSync: readdirSync62, statSync: statSync66 } = __require("node:fs");
741503
+ const { readdirSync: readdirSync62, statSync: statSync67 } = __require("node:fs");
741369
741504
  const { join: join189, resolve: resolve77 } = __require("node:path");
741370
741505
  const base3 = baseDir.startsWith("/") ? baseDir : resolve77(join189(repoRoot, baseDir));
741371
741506
  const items = readdirSync62(base3).slice(0, 200).map((f2) => {
741372
- const s2 = statSync66(join189(base3, f2));
741507
+ const s2 = statSync67(join189(base3, f2));
741373
741508
  return { name: f2, dir: s2.isDirectory(), size: s2.size };
741374
741509
  });
741375
741510
  return JSON.stringify({ dir: base3, items }, null, 2);
@@ -744153,7 +744288,7 @@ __export(index_repo_exports, {
744153
744288
  indexRepoCommand: () => indexRepoCommand
744154
744289
  });
744155
744290
  import { resolve as resolve75 } from "node:path";
744156
- import { existsSync as existsSync173, statSync as statSync65 } from "node:fs";
744291
+ import { existsSync as existsSync173, statSync as statSync66 } from "node:fs";
744157
744292
  import { cwd as cwd2 } from "node:process";
744158
744293
  async function indexRepoCommand(opts, _config3) {
744159
744294
  const repoRoot = resolve75(opts.repoPath ?? cwd2());
@@ -744163,7 +744298,7 @@ async function indexRepoCommand(opts, _config3) {
744163
744298
  printError(`Path does not exist: ${repoRoot}`);
744164
744299
  process.exit(1);
744165
744300
  }
744166
- const stat9 = statSync65(repoRoot);
744301
+ const stat9 = statSync66(repoRoot);
744167
744302
  if (!stat9.isDirectory()) {
744168
744303
  printError(`Path is not a directory: ${repoRoot}`);
744169
744304
  process.exit(1);
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.447",
3
+ "version": "1.0.448",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.447",
9
+ "version": "1.0.448",
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.447",
3
+ "version": "1.0.448",
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",