omnius 1.0.462 → 1.0.463

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
@@ -567631,7 +567631,15 @@ function ago(ms) {
567631
567631
  const h = Math.floor(m2 / 60);
567632
567632
  return `${h}h ago`;
567633
567633
  }
567634
- function computeNextActionHint(reconciled) {
567634
+ function computeNextActionHint(reconciled, recentFailures, focusDirective) {
567635
+ if (focusDirective?.requiredNextAction) {
567636
+ const reason = focusDirective.reason ? ` Reason: ${focusDirective.reason.slice(0, 180)}.` : "";
567637
+ return `Active recovery directive requires ${focusDirective.requiredNextAction}.${reason} Follow that before completion or unrelated work.`;
567638
+ }
567639
+ if (recentFailures.length > 0) {
567640
+ const first2 = recentFailures[0];
567641
+ return `Resolve or explicitly account for unresolved failure "${first2.stem}" (${first2.attempts} attempt${first2.attempts === 1 ? "" : "s"}). Do not infer completion from plan state while failures remain.`;
567642
+ }
567635
567643
  const inProgress = reconciled.find((t2) => t2.reconciled === "in_progress");
567636
567644
  if (inProgress)
567637
567645
  return `Continue your in-progress item: "${inProgress.content.slice(0, 100)}".`;
@@ -567661,7 +567669,10 @@ function computeNextActionHint(reconciled) {
567661
567669
  const first2 = completedUnverified[0];
567662
567670
  return `A completed todo has a verifyCommand that hasn't run during this snapshot: ${first2.rationale}`;
567663
567671
  }
567664
- return `All declared plan items appear satisfied. If the goal is met, declare with task_complete; otherwise add new todos for remaining work.`;
567672
+ if (reconciled.length === 0) {
567673
+ return `No declared plan items are available. Continue from the active goal and evidence; report completion only with direct verification.`;
567674
+ }
567675
+ return `Declared plan items have no visible gaps. Continue from the active goal and evidence; report completion only with direct verification.`;
567665
567676
  }
567666
567677
  function regenerate(opts) {
567667
567678
  const startMs = Date.now();
@@ -567756,7 +567767,18 @@ function regenerate(opts) {
567756
567767
  }
567757
567768
  }
567758
567769
  lines.push(``);
567759
- const nextActionHint = computeNextActionHint(reconciled);
567770
+ if (opts.focusDirective?.requiredNextAction) {
567771
+ lines.push(`ACTIVE RECOVERY DIRECTIVE:`);
567772
+ lines.push(` required_next_action=${opts.focusDirective.requiredNextAction}`);
567773
+ if (opts.focusDirective.state) {
567774
+ lines.push(` state=${opts.focusDirective.state}`);
567775
+ }
567776
+ if (opts.focusDirective.reason) {
567777
+ lines.push(` reason=${opts.focusDirective.reason.slice(0, 240)}`);
567778
+ }
567779
+ lines.push(``);
567780
+ }
567781
+ const nextActionHint = computeNextActionHint(reconciled, opts.recentFailures, opts.focusDirective);
567760
567782
  lines.push(`SUGGESTED NEXT STEP (derived from gap analysis, not authoritative):`);
567761
567783
  lines.push(` ${nextActionHint}`);
567762
567784
  lines.push(``);
@@ -575157,21 +575179,13 @@ function violatesDirective(directive, input) {
575157
575179
  }
575158
575180
  if (input.toolName === "ask_user")
575159
575181
  return false;
575182
+ const family = actionFamily(input.toolName, input.args);
575183
+ if (directive.requiredNextAction !== "update_todos" && directiveExplicitlyForbidsCall(directive, input, family)) {
575184
+ return true;
575185
+ }
575160
575186
  if (directive.requiredNextAction === "read_authoritative_target" && input.usesAuthoritativeTargetEvidence && isEditTool(input.toolName)) {
575161
575187
  return false;
575162
575188
  }
575163
- const family = actionFamily(input.toolName, input.args);
575164
- if (directive.requiredNextAction !== "update_todos") {
575165
- if (directive.forbiddenActionFamilies.includes(family))
575166
- return true;
575167
- if (directive.forbiddenActionFamilies.includes(input.toolName)) {
575168
- if (input.toolName === "shell" && input.isReadLike)
575169
- return false;
575170
- if (input.toolName === "shell" && input.shellLikelyMutatesFilesystem)
575171
- return false;
575172
- return true;
575173
- }
575174
- }
575175
575189
  switch (directive.requiredNextAction) {
575176
575190
  case "update_todos":
575177
575191
  if (input.toolName === "shell")
@@ -575204,6 +575218,17 @@ function violatesDirective(directive, input) {
575204
575218
  return false;
575205
575219
  }
575206
575220
  }
575221
+ function directiveExplicitlyForbidsCall(directive, input, family) {
575222
+ if (directive.forbiddenActionFamilies.includes(family))
575223
+ return true;
575224
+ if (!directive.forbiddenActionFamilies.includes(input.toolName))
575225
+ return false;
575226
+ if (input.toolName === "shell" && input.isReadLike)
575227
+ return false;
575228
+ if (input.toolName === "shell" && input.shellLikelyMutatesFilesystem)
575229
+ return false;
575230
+ return true;
575231
+ }
575207
575232
  function forbiddenCachedEvidenceFamilies(input, family) {
575208
575233
  return [family];
575209
575234
  }
@@ -585300,7 +585325,10 @@ Rewrite it now for ${ctx3.model}.`;
585300
585325
  path: ["file", "image", "media", "filepath", "file_path", "filename"],
585301
585326
  image: ["path", "file", "media", "filepath", "file_path", "filename"],
585302
585327
  command: ["cmd", "shell_command"],
585303
- query: ["prompt", "task", "message", "input", "text"]
585328
+ query: ["prompt", "task", "message", "input", "text"],
585329
+ start_line: ["line", "lineNumber", "line_number", "startLine"],
585330
+ end_line: ["endLine", "end_line", "lineEnd", "line_end", "end"],
585331
+ new_content: ["content", "newContent", "new_content"]
585304
585332
  };
585305
585333
  for (const required of missingRequired) {
585306
585334
  for (const alias of aliasMap[required] ?? []) {
@@ -586794,6 +586822,7 @@ TASK: ${scrubbedTask}` : scrubbedTask;
586794
586822
  preview: (entry.wentWrong || "").slice(0, 200),
586795
586823
  distinctErrors: entry.errorSignatures?.size
586796
586824
  })).sort((a2, b) => b.attempts - a2.attempts).slice(0, 5);
