omnius 1.0.535 → 1.0.536

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
@@ -567114,13 +567114,103 @@ function normalizeShellCommand(command) {
567114
567114
  function splitConjunctiveVerifyCommand(command) {
567115
567115
  return normalizeShellCommand(command).split(/\s+&&\s+/).map((part) => part.trim()).filter(Boolean);
567116
567116
  }
567117
+ function stripVerifierFallbackSuffix(command) {
567118
+ let quote2 = null;
567119
+ for (let i2 = 0; i2 < command.length - 1; i2++) {
567120
+ const ch = command[i2];
567121
+ if (quote2) {
567122
+ if (ch === quote2 && command[i2 - 1] !== "\\")
567123
+ quote2 = null;
567124
+ continue;
567125
+ }
567126
+ if (ch === "'" || ch === '"') {
567127
+ quote2 = ch;
567128
+ continue;
567129
+ }
567130
+ if (ch === "|" && command[i2 + 1] === "|") {
567131
+ return command.slice(0, i2).trim();
567132
+ }
567133
+ }
567134
+ return command.trim();
567135
+ }
567136
+ function stageHeadProgram(stage2) {
567137
+ const tokens = stage2.trim().split(/\s+/);
567138
+ let i2 = 0;
567139
+ while (i2 < tokens.length) {
567140
+ const token = tokens[i2];
567141
+ if (/^[A-Za-z_][A-Za-z0-9_]*=/.test(token)) {
567142
+ i2++;
567143
+ continue;
567144
+ }
567145
+ const base3 = token.replace(/^["']|["']$/g, "").split("/").pop() ?? token;
567146
+ if (STAGE_PREFIX_PROGRAMS.has(base3)) {
567147
+ i2++;
567148
+ if (base3 === "timeout" && /^[0-9]+[smhd]?$/.test(tokens[i2] ?? ""))
567149
+ i2++;
567150
+ continue;
567151
+ }
567152
+ return base3.toLowerCase();
567153
+ }
567154
+ return null;
567155
+ }
567156
+ function commandIsPureReadOnlyPipeline(command) {
567157
+ const stages = [];
567158
+ let current = "";
567159
+ let quote2 = null;
567160
+ const raw = command.trim();
567161
+ if (!raw)
567162
+ return false;
567163
+ for (let i2 = 0; i2 < raw.length; i2++) {
567164
+ const ch = raw[i2];
567165
+ if (quote2) {
567166
+ current += ch;
567167
+ if (ch === quote2 && raw[i2 - 1] !== "\\")
567168
+ quote2 = null;
567169
+ continue;
567170
+ }
567171
+ if (ch === "'" || ch === '"') {
567172
+ quote2 = ch;
567173
+ current += ch;
567174
+ continue;
567175
+ }
567176
+ if (ch === "&" && raw[i2 + 1] === "&") {
567177
+ stages.push(current);
567178
+ current = "";
567179
+ i2++;
567180
+ continue;
567181
+ }
567182
+ if (ch === "|") {
567183
+ stages.push(current);
567184
+ current = "";
567185
+ if (raw[i2 + 1] === "|")
567186
+ i2++;
567187
+ continue;
567188
+ }
567189
+ if (ch === ";") {
567190
+ stages.push(current);
567191
+ current = "";
567192
+ continue;
567193
+ }
567194
+ if (ch === "$" && raw[i2 + 1] === "(")
567195
+ return false;
567196
+ if (ch === "`")
567197
+ return false;
567198
+ current += ch;
567199
+ }
567200
+ stages.push(current);
567201
+ const meaningful = stages.map((s2) => s2.trim()).filter(Boolean);
567202
+ if (meaningful.length === 0)
567203
+ return false;
567204
+ return meaningful.every((stage2) => {
567205
+ const head = stageHeadProgram(stage2);
567206
+ return head !== null && PURE_READER_PROGRAMS.has(head);
567207
+ });
567208
+ }
567117
567209
  function commandReliablySatisfiesVerifyCommand(observedCommand, verifyCommand) {
567118
567210
  const observed = normalizeShellCommand(observedCommand);
567119
- const expected = normalizeShellCommand(verifyCommand);
567211
+ const expected = normalizeShellCommand(stripVerifierFallbackSuffix(verifyCommand));
567120
567212
  if (!observed || !expected)
567121
567213
  return false;
567122
- if (expected.includes(" || "))
567123
- return false;
567124
567214
  if (observed === expected)
567125
567215
  return true;
567126
567216
  if (observed.startsWith(`${expected} && `) && !observed.includes(" || ")) {
@@ -567141,9 +567231,93 @@ function verifyCommandSatisfiedByShellHistory(verifyCommand, history) {
567141
567231
  return false;
567142
567232
  return parts.every((part) => successful.some((entry) => commandReliablySatisfiesVerifyCommand(entry.command, part)));
567143
567233
  }
567234
+ var PURE_READER_PROGRAMS, STAGE_PREFIX_PROGRAMS;
567144
567235
  var init_verificationCommand = __esm({
567145
567236
  "packages/orchestrator/dist/verificationCommand.js"() {
567146
567237
  "use strict";
567238
+ PURE_READER_PROGRAMS = /* @__PURE__ */ new Set([
567239
+ "cat",
567240
+ "tac",
567241
+ "tail",
567242
+ "head",
567243
+ "less",
567244
+ "more",
567245
+ "grep",
567246
+ "egrep",
567247
+ "fgrep",
567248
+ "rg",
567249
+ "ag",
567250
+ "awk",
567251
+ "gawk",
567252
+ "sed",
567253
+ "gsed",
567254
+ "sort",
567255
+ "uniq",
567256
+ "wc",
567257
+ "cut",
567258
+ "tr",
567259
+ "column",
567260
+ "echo",
567261
+ "printf",
567262
+ "ls",
567263
+ "dir",
567264
+ "find",
567265
+ "fd",
567266
+ "stat",
567267
+ "file",
567268
+ "strings",
567269
+ "hexdump",
567270
+ "xxd",
567271
+ "od",
567272
+ "jq",
567273
+ "yq",
567274
+ "tee",
567275
+ "dirname",
567276
+ "basename",
567277
+ "readlink",
567278
+ "realpath",
567279
+ "pwd",
567280
+ "date",
567281
+ "true",
567282
+ "false",
567283
+ "test",
567284
+ "type",
567285
+ "which",
567286
+ "whoami",
567287
+ "env",
567288
+ "printenv",
567289
+ "sleep",
567290
+ "cd",
567291
+ "diff",
567292
+ "cmp",
567293
+ "md5sum",
567294
+ "sha1sum",
567295
+ "sha256sum",
567296
+ "du",
567297
+ "df",
567298
+ "nl",
567299
+ "paste",
567300
+ "join",
567301
+ "comm",
567302
+ "expand",
567303
+ "unexpand",
567304
+ "fold",
567305
+ "rev",
567306
+ "seq",
567307
+ "xargs"
567308
+ ]);
567309
+ STAGE_PREFIX_PROGRAMS = /* @__PURE__ */ new Set([
567310
+ "sudo",
567311
+ "command",
567312
+ "builtin",
567313
+ "nice",
567314
+ "ionice",
567315
+ "time",
567316
+ "timeout",
567317
+ "nohup",
567318
+ "stdbuf",
567319
+ "unbuffer"
567320
+ ]);
567147
567321
  }
567148
567322
  });
567149
567323
 
@@ -589283,8 +589457,9 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589283
589457
  return this._declaredVerifierCommand;
589284
589458
  }
589285
589459
  const diagnostics = parseCompilerDiagnostics(output);
589286
- if (diagnostics.length > 0 && this._shellResultLooksLikeVerification({ command: trimmed }, { success: false, output })) {
589287
- return trimmed;
589460
+ if (diagnostics.length > 0 && !commandIsPureReadOnlyPipeline(trimmed)) {
589461
+ const latched = stripVerifierFallbackSuffix(trimmed);
589462
+ return latched || trimmed;
589288
589463
  }
589289
589464
  return null;
589290
589465
  }
@@ -589294,19 +589469,68 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589294
589469
  return false;
589295
589470
  return commandReliablySatisfiesVerifyCommand(command.trim(), state.verifierCommand);
589296
589471
  }
589472
+ /**
589473
+ * When a tool result was triaged for size (full payload saved to
589474
+ * `.omnius/tool-results/<hash>.txt`), append the saved payload so
589475
+ * diagnostics parsing sees the complete output. Without this, a large
589476
+ * failed build's `file:line:col: error:` lines can be cut out of the
589477
+ * triage envelope and the run never registers as a verifier run.
589478
+ * Best effort and bounded — never throws into the loop.
589479
+ */
589480
+ _expandTriagedPayloadForDiagnostics(text2) {
589481
+ if (!text2 || !text2.includes(TRIAGE_SAVED_PATH_MARKER))
589482
+ return text2;
589483
+ const MAX_PAYLOAD_BYTES = 1e6;
589484
+ const MAX_FILES2 = 2;
589485
+ const extras = [];
589486
+ let searchFrom = 0;
589487
+ for (let i2 = 0; i2 < MAX_FILES2; i2++) {
589488
+ const markerAt = text2.indexOf(TRIAGE_SAVED_PATH_MARKER, searchFrom);
589489
+ if (markerAt === -1)
589490
+ break;
589491
+ const pathStart = markerAt + TRIAGE_SAVED_PATH_MARKER.length;
589492
+ const restOfLine = text2.slice(pathStart, text2.indexOf("\n", pathStart) === -1 ? void 0 : text2.indexOf("\n", pathStart));
589493
+ searchFrom = pathStart;
589494
+ const endIdx = (() => {
589495
+ const emDash = restOfLine.indexOf(" — ");
589496
+ if (emDash !== -1)
589497
+ return emDash;
589498
+ const bracket = restOfLine.indexOf("]");
589499
+ return bracket !== -1 ? bracket : restOfLine.length;
589500
+ })();
589501
+ const savedPath = restOfLine.slice(0, endIdx).trim();
589502
+ if (!savedPath)
589503
+ continue;
589504
+ try {
589505
+ if (!_fsExistsSync(savedPath))
589506
+ continue;
589507
+ const stat9 = _fsStatSync(savedPath);
589508
+ if (!stat9.isFile())
589509
+ continue;
589510
+ const raw = _fsReadFileSync(savedPath, "utf8");
589511
+ extras.push(raw.length > MAX_PAYLOAD_BYTES ? raw.slice(0, MAX_PAYLOAD_BYTES) : raw);
589512
+ } catch {
589513
+ }
589514
+ }
589515
+ if (extras.length === 0)
589516
+ return text2;
589517
+ return `${text2}
589518
+ ${extras.join("\n")}`;
589519
+ }
589297
589520
  _observeCompileVerifierResult(input) {
589298
589521
  const diagnostics = rankCompilerDiagnostics(parseCompilerDiagnostics(input.output));
589522
+ const verifierCommand = stripVerifierFallbackSuffix(input.verifierCommand) || input.verifierCommand.trim();
589299
589523
  const previousDiagnostics = this._lastDeclaredVerifierDiagnostics;
589300
- this._declaredVerifierCommand = input.verifierCommand;
589524
+ this._declaredVerifierCommand = verifierCommand;
589301
589525
  this._lastDeclaredVerifierOutput = input.output;
589302
589526
  this._lastDeclaredVerifierDiagnostics = diagnostics;
589303
589527
  if (!this._compileFixLoop && diagnostics.length === 0)
589304
589528
  return null;
589305
- const verifierFingerprint = compileFixVerifierFingerprint(input.verifierCommand);
589529
+ const verifierFingerprint = compileFixVerifierFingerprint(verifierCommand);
589306
589530
  const existingCards = this._compileFixLoop?.cards ?? [];
589307
589531
  const cards = diagnostics.length > 0 ? buildCompileFixCards({
589308
589532
  diagnostics,
589309
- verifierCommand: input.verifierCommand,
589533
+ verifierCommand,
589310
589534
  turn: input.turn,
589311
589535
  existingCards
589312
589536
  }) : existingCards;
@@ -589315,22 +589539,25 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589315
589539
  existingCards,
589316
589540
  observedCards: cards,
589317
589541
  diagnostics,
589318
- verifierCommand: input.verifierCommand,
589542
+ verifierCommand,
589319
589543
  turn: input.turn,
589320
589544
  verifierPassed: input.success && diagnostics.length === 0
589321
589545
  });
589322
589546
  this._compileFixLoop = {
589323
589547
  active: diagnostics.length > 0 || nextCards.some((card) => card.status !== "verified"),
589324
- verifierCommand: input.verifierCommand,
589548
+ verifierCommand,
589325
589549
  verifierFingerprint,
589326
589550
  verifierDirtySinceTurn: null,
589327
589551
  lastVerifierRunTurn: input.turn,
589328
589552
  lastVerifierPassedTurn: input.success && diagnostics.length === 0 ? input.turn : null,
589329
589553
  lastMutationTurn: this._compileFixLoop?.lastMutationTurn ?? null,
589330
- cards: nextCards
589554
+ cards: nextCards,
589555
+ // A live verifier run resolves the gate's demand — the block streak
589556
+ // is over regardless of pass/fail.
589557
+ preflightBlockStreak: 0
589331
589558
  };
589332
589559
  this._mirrorCompileFixCardsToWorkboard(nextCards, {
589333
- command: input.verifierCommand,
589560
+ command: verifierCommand,
589334
589561
  success: input.success && diagnostics.length === 0,
589335
589562
  turn: input.turn,
589336
589563
  beforeDiagnosticCount: previousDiagnostics.length,
@@ -589342,7 +589569,7 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589342
589569
  if (input.success && diagnostics.length === 0) {
589343
589570
  this.emit({
589344
589571
  type: "status",
589345
- content: `compile_error_fix_loop: verifier passed (${input.verifierCommand}); compile cards verified`,
589572
+ content: `compile_error_fix_loop: verifier passed (${verifierCommand}); compile cards verified`,
589346
589573
  turn: input.turn,
589347
589574
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
589348
589575
  });
@@ -589361,7 +589588,7 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589361
589588
  }
589362
589589
  this.emit({
589363
589590
  type: "status",
589364
- content: `compile_error_fix_loop_started: verifierCommand=${input.verifierCommand}; cardId=${top.id}; diagnosticFingerprint=${top.diagnostic.fingerprint}; afterDiagnosticCount=${diagnostics.length}`,
589591
+ content: `compile_error_fix_loop_started: verifierCommand=${verifierCommand}; cardId=${top.id}; diagnosticFingerprint=${top.diagnostic.fingerprint}; afterDiagnosticCount=${diagnostics.length}`,
589365
589592
  turn: input.turn,
589366
589593
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
589367
589594
  });
@@ -589561,14 +589788,7 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589561
589788
  if (!state?.active)
589562
589789
  return;
589563
589790
  const normalized = paths.map((p2) => this._normalizeEvidencePath(p2)).filter(Boolean);
589564
- const owned = state.cards.flatMap((card) => card.ownedFiles);
589565
- const todos = this.readSessionTodos() || [];
589566
- const artifacts = todos.flatMap((todo) => Array.isArray(todo.declaredArtifacts) ? todo.declaredArtifacts.filter((p2) => typeof p2 === "string") : []);
589567
- const relevant = normalized.length === 0 || normalized.some((pathValue) => {
589568
- if (pathValue.startsWith(".omnius/"))
589569
- return false;
589570
- return owned.some((ownedPath) => this._pathsOverlapForVerifier(pathValue, ownedPath)) || artifacts.some((artifactPath) => this._pathsOverlapForVerifier(pathValue, artifactPath)) || /\.(ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|kt|c|cc|cpp|cxx|h|hpp|hh|hxx|ino)$/i.test(pathValue);
589571
- });
589791
+ const relevant = normalized.length === 0 || this._compileFixPathsTouchProjectSources(normalized, state);
589572
589792
  if (!relevant)
589573
589793
  return;
589574
589794
  state.verifierDirtySinceTurn = turn;
@@ -589595,6 +589815,24 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589595
589815
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
589596
589816
  });
589597
589817
  }
589818
+ /**
589819
+ * True when any of the given normalized paths touches project source:
589820
+ * files owned by compile-fix cards, declared todo artifacts, or files
589821
+ * with a source-code extension. Build side effects (logs, artifacts,
589822
+ * `.omnius/` bookkeeping) do not count.
589823
+ */
589824
+ _compileFixPathsTouchProjectSources(normalizedPaths, state) {
589825
+ const owned = state.cards.flatMap((card) => card.ownedFiles);
589826
+ const todos = this.readSessionTodos() || [];
589827
+ const artifacts = todos.flatMap((todo) => Array.isArray(todo.declaredArtifacts) ? todo.declaredArtifacts.filter((p2) => typeof p2 === "string") : []);
589828
+ return normalizedPaths.some((pathValue) => {
589829
+ if (pathValue.startsWith(".omnius/"))
589830
+ return false;
589831
+ return owned.some((ownedPath) => this._pathsOverlapForVerifier(pathValue, ownedPath)) || artifacts.some((artifactPath) => this._pathsOverlapForVerifier(pathValue, artifactPath)) || /\.(ts|tsx|js|jsx|mjs|cjs|py|go|rs|java|kt|c|cc|cpp|cxx|h|hpp|hh|hxx|ino)$/i.test(pathValue);
589832
+ });
589833
+ }
589834
+ /** Consecutive preflight blocks before the gate yields instead of blocking. */
589835
+ static COMPILE_FIX_GATE_YIELD_AFTER = 3;
589598
589836
  _compileFixLoopPreflightBlock(toolName, args, turn, shellLikelyMutatesFilesystem) {
589599
589837
  const state = this._compileFixLoop;
589600
589838
  if (!state?.active)
@@ -589605,29 +589843,62 @@ Pick the SMALLEST concrete deliverable from the spec — typically the project e
589605
589843
  if (toolName === "shell") {
589606
589844
  const command = String(args["command"] ?? args["cmd"] ?? "").trim();
589607
589845
  if (commandReliablySatisfiesVerifyCommand(command, state.verifierCommand)) {
589846
+ state.preflightBlockStreak = 0;
589608
589847
  return null;
589609
589848
  }
589610
589849
  if (!shellLikelyMutatesFilesystem)
589611
589850
  return null;
589851
+ const extraction = extractShellMutationPaths(command, {
589852
+ workingDir: this.authoritativeWorkingDirectory()
589853
+ });
589854
+ const mutationPaths = extraction.paths.map((p2) => this._normalizeEvidencePath(p2)).filter(Boolean);
589855
+ if (mutationPaths.length === 0 || !this._compileFixPathsTouchProjectSources(mutationPaths, state)) {
589856
+ return null;
589857
+ }
589612
589858
  } else if (!this._isProjectEditTool(toolName)) {
589613
589859
  return null;
589614
589860
  }
589861
+ const yieldAfter = _AgenticRunner.COMPILE_FIX_GATE_YIELD_AFTER;
589862
+ const streak = (state.preflightBlockStreak ?? 0) + 1;
589863
+ if (streak > yieldAfter) {
589864
+ state.preflightBlockStreak = 0;
589865
+ this.emit({
589866
+ type: "status",
589867
+ content: `compile_error_verifier_dirty: gate yielded to ${toolName} after ${yieldAfter} consecutive blocks at turn ${turn}`,
589868
+ turn,
589869
+ timestamp: (/* @__PURE__ */ new Date()).toISOString()
589870
+ });
589871
+ return {
589872
+ kind: "yield",
589873
+ notice: [
589874
+ `[COMPILE FIX GATE YIELDED — verifier still required]`,
589875
+ `The verifier-required gate blocked ${yieldAfter} consecutive tool calls and is yielding so work can continue.`,
589876
+ `Verifier evidence is still stale. Run the verifier as your next evidence step:`,
589877
+ ` ${state.verifierCommand}`,
589878
+ `Any real build/test command whose output shows current compiler diagnostics is also accepted as the live verifier.`,
589879
+ `task_complete remains blocked until a verifier run passes after the last mutation.`
589880
+ ].join("\n")
589881
+ };
589882
+ }
589883
+ state.preflightBlockStreak = streak;
589615
589884
  const message2 = [
589616
589885
  `[COMPILE ERROR FIX LOOP BLOCKED — declared verifier required]`,
589617
589886
  `A compile-fix card was patched, so the next mutation/evidence step must be the live verifier.`,
589618
- `verifierCommand: ${state.verifierCommand}`,
589887
+ `Run this now: ${state.verifierCommand}`,
589888
+ `Any real build/test command whose output shows current compiler diagnostics is also accepted.`,
589619
589889
  `dirtySinceTurn: ${state.verifierDirtySinceTurn}`,
589620
589890
  `lastMutationTurn: ${state.lastMutationTurn}`,
589621
589891
  `lastVerifierRunTurn: ${state.lastVerifierRunTurn}`,
589622
- `blockedTool: ${toolName}`
589892
+ `blockedTool: ${toolName}`,
589893
+ `consecutiveBlocks: ${streak}/${yieldAfter} (gate yields after ${yieldAfter})`
589623
589894
  ].join("\n");
589624
589895
  this.emit({
589625
589896
  type: "status",
589626
- content: `compile_error_verifier_dirty: blocked ${toolName} at turn ${turn}`,
589897
+ content: `compile_error_verifier_dirty: blocked ${toolName} at turn ${turn} (${streak}/${yieldAfter})`,
589627
589898
  turn,
589628
589899
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
589629
589900
  });
589630
- return message2;
589901
+ return { kind: "block", message: message2 };
589631
589902
  }
589632
589903
  _compileFixLoopCompletionBlocker(turn) {
589633
589904
  const state = this._compileFixLoop;
@@ -589985,6 +590256,8 @@ ${modelVisible}` : modelVisible || result.error || displayOutput || "";
589985
590256
  if (!command.trim())
589986
590257
  return false;
589987
590258
  void result;
590259
+ if (commandIsPureReadOnlyPipeline(command))
590260
+ return false;
589988
590261
  return /\b(test|tests|vitest|jest|pytest|go test|cargo test|npm test|pnpm test|yarn test|typecheck|tsc|build|verify|verification|check)\b/i.test(command);
589989
590262
  }
589990
590263
  _shouldSuppressCompletionDiscoveryEvidence(toolName, result, targetPaths) {
@@ -598420,8 +598693,10 @@ ${cachedResult}`,
598420
598693
  };
598421
598694
  }
