omnius 1.0.383 → 1.0.384

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
@@ -569521,8 +569521,8 @@ var init_focusSupervisor = __esm({
569521
569521
  const directive = this.setDirective({
569522
569522
  turn: input.turn,
569523
569523
  state: ignoredManyTimes ? "verify_or_block" : "single_next_action",
569524
- reason: ignoredManyTimes ? `model ignored ${this.ignoredDirectiveStreak} focus directives; report incomplete or ask for help instead of trying another variant` : `model ignored prior directive ${prior.id}; ${prior.reason}`,
569525
- requiredNextAction: ignoredManyTimes ? "report_incomplete" : prior.requiredNextAction,
569524
+ reason: ignoredManyTimes ? `model ignored ${this.ignoredDirectiveStreak} focus directives; take the required recovery action before trying another variant` : `model ignored prior directive ${prior.id}; ${prior.reason}`,
569525
+ requiredNextAction: prior.requiredNextAction,
569526
569526
  forbiddenActionFamilies: unique2([
569527
569527
  ...prior.forbiddenActionFamilies,
569528
569528
  family
@@ -569626,7 +569626,7 @@ var init_focusSupervisor = __esm({
569626
569626
  turn: input.turn,
569627
569627
  state: "forced_replan",
569628
569628
  reason: `same ${input.toolName} failure family repeated ${next.count} times: ${next.sample}`,
569629
- requiredNextAction: input.toolName === "shell" ? "read_authoritative_target" : "update_todos",
569629
+ requiredNextAction: input.toolName === "shell" ? "edit_different_target" : "update_todos",
569630
569630
  forbiddenActionFamilies: [actionFamily(input.toolName, input.args)]
569631
569631
  });
569632
569632
  }
@@ -572951,6 +572951,7 @@ ${parts.join("\n")}
572951
572951
  memoryPrefix: options2?.memoryPrefix ?? "",
572952
572952
  memoryPrefixHash: options2?.memoryPrefixHash ?? "",
572953
572953
  stateDir: options2?.stateDir ?? "",
572954
+ surface: options2?.surface ?? "tui",
572954
572955
  artifactMode: options2?.artifactMode ?? "user-task",
572955
572956
  disablePersistentMemory: options2?.disablePersistentMemory ?? false,
572956
572957
  disableCodebaseMap: options2?.disableCodebaseMap ?? false,
@@ -573302,16 +573303,21 @@ ${parts.join("\n")}
573302
573303
  // -------------------------------------------------------------------------
573303
573304
  /** Infer the surface identifier from runner configuration and dynamic context. */
573304
573305
  _inferSurface() {
573305
- const ctx3 = this._stickyDynamicContext || this.options.dynamicContext || "";
573306
- if (/Admin Capability/i.test(ctx3) || /telegram-admin/i.test(ctx3))
573307
- return "telegram-admin";
573308
- if (/Telegram|telegram|Voice Soul/i.test(ctx3) || this.options.stateDir)
573309
- return "telegram-public";
573310
- if (/api/i.test(ctx3))
573311
- return "api";
573312
- if (/background/i.test(ctx3))
573313
- return "background";
573314
- return "tui";
573306
+ return this.options.surface;
573307
+ }
573308
+ _isTelegramSurface() {
573309
+ return this.options.surface === "telegram-public" || this.options.surface === "telegram-admin";
573310
+ }
573311
+ stickyDynamicContextForActiveSurface() {
573312
+ const ctx3 = this._stickyDynamicContext.trim();
573313
+ if (!ctx3)
573314
+ return "";
573315
+ if (this._isTelegramSurface())
573316
+ return ctx3;
573317
+ const voiceSoul = this.extractDynamicMarkdownBlock(ctx3, "## Voice Soul Context", 6e3);
573318
+ if (!voiceSoul)
573319
+ return "";
573320
+ return /Telegram|telegram|Public Telegram|Admin Capability/i.test(voiceSoul) ? "" : voiceSoul;
573315
573321
  }
573316
573322
  /**
573317
573323
  * Build structured context via the context engine.
@@ -587072,10 +587078,11 @@ ${postCompactRestore.join("\n")}`);
587072
587078
  [Ephemeral skill-pack restore — current run only, do not persist]
587073
587079
  ${this._ephemeralSkillPackContext}
587074
587080
  Use skill_extract for targeted skill unpacking; do not load full skills into the main context unless necessary.` : "";
587075
- const stickyDynamicContextReminder = this._stickyDynamicContext ? `
587081
+ const scopedStickyDynamicContext = this.stickyDynamicContextForActiveSurface();
587082
+ const stickyDynamicContextReminder = scopedStickyDynamicContext ? `
587076
587083
 
587077
587084
  [Sticky dynamic context restore — surface/persona anchors]
587078
- ${this._stickyDynamicContext}` : "";
587085
+ ${scopedStickyDynamicContext}` : "";
587079
587086
  const compactionMsg = {
587080
587087
  role: "system",
587081
587088
  // WO-CE-03: XML tags for structural clarity on small/medium models
@@ -587092,7 +587099,7 @@ ${fullSummary}
587092
587099
  this.persistCheckpoint(fullSummary);
587093
587100
  let narrowedHead = [...head];
587094
587101
  const EVIDENCE_RULE_COMPACT = `EVIDENCE RULE (PRIORITY 0): never claim something works or is true unless a tool result you saw this turn proves it. A command succeeding only means it ran — not that the intended effect happened; verify the end-state directly before claiming it. A negative, empty, or error result means failed or absent — report it, never explain it away with an untested theory. Never describe how you got a result (tool, command, or source) unless you actually used it. Do not assert relationships the output does not show. Say "I could not verify X" when it is unproven — that is the correct answer, not a guess.`;
587095
- const telegramPersonaHead = /Telegram|Voice Soul Context|Public Telegram voice profile/.test(this._stickyDynamicContext) ? `You are Omnius replying through Telegram. Your visible assistant text is sent to Telegram; keep it concise, scoped, and user-facing. Do not emit scratch notes, router decisions, internal status, or no_reply text. Use available tools when needed and call task_complete when the Telegram run is complete.
587102
+ const telegramPersonaHead = this._isTelegramSurface() && /Telegram|Voice Soul Context|Public Telegram voice profile/.test(scopedStickyDynamicContext) ? `You are Omnius replying through Telegram. Your visible assistant text is sent to Telegram; keep it concise, scoped, and user-facing. Do not emit scratch notes, router decisions, internal status, or no_reply text. Use available tools when needed and call task_complete when the Telegram run is complete.
587096
587103
 
587097
587104
  ${EVIDENCE_RULE_COMPACT}
587098
587105
 
@@ -587247,7 +587254,12 @@ ${content.slice(0, 8e3)}
587247
587254
  while (trimmedRecent.length > 1 && trimmedRecent[0]?.role === "tool") {
587248
587255
  trimmedRecent = trimmedRecent.slice(1);
587249
587256
  }
587250
- result = [...head, compactionMsg, ...stickyToKeep, ...trimmedRecent];
587257
+ result = [
587258
+ ...narrowedHead,
587259
+ compactionMsg,
587260
+ ...stickyToKeep,
587261
+ ...trimmedRecent
587262
+ ];
587251
587263
  }
587252
587264
  if (trimmedRecent.length < filteredRecent.length) {
587253
587265
  this.emit({
@@ -680834,6 +680846,7 @@ ${conversationStream}`
680834
680846
  );
680835
680847
  const requestTimeoutMs = config.timeoutMs ?? 3e5;
680836
680848
  const runner = new AgenticRunner(backend, {
680849
+ surface: isAdminDM || isAdminGroup ? "telegram-admin" : "telegram-public",
680837
680850
  // Admin DMs are operator-directed work sessions. A hard turn cap turns
680838
680851
  // active tool progress into a false "completed" Telegram panel when the
680839
680852
  // model has not reached task_complete yet. Public/group runs stay bounded.
@@ -719721,6 +719734,7 @@ Only tools allowed by this profile are visible and executable.`
719721
719734
  ].filter(Boolean).join("");
719722
719735
  }
719723
719736
  const runner = new AgenticRunner(backend, {
719737
+ surface: "tui",
719724
719738
  maxTurns: realtimeEnabled ? Math.min(effectiveMaxTurns, 8) : effectiveMaxTurns,
719725
719739
  maxTokens: realtimeEnabled ? 512 : 16384,
719726
719740
  temperature: realtimeEnabled ? 0.6 : 0,
@@ -722715,6 +722729,7 @@ Respond to the scoped Telegram target when complete.`
722715
722729
  }
722716
722730
  const modelTier2 = getModelTier(currentConfig.model);
722717
722731
  const runner = new AgenticRunner(backend, {
722732
+ surface: "background",
722718
722733
  // 0 = unlimited; halt only on task_complete or abort. Background
722719
722734
  // prompts may legitimately need many turns; an arbitrary cap stalls
722720
722735
  // them mid-task.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.383",
3
+ "version": "1.0.384",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.383",
9
+ "version": "1.0.384",
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.383",
3
+ "version": "1.0.384",
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",