586825
+ const _wsFocusDirective = this._focusSupervisor?.snapshot().directive ?? null;
586797
586826
  const _ws = regenerate({
586798
586827
  workingDir: _wsWorkingDir,
586799
586828
  goal: this._taskState.originalGoal || this._taskState.goal || "",
@@ -586801,6 +586830,11 @@ TASK: ${scrubbedTask}` : scrubbedTask;
586801
586830
  triggerReason: _wsTrigger,
586802
586831
  todos: _wsTodos,
586803
586832
  recentFailures: _wsFailures,
586833
+ focusDirective: _wsFocusDirective ? {
586834
+ requiredNextAction: _wsFocusDirective.requiredNextAction,
586835
+ reason: _wsFocusDirective.reason,
586836
+ state: _wsFocusDirective.state
586837
+ } : null,
586804
586838
  maxFiles: WORLD_STATE_MAX_FILES,
586805
586839
  lastBuildSuccess: this._lastBuildSuccessTurn >= 0 ? {
586806
586840
  command: this._lastBuildSuccessCommand,
@@ -587181,6 +587215,25 @@ If this matches your current shape, try it before continuing.`
587181
587215
  if (_m)
587182
587216
  _staleSamples.push(` - ${c9.name}: ${_m[0]}`);
587183
587217
  }
587218
+ const _reg44FocusDirective = this._focusDirectiveSuppressesEditPressure();
587219
+ const _reg44ChoiceLines = _reg44FocusDirective ? [
587220
+ `A focus recovery directive is active and overrides the generic stuck escape options.`,
587221
+ `Required next action: ${_reg44FocusDirective.requiredNextAction}.`,
587222
+ `Reason: ${_reg44FocusDirective.reason}.`,
587223
+ `Do not choose a generic produce/complete/debate escape until this recovery directive is satisfied or reported impossible with evidence.`
587224
+ ] : [
587225
+ `Pick ONE of these for your next response:`,
587226
+ ``,
587227
+ ` (a) PRODUCE: emit a file_write / file_edit / file_patch that creates or changes project content. Even a partial draft of the next planned file is progress. Use shell only for commands/tests/system operations, not as a workaround for failed edit-tool encoding.`,
587228
+ ``,
587229
+ ` (b) ERROR-INFORMED LOCAL TRIAGE: anchor on the freshest local failure, identify the implicated file/path/symbol/command, then make one targeted local move instead of broad exploration.`,
587230
+ ``,
587231
+ this._renderLocalFailureNudge(turn),
587232
+ ``,
587233
+ ` (c) DEBATE: if you've tried 3+ approaches and they all hit the same wall, invoke \`debate\` with the failed task as the prompt — get a second opinion.`,
587234
+ ``,
587235
+ ` (d) DECLARE BLOCKED: if you genuinely cannot make progress (missing dependency, ambiguous spec, external service down), call \`task_complete\` with a summary that NAMES THE BLOCKER explicitly. Don't keep looping.`
587236
+ ];
587184
587237
  messages2.push({
587185
587238
  role: "system",
587186
587239
  content: [
@@ -587194,17 +587247,7 @@ If this matches your current shape, try it before continuing.`
587194
587247
  ``,
587195
587248
  `You are consuming turns without producing new state. Every shape of "agent stuck" — read-heavy without writes, repeated cache hits, blocked-shell loops, no-op todo updates — looks like this signal. The exact tool names don't matter; the ratio does.`,
587196
587249
  ``,
587197
- `Pick ONE of these for your next response:`,
587198
- ``,
587199
- ` (a) PRODUCE: emit a file_write / file_edit / file_patch that creates or changes project content. Even a partial draft of the next planned file is progress. Use shell only for commands/tests/system operations, not as a workaround for failed edit-tool encoding.`,
587200
- ``,
587201
- ` (b) ERROR-INFORMED LOCAL TRIAGE: anchor on the freshest local failure, identify the implicated file/path/symbol/command, then make one targeted local move instead of broad exploration.`,
587202
- ``,
587203
- this._renderLocalFailureNudge(turn),
587204
- ``,
587205
- ` (c) DEBATE: if you've tried 3+ approaches and they all hit the same wall, invoke \`debate\` with the failed task as the prompt — get a second opinion.`,
587206
- ``,
587207
- ` (d) DECLARE BLOCKED: if you genuinely cannot make progress (missing dependency, ambiguous spec, external service down), call \`task_complete\` with a summary that NAMES THE BLOCKER explicitly. Don't keep looping.`,
587250
+ ..._reg44ChoiceLines,
587208
587251
  ``,
587209
587252
  `Recent failures (real or synthetic):`,
587210
587253
  _failureBlocks,
@@ -587359,6 +587402,27 @@ ${_staleSamples.join("\n")}` : ``,
587359
587402
  });
587360
587403
  if (_wtWorstCount >= _wtThreshold && !_wtHadSuccessfulVerify) {
587361
587404
  this._writeThrashCooldownUntilTurn = turn + 8;
587405
+ const _reg50FocusDirective = this._focusDirectiveSuppressesEditPressure();
587406
+ const _reg50ChoiceLines = _reg50FocusDirective ? [
587407
+ `A focus recovery directive is active and overrides the generic write-thrash choices.`,
587408
+ `Required next action: ${_reg50FocusDirective.requiredNextAction}.`,
587409
+ `Reason: ${_reg50FocusDirective.reason}.`,
587410
+ `Do not write ${_wtWorstPath} again until the focus directive is satisfied or reported impossible with evidence.`
587411
+ ] : [
587412
+ `Pick ONE of these for your next response:`,
587413
+ ``,
587414
+ ` (a) RUN-AND-READ: Run the EXACT command that fails (test/typecheck/build) and READ THE FULL ERROR MESSAGE LITERALLY. Do not summarize it from memory; paste it back into context. The current write hasn't been validated against any error.`,
587415
+ ``,
587416
+ ` (b) DELETE-AND-RESTART: If the file has been rewritten ${_wtWorstCount} times, the current approach is wrong. Either delete the file and try a fundamentally different design, OR revert to a known-good earlier version (use git, working_notes, or memory_search to find one).`,
587417
+ ``,
587418
+ ` (c) ERROR-INFORMED LOCAL TRIAGE: use the exact failing local command and error line to identify one implicated path/symbol/config key, then inspect or change only that target. Do not search online for a codebase-local failure.`,
587419
+ ``,
587420
+ this._renderLocalFailureNudge(turn),
587421
+ ``,
587422
+ ` (d) DECLARE BLOCKED: If the file's correct shape genuinely isn't knowable from the spec + this codebase, call task_complete with a summary that names this specific file as the blocker. Don't burn more turns on it.`,
587423
+ ``,
587424
+ `Do NOT in your next response: write to ${_wtWorstPath} again without first running and reading the failing command's output.`
587425
+ ];
587362
587426
  messages2.push({
587363
587427
  role: "system",
587364
587428
  content: [
@@ -587369,19 +587433,7 @@ ${_staleSamples.join("\n")}` : ``,
587369
587433
  ``,
587370
587434
  `No successful test/build/typecheck command ran between writes — you are iterating the file blind, hoping the next variation works. This is a write-thrash anti-pattern. Repeated edits without verification confirm nothing.`,
587371
587435
  ``,
587372
- `Pick ONE of these for your next response:`,
587373
- ``,
587374
- ` (a) RUN-AND-READ: Run the EXACT command that fails (test/typecheck/build) and READ THE FULL ERROR MESSAGE LITERALLY. Do not summarize it from memory; paste it back into context. The current write hasn't been validated against any error.`,
587375
- ``,
587376
- ` (b) DELETE-AND-RESTART: If the file has been rewritten ${_wtWorstCount} times, the current approach is wrong. Either delete the file and try a fundamentally different design, OR revert to a known-good earlier version (use git, working_notes, or memory_search to find one).`,
587377
- ``,
587378
- ` (c) ERROR-INFORMED LOCAL TRIAGE: use the exact failing local command and error line to identify one implicated path/symbol/config key, then inspect or change only that target. Do not search online for a codebase-local failure.`,
587379
- ``,
587380
- this._renderLocalFailureNudge(turn),
587381
- ``,
587382
- ` (d) DECLARE BLOCKED: If the file's correct shape genuinely isn't knowable from the spec + this codebase, call task_complete with a summary that names this specific file as the blocker. Don't burn more turns on it.`,
587383
- ``,
587384
- `Do NOT in your next response: write to ${_wtWorstPath} again without first running and reading the failing command's output.`
587436
+ ..._reg50ChoiceLines
587385
587437
  ].join("\n")
587386
587438
  });
587387
587439
  this.emit({
@@ -587497,6 +587549,25 @@ ${_staleSamples.join("\n")}` : ``,
587497
587549
  }
587498
587550
  if (_efWorstCount >= _efThreshold) {
587499
587551
  this._editFailThrashCooldownUntilTurn = turn + 8;
587552
+ const _reg53FocusDirective = this._focusDirectiveSuppressesEditPressure();
587553
+ const _reg53ChoiceLines = _reg53FocusDirective ? [
587554
+ `A focus recovery directive is active and overrides generic stale-edit recovery choices.`,
587555
+ `Required next action: ${_reg53FocusDirective.requiredNextAction}.`,
587556
+ `Reason: ${_reg53FocusDirective.reason}.`,
587557
+ `Do not call file_edit or batch_edit on ${_efWorstPath} again until that directive is satisfied or reported impossible with evidence.`
587558
+ ] : [
587559
+ `STOP guessing variants of old_string. Pick ONE of these for your next response:`,
587560
+ ``,
587561
+ ` (a) FILE_READ + COPY-EXACT: Call file_read on ${_efWorstPath}, then copy the EXACT bytes (whitespace, indentation, punctuation) for old_string from that read. Do not paraphrase or reformat.`,
587562
+ ``,
587563
+ ` (b) USE THE INLINE SNIPPET: Recent edit failures already include a "closest match" snippet showing the actual current content near where you tried to edit. Read that snippet in your last error message and use its content verbatim as old_string.`,
587564
+ ``,
587565
+ ` (c) REPLACE_ALL: If you want a global rename, set replace_all=true and the uniqueness check is bypassed.`,
587566
+ ``,
587567
+ ` (d) CONSTRAINED PATCH: If the exact replacement is too brittle, use file_patch with expected_old_content or batch_edit/file_edit against fresh current text. Use file_write only for new files, dry-run proposals, or deliberate hash-guarded full_file_rewrite actions.`,
587568
+ ``,
587569
+ `Do NOT in your next response: call file_edit or batch_edit on ${_efWorstPath} again with another guess at old_string.`
587570
+ ];
587500
587571
  messages2.push({
587501
587572
  role: "system",
587502
587573
  content: [
@@ -587507,17 +587578,7 @@ ${_staleSamples.join("\n")}` : ``,
587507
587578
  ``,
587508
587579
  `Each failure means your old_string did not match the file content. Your remembered version of this file has diverged from what's on disk — likely because an earlier edit succeeded and shifted things, or because you guessed at the file's content.`,
587509
587580
  ``,
587510
- `STOP guessing variants of old_string. Pick ONE of these for your next response:`,
587511
- ``,
587512
- ` (a) FILE_READ + COPY-EXACT: Call file_read on ${_efWorstPath}, then copy the EXACT bytes (whitespace, indentation, punctuation) for old_string from that read. Do not paraphrase or reformat.`,
587513
- ``,
587514
- ` (b) USE THE INLINE SNIPPET: Recent edit failures already include a "closest match" snippet showing the actual current content near where you tried to edit. Read that snippet in your last error message and use its content verbatim as old_string.`,
587515
- ``,
587516
- ` (c) REPLACE_ALL: If you want a global rename, set replace_all=true and the uniqueness check is bypassed.`,
587517
- ``,
587518
- ` (d) CONSTRAINED PATCH: If the exact replacement is too brittle, use file_patch with expected_old_content or batch_edit/file_edit against fresh current text. Use file_write only for new files, dry-run proposals, or deliberate hash-guarded full_file_rewrite actions.`,
587519
- ``,
587520
- `Do NOT in your next response: call file_edit or batch_edit on ${_efWorstPath} again with another guess at old_string.`
587581
+ ..._reg53ChoiceLines
587521
587582
  ].join("\n")
587522
587583
  });
587523
587584
  this.emit({
@@ -589483,6 +589544,7 @@ ${cachedResult}`,
589483
589544
  let validationError = this._validateToolActionReason(resolvedTool?.name ?? tc.name, tc.arguments ?? {});
589484
589545
  if (!validationError) {
589485
589546
  tc.arguments = this._stripToolActionReasonArgs(tc.arguments ?? {});
589547
+ tc.arguments = this._normalizeToolArgsForExecution(resolvedTool?.name ?? tc.name, tc.arguments ?? {});
589486
589548
  validationError = this._validateFileWriteOverwriteContract(resolvedTool?.name ?? tc.name, tc.arguments ?? {}, toolActionReason);
589487
589549
  }
589488
589550
  if (!validationError) {
@@ -593798,7 +593860,17 @@ ${marker}` : marker);
593798
593860
  };
593799
593861
  }
593800
593862
  _extractToolActionReason(args) {
593801
- const raw = args["action_reason"] ?? args["actionReason"] ?? args["justification"];
593863
+ let raw = args["action_reason"] ?? args["actionReason"] ?? args["justification"];
593864
+ if (typeof raw === "string") {
593865
+ const trimmed = raw.trim();
593866
+ if (!trimmed)
593867
+ return null;
593868
+ try {
593869
+ raw = JSON.parse(trimmed);
593870
+ } catch {
593871
+ return null;
593872
+ }
593873
+ }
593802
593874
  if (!raw || typeof raw !== "object" || Array.isArray(raw))
593803
593875
  return null;
593804
593876
  const rec = raw;
@@ -593815,7 +593887,7 @@ ${marker}` : marker);
593815
593887
  if (!this._requiresToolActionReason(toolName))
593816
593888
  return null;
593817
593889
  const raw = args["action_reason"] ?? args["actionReason"] ?? args["justification"];
593818
- if (!raw || typeof raw !== "object" || Array.isArray(raw)) {
593890
+ if (!raw || typeof raw === "string" && !raw.trim()) {
593819
593891
  return [
593820
593892
  "[TOOL ACTION REASON CONTRACT]",
593821
593893
  `Every tool call must include action_reason: { task_anchor, intent, evidence, expected_result, scope }.`,
@@ -593854,6 +593926,39 @@ ${marker}` : marker);
593854
593926
  }