598422
598695
  }
598423
- const compileLoopPreflightBlock = !repeatShortCircuit ? this._compileFixLoopPreflightBlock(tc.name, tc.arguments ?? {}, turn, shellLikelyMutatesFilesystem) : null;
598424
- if (compileLoopPreflightBlock) {
598696
+ const compileLoopPreflight = !repeatShortCircuit ? this._compileFixLoopPreflightBlock(tc.name, tc.arguments ?? {}, turn, shellLikelyMutatesFilesystem) : null;
598697
+ if (compileLoopPreflight?.kind === "yield") {
598698
+ pushSoftInjection("system", compileLoopPreflight.notice);
598699
+ } else if (compileLoopPreflight) {
598425
598700
  this.emit({
598426
598701
  type: "tool_call",
598427
598702
  toolName: tc.name,
@@ -598433,7 +598708,7 @@ ${cachedResult}`,
598433
598708
  type: "tool_result",
598434
598709
  toolName: tc.name,
598435
598710
  success: false,
598436
- content: compileLoopPreflightBlock.slice(0, 120),
598711
+ content: compileLoopPreflight.message.slice(0, 120),
598437
598712
  turn,
598438
598713
  timestamp: (/* @__PURE__ */ new Date()).toISOString()
598439
598714
  });
@@ -598443,9 +598718,9 @@ ${cachedResult}`,
598443
598718
  });
598444
598719
  return {
598445
598720
  tc,
598446
- output: compileLoopPreflightBlock,
598721
+ output: compileLoopPreflight.message,
598447
598722
  success: false,
598448
- systemGuidance: compileLoopPreflightBlock
598723
+ systemGuidance: compileLoopPreflight.message
598449
598724
  };
598450
598725
  }
598451
598726
  this.emit({
@@ -600037,8 +600312,7 @@ ${structuralGuardGuidance}` : structuralGuardGuidance;
600037
600312
  }
600038
600313
  if (tc.name === "shell" && result.runtimeAuthored !== true) {
600039
600314
  const shellCommand = String(tc.arguments?.["command"] ?? tc.arguments?.["cmd"] ?? "");
600040
- const compileOutput = `${result.output ?? ""}
600041
- ${result.error ?? ""}`;
600315
+ const compileOutput = this._expandTriagedPayloadForDiagnostics([result.output, result.llmContent, result.error].filter((part) => typeof part === "string" && part.length > 0).join("\n"));
600042
600316
  const verifierCommand = this._declaredVerifierCommandForShell(shellCommand, compileOutput);
600043
600317
  if (verifierCommand) {
600044
600318
  const compileGuidance = this._observeCompileVerifierResult({
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.535",
3
+ "version": "1.0.536",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.535",
9
+ "version": "1.0.536",
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.535",
3
+ "version": "1.0.536",
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",