593855
593927
  return changed ? next : args;
593856
593928
  }
593929
+ _normalizeToolArgsForExecution(toolName, args) {
593930
+ if (toolName !== "file_patch")
593931
+ return args;
593932
+ let next = args;
593933
+ const copy = () => {
593934
+ if (next === args)
593935
+ next = { ...args };
593936
+ return next;
593937
+ };
593938
+ const coerceLineNumber = (value2) => {
593939
+ if (typeof value2 === "number")
593940
+ return value2;
593941
+ if (typeof value2 === "string" && /^\d+$/.test(value2.trim())) {
593942
+ return Number(value2.trim());
593943
+ }
593944
+ return value2;
593945
+ };
593946
+ if (next["start_line"] === void 0 && args["line"] !== void 0) {
593947
+ copy()["start_line"] = coerceLineNumber(args["line"]);
593948
+ }
593949
+ if (next["end_line"] === void 0 && args["line_end"] !== void 0) {
593950
+ copy()["end_line"] = coerceLineNumber(args["line_end"]);
593951
+ }
593952
+ if (next["end_line"] === void 0 && args["endLine"] !== void 0) {
593953
+ copy()["end_line"] = coerceLineNumber(args["endLine"]);
593954
+ }
593955
+ for (const key of ["start_line", "end_line"]) {
593956
+ if (typeof next[key] === "string") {
593957
+ copy()[key] = coerceLineNumber(next[key]);
593958
+ }
593959
+ }
593960
+ return next;
593961
+ }
593857
593962
  _validateFileWriteOverwriteContract(toolName, args, actionReason) {
593858
593963
  if (toolName !== "file_write")
593859
593964
  return null;
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.462",
3
+ "version": "1.0.463",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.462",
9
+ "version": "1.0.463",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
@@ -430,9 +430,9 @@
430
430
  }
431
431
  },
432
432
  "node_modules/@helia/utils/node_modules/cborg": {
433
- "version": "5.1.6",
434
- "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.6.tgz",
435
- "integrity": "sha512-apu/mOSODJ98JXBz3cbiv/gAFX4oaCZQQ53+8b4IPjc1wylYxd8eJis87QP7ic4AOE4O02j02jjfUgVZUJIIvA==",
433
+ "version": "5.1.7",
434
+ "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.7.tgz",
435
+ "integrity": "sha512-rGg2MG9zZEUKtKqjkBppIWUecTXf9N1vs1Qru43vJWoDaODhCrtmzdehCaA/aq/c1cPI5A0kPrJ5Tf+jIfhV4w==",
436
436
  "license": "Apache-2.0",
437
437
  "bin": {
438
438
  "cborg": "lib/bin.js"
@@ -461,9 +461,9 @@
461
461
  }
462
462
  },
463
463
  "node_modules/@ipld/dag-cbor/node_modules/cborg": {
464
- "version": "5.1.6",
465
- "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.6.tgz",
466
- "integrity": "sha512-apu/mOSODJ98JXBz3cbiv/gAFX4oaCZQQ53+8b4IPjc1wylYxd8eJis87QP7ic4AOE4O02j02jjfUgVZUJIIvA==",
464
+ "version": "5.1.7",
465
+ "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.7.tgz",
466
+ "integrity": "sha512-rGg2MG9zZEUKtKqjkBppIWUecTXf9N1vs1Qru43vJWoDaODhCrtmzdehCaA/aq/c1cPI5A0kPrJ5Tf+jIfhV4w==",
467
467
  "license": "Apache-2.0",
468
468
  "bin": {
469
469
  "cborg": "lib/bin.js"
@@ -480,9 +480,9 @@
480
480
  }
481
481
  },
482
482
  "node_modules/@ipld/dag-json/node_modules/cborg": {
483
- "version": "5.1.6",
484
- "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.6.tgz",
485
- "integrity": "sha512-apu/mOSODJ98JXBz3cbiv/gAFX4oaCZQQ53+8b4IPjc1wylYxd8eJis87QP7ic4AOE4O02j02jjfUgVZUJIIvA==",
483
+ "version": "5.1.7",
484
+ "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.7.tgz",
485
+ "integrity": "sha512-rGg2MG9zZEUKtKqjkBppIWUecTXf9N1vs1Qru43vJWoDaODhCrtmzdehCaA/aq/c1cPI5A0kPrJ5Tf+jIfhV4w==",
486
486
  "license": "Apache-2.0",
487
487
  "bin": {
488
488
  "cborg": "lib/bin.js"
@@ -4342,9 +4342,9 @@
4342
4342
  }
4343
4343
  },
4344
4344
  "node_modules/ipns/node_modules/cborg": {
4345
- "version": "5.1.6",
4346
- "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.6.tgz",
4347
- "integrity": "sha512-apu/mOSODJ98JXBz3cbiv/gAFX4oaCZQQ53+8b4IPjc1wylYxd8eJis87QP7ic4AOE4O02j02jjfUgVZUJIIvA==",
4345
+ "version": "5.1.7",
4346
+ "resolved": "https://registry.npmjs.org/cborg/-/cborg-5.1.7.tgz",
4347
+ "integrity": "sha512-rGg2MG9zZEUKtKqjkBppIWUecTXf9N1vs1Qru43vJWoDaODhCrtmzdehCaA/aq/c1cPI5A0kPrJ5Tf+jIfhV4w==",
4348
4348
  "license": "Apache-2.0",
4349
4349
  "bin": {
4350
4350
  "cborg": "lib/bin.js"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.462",
3
+ "version": "1.0.463",
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",