omnius 1.0.597 → 1.0.598

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
@@ -691887,9 +691887,9 @@ function buildCommandDef(name10, signatures) {
691887
691887
  const argsHint = inferArgsHint(signatures[0]?.signature ?? `/${name10}`);
691888
691888
  const surfaces = {
691889
691889
  tui: true,
691890
- rest: status === "implemented" && !["quit", "exit"].includes(name10) && !safety.destructive && !safety.secretBearing && !REST_BLOCKED.has(name10),
691891
- gateway: status === "implemented" && !safety.destructive && !safety.secretBearing,
691892
- agentTool: status === "implemented" && !safety.userOnly && !safety.destructive && !safety.secretBearing && !safety.profileGated
691890
+ rest: status === "implemented" && !["quit", "exit"].includes(name10) && !safety.destructive && !safety.secretBearing && !REST_BLOCKED.has(name10) && !LOCAL_TUI_ONLY.has(name10),
691891
+ gateway: status === "implemented" && !safety.destructive && !safety.secretBearing && !LOCAL_TUI_ONLY.has(name10),
691892
+ agentTool: status === "implemented" && !safety.userOnly && !safety.destructive && !safety.secretBearing && !safety.profileGated && !LOCAL_TUI_ONLY.has(name10)
691893
691893
  };
691894
691894
  return {
691895
691895
  name: name10,
@@ -691924,7 +691924,7 @@ function inferArgsHint(signature) {
691924
691924
  function normalizeCommandName(name10) {
691925
691925
  return name10.replace(/^\//, "").trim().toLowerCase();
691926
691926
  }
691927
- var COMMAND_SIGNATURES, PLANNED_SIGNATURES, CATEGORY_OVERRIDES, ALIASES, USER_ONLY, DESTRUCTIVE, NETWORKED, SECRET_BEARING, PROFILE_GATED, SELF_MODIFY_ALLOWED, REST_BLOCKED, TELEGRAM_PUBLIC_BOT_COMMANDS, CANONICAL_BY_ALIAS, DYNAMIC_COMMANDS, SLASH_COMMANDS;
691927
+ var COMMAND_SIGNATURES, PLANNED_SIGNATURES, CATEGORY_OVERRIDES, ALIASES, USER_ONLY, DESTRUCTIVE, NETWORKED, SECRET_BEARING, PROFILE_GATED, SELF_MODIFY_ALLOWED, REST_BLOCKED, LOCAL_TUI_ONLY, TELEGRAM_PUBLIC_BOT_COMMANDS, CANONICAL_BY_ALIAS, DYNAMIC_COMMANDS, SLASH_COMMANDS;
691928
691928
  var init_command_registry = __esm({
691929
691929
  "packages/cli/src/tui/command-registry.ts"() {
691930
691930
  COMMAND_SIGNATURES = [
@@ -691957,6 +691957,12 @@ var init_command_registry = __esm({
691957
691957
  ["/ollama cleanup --execute", "Terminate guarded stale Ollama pool runners"],
691958
691958
  ["/mcp", "Show MCP server/tool status and controls"],
691959
691959
  ["/mcp reload", "Reload MCP servers and tools"],
691960
+ ["/indicator", "Start the native system indicator and report readiness"],
691961
+ ["/indicator start", "Start the native system indicator and report readiness"],
691962
+ ["/indicator status", "Report native system indicator readiness and daemon health"],
691963
+ ["/tray", "Alias for /indicator"],
691964
+ ["/tray start", "Alias for /indicator start"],
691965
+ ["/tray status", "Alias for /indicator status"],
691960
691966
  ["/update", "Check for updates and auto-install"],
691961
691967
  ["/upgrade", "Alias for /update"],
691962
691968
  ["/update auto", "Enable auto-update after task completion (default)"],
@@ -692617,6 +692623,7 @@ var init_command_registry = __esm({
692617
692623
  scheduler: "runtime",
692618
692624
  reminder: "runtime",
692619
692625
  daemon: "runtime",
692626
+ indicator: "ui",
692620
692627
  apikey: "secret",
692621
692628
  key: "secret",
692622
692629
  secrets: "secret",
@@ -692667,6 +692674,7 @@ var init_command_registry = __esm({
692667
692674
  setup: ["wizard"],
692668
692675
  mcp: ["mcps"],
692669
692676
  update: ["upgrade"],
692677
+ indicator: ["tray"],
692670
692678
  listen: ["mic"],
692671
692679
  pointcloud: ["points", "pcl", "point"],
692672
692680
  neovim: ["nvim", "vim"],
@@ -692767,6 +692775,7 @@ var init_command_registry = __esm({
692767
692775
  "scheduler",
692768
692776
  "cron",
692769
692777
  "daemon",
692778
+ "indicator",
692770
692779
  "fortemi",
692771
692780
  "mouse",
692772
692781
  "approve",
@@ -692885,8 +692894,10 @@ var init_command_registry = __esm({
692885
692894
  "rollback",
692886
692895
  "background",
692887
692896
  "bg",
692888
- "paste"
692897
+ "paste",
692898
+ "indicator"
692889
692899
  ]);
692900
+ LOCAL_TUI_ONLY = /* @__PURE__ */ new Set(["indicator"]);
692890
692901
  TELEGRAM_PUBLIC_BOT_COMMANDS = [
692891
692902
  {
692892
692903
  command: "start",
@@ -724392,6 +724403,55 @@ var init_prune_menu = __esm({
724392
724403
  }
724393
724404
  });
724394
724405
 
724406
+ // packages/cli/src/tui/indicator-command.ts
724407
+ var indicator_command_exports = {};
724408
+ __export(indicator_command_exports, {
724409
+ runIndicatorCommand: () => runIndicatorCommand
724410
+ });
724411
+ function formatIndicatorStatus(status) {
724412
+ const state = status.running ? status.ready ? "ready" : "starting" : "stopped";
724413
+ const pid = status.pid ? ` (PID ${status.pid})` : "";
724414
+ const health = status.health?.label ?? "not checked";
724415
+ const autostart = status.registered ? "registered" : "not registered";
724416
+ const parts = [
724417
+ `Indicator: ${state}${pid}.`,
724418
+ `Health: ${health}.`,
724419
+ `Endpoint: ${status.endpoint}.`,
724420
+ `Autostart: ${autostart}.`
724421
+ ];
724422
+ if (status.error) parts.push(`Error: ${status.error}`);
724423
+ return parts.join(" ");
724424
+ }
724425
+ async function runIndicatorCommand(rawAction, operations = DEFAULT_OPERATIONS) {
724426
+ const action = rawAction.trim().toLowerCase() || "start";
724427
+ if (action !== "start" && action !== "status") {
724428
+ return {
724429
+ level: "warning",
724430
+ message: "Usage: /indicator [start|status] (alias: /tray)"
724431
+ };
724432
+ }
724433
+ try {
724434
+ const status = action === "status" ? await operations.status() : await operations.start();
724435
+ const level = status.error ? "error" : status.running && status.ready ? "info" : status.running ? "warning" : action === "start" ? "error" : "warning";
724436
+ return { level, message: formatIndicatorStatus(status), status };
724437
+ } catch (error) {
724438
+ return {
724439
+ level: "error",
724440
+ message: `Indicator failed: ${error instanceof Error ? error.message : String(error)}`
724441
+ };
724442
+ }
724443
+ }
724444
+ var DEFAULT_OPERATIONS;
724445
+ var init_indicator_command = __esm({
724446
+ "packages/cli/src/tui/indicator-command.ts"() {
724447
+ init_tray();
724448
+ DEFAULT_OPERATIONS = {
724449
+ start: () => startTray(),
724450
+ status: () => getTrayStatus()
724451
+ };
724452
+ }
724453
+ });
724454
+
724395
724455
  // packages/cli/src/cron/types.ts
724396
724456
  var SILENT_MARKER, ONESHOT_GRACE_SECONDS, TICK_LOCK_FILE, CRON_DIR_NAME, JOBS_FILE_NAME, OUTPUT_DIR_NAME;
724397
724457
  var init_types5 = __esm({
@@ -735832,6 +735892,15 @@ ${result.output}`);
735832
735892
  await showCohereDashboard(ctx3);
735833
735893
  return "handled";
735834
735894
  }
735895
+ case "indicator":
735896
+ case "tray": {
735897
+ const { runIndicatorCommand: runIndicatorCommand2 } = await Promise.resolve().then(() => (init_indicator_command(), indicator_command_exports));
735898
+ const result = await runIndicatorCommand2(arg);
735899
+ if (result.level === "error") renderError(result.message);
735900
+ else if (result.level === "warning") renderWarning(result.message);
735901
+ else renderInfo(result.message);
735902
+ return "handled";
735903
+ }
735835
735904
  case "daemon": {
735836
735905
  const { getDaemonStatus: getDaemonStatus2, stopDaemon: stopDaemon2, ensureDaemon: ensureDaemon2 } = await Promise.resolve().then(() => (init_daemon(), daemon_exports));
735837
735906
  if (arg === "status" || !arg) {
@@ -792429,6 +792498,9 @@ function getWebUI() {
792429
792498
  <meta charset="UTF-8">
792430
792499
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
792431
792500
  <title>Omnius</title>
792501
+ <link rel="preconnect" href="https://fonts.googleapis.com">
792502
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
792503
+ <link href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600;700&family=Inter:wght@400;500;600;700;800&display=swap" rel="stylesheet">
792432
792504
  <style>
792433
792505
  /* ─── Cold Tactical HUD design tokens ──────────────────────────────
792434
792506
  * Source of truth:
@@ -794212,6 +794284,316 @@ button {
794212
794284
  .hud-workbench { grid-template-columns: 1fr; }
794213
794285
  .hud-form-grid { grid-template-columns: 1fr; }
794214
794286
  }
794287
+
794288
+ /* ─── NOCLIP style kit ─────────────────────────────────────────────
794289
+ * Source: https://noclip.org/assets/ui-panels-CB6m2DCR.css
794290
+ * Keep this final: it intentionally collapses the older tactical HUD and
794291
+ * OpenWebUI experiments into noclip's restrained black/yellow system.
794292
+ */
794293
+ :root {
794294
+ color-scheme: dark;
794295
+ --nclp-bg-main: #000000;
794296
+ --nclp-bg-secondary: #111111;
794297
+ --nclp-bg-tertiary: #1a1a1a;
794298
+ --nclp-surface: #141414;
794299
+ --nclp-text: #fafafa;
794300
+ --nclp-muted: rgba(250, 250, 250, 0.70);
794301
+ --nclp-quiet: rgba(250, 250, 250, 0.48);
794302
+ --nclp-line: rgba(250, 250, 250, 0.12);
794303
+ --nclp-line-strong: rgba(250, 250, 250, 0.30);
794304
+ --nclp-yellow: #facc15;
794305
+ --nclp-amber: #f59e0b;
794306
+ --nclp-amber-soft: rgba(245, 158, 11, 0.14);
794307
+ --nclp-ok: #8ef6c8;
794308
+ --nclp-bad: #fca5a5;
794309
+ --nclp-font: Inter, 'IBM Plex Mono', 'JetBrains Mono', ui-monospace, SFMono-Regular, monospace;
794310
+ --nclp-card: linear-gradient(145deg, rgba(20, 20, 20, 0.97), rgba(10, 10, 10, 0.97));
794311
+ --nclp-shadow: 0 16px 40px rgba(0, 0, 0, 0.16);
794312
+
794313
+ --hud-void: var(--nclp-bg-main);
794314
+ --hud-black: var(--nclp-bg-main);
794315
+ --hud-panel-solid: var(--nclp-surface);
794316
+ --hud-steel: var(--nclp-line);
794317
+ --hud-steel-2: var(--nclp-line-strong);
794318
+ --hud-dim: var(--nclp-quiet);
794319
+ --hud-muted: var(--nclp-muted);
794320
+ --hud-ink-soft: var(--nclp-muted);
794321
+ --hud-ink: var(--nclp-text);
794322
+ --hud-accent: var(--nclp-yellow);
794323
+ --hud-accent-strong: #fde047;
794324
+ --hud-cyan: var(--nclp-yellow);
794325
+ --hud-danger: var(--nclp-bad);
794326
+ --hud-success: var(--nclp-ok);
794327
+ --hud-panel-clip: none;
794328
+ --hud-button-clip: none;
794329
+ --hud-panel-shadow: var(--nclp-shadow);
794330
+ --hud-cyan-glow: none;
794331
+ --hud-amber-glow: none;
794332
+
794333
+ --color-bg: var(--nclp-bg-main);
794334
+ --color-bg-elevated: var(--nclp-surface);
794335
+ --color-bg-input: var(--nclp-bg-main);
794336
+ --color-bg-hover: var(--nclp-amber-soft);
794337
+ --color-fg: var(--nclp-text);
794338
+ --color-fg-muted: var(--nclp-muted);
794339
+ --color-fg-subtle: var(--nclp-muted);
794340
+ --color-fg-faint: var(--nclp-quiet);
794341
+ --color-border: var(--nclp-line);
794342
+ --color-border-strong: var(--nclp-line-strong);
794343
+ --color-accent: var(--nclp-yellow);
794344
+ --color-accent-hover: #fde047;
794345
+ --color-accent-fg: #111111;
794346
+ --color-success: var(--nclp-ok);
794347
+ --color-warning: var(--nclp-yellow);
794348
+ --color-error: var(--nclp-bad);
794349
+ --color-info: var(--nclp-yellow);
794350
+ --color-brand: var(--nclp-yellow);
794351
+ --color-brand-hover: #fde047;
794352
+ --font-display: var(--nclp-font);
794353
+ --font-ui: var(--nclp-font);
794354
+ --font-mono: var(--nclp-font);
794355
+ --radius-sm: 3px;
794356
+ --radius-md: 3px;
794357
+ --radius-lg: 3px;
794358
+ --radius-pill: 3px;
794359
+ }
794360
+
794361
+ /* NOCLIP is a dark-only style kit; keep the legacy theme toggle from leaking
794362
+ * its pale compatibility palette back into components using --color-* aliases. */
794363
+ html[data-theme="light"] {
794364
+ color-scheme: dark;
794365
+ --color-bg: var(--nclp-bg-main);
794366
+ --color-bg-elevated: var(--nclp-surface);
794367
+ --color-bg-input: var(--nclp-bg-main);
794368
+ --color-bg-hover: var(--nclp-amber-soft);
794369
+ --color-fg: var(--nclp-text);
794370
+ --color-fg-muted: var(--nclp-muted);
794371
+ --color-fg-subtle: var(--nclp-muted);
794372
+ --color-fg-faint: var(--nclp-quiet);
794373
+ --color-border: var(--nclp-line);
794374
+ --color-border-strong: var(--nclp-line-strong);
794375
+ }
794376
+
794377
+ html,
794378
+ body,
794379
+ #omnius-shell,
794380
+ #omnius-main {
794381
+ background: var(--nclp-bg-main) !important;
794382
+ color: var(--nclp-text) !important;
794383
+ font-family: var(--nclp-font) !important;
794384
+ }
794385
+
794386
+ body::before,
794387
+ body::after,
794388
+ #omnius-sidebar::before,
794389
+ .hud-btn__chrome,
794390
+ .hud-tab__chrome {
794391
+ content: none !important;
794392
+ display: none !important;
794393
+ }
794394
+
794395
+ #omnius-sidebar {
794396
+ background: var(--nclp-bg-main) !important;
794397
+ border-right: 1px solid var(--nclp-line) !important;
794398
+ box-shadow: none !important;
794399
+ }
794400
+
794401
+ #header,
794402
+ #sidebar-nav,
794403
+ #sidebar-footer,
794404
+ .session-topbar,
794405
+ #footer,
794406
+ #input-toolbar,
794407
+ #input-row,
794408
+ #processes-row,
794409
+ #tasks-row {
794410
+ background: var(--nclp-bg-secondary) !important;
794411
+ border-color: var(--nclp-line) !important;
794412
+ box-shadow: none !important;
794413
+ }
794414
+
794415
+ #chat-container,
794416
+ #agent-panel,
794417
+ #jobs-panel,
794418
+ #config-panel,
794419
+ #activity-panel,
794420
+ #projects-panel,
794421
+ #voice-panel,
794422
+ #generate-panel {
794423
+ background: var(--nclp-bg-main) !important;
794424
+ background-image: none !important;
794425
+ }
794426
+
794427
+ :is(.hud-panel, .hud-result-card, .tool-card, .omnius-modal-window,
794428
+ .settings-provider-module, .settings-provider-setup, .msg pre,
794429
+ #proc-popover, #slash-palette, #key-modal .modal) {
794430
+ position: relative;
794431
+ border: 1px solid var(--nclp-line) !important;
794432
+ border-radius: 3px !important;
794433
+ background: var(--nclp-card) !important;
794434
+ box-shadow: var(--nclp-shadow) !important;
794435
+ clip-path: none !important;
794436
+ backdrop-filter: none !important;
794437
+ }
794438
+
794439
+ :is(.hud-panel, .hud-result-card, .omnius-modal-window,
794440
+ .settings-provider-module, .settings-provider-setup)::before {
794441
+ content: "" !important;
794442
+ position: absolute !important;
794443
+ z-index: 2 !important;
794444
+ top: 0 !important;
794445
+ left: 0 !important;
794446
+ width: 38px !important;
794447
+ height: 2px !important;
794448
+ background: var(--nclp-yellow) !important;
794449
+ pointer-events: none !important;
794450
+ }
794451
+
794452
+ button,
794453
+ [role="button"],
794454
+ .hud-btn,
794455
+ .hud-tab,
794456
+ .sb-nav,
794457
+ .key-btn,
794458
+ .ibtn {
794459
+ border: 1px solid var(--nclp-line) !important;
794460
+ border-radius: 3px !important;
794461
+ background: var(--nclp-bg-secondary) !important;
794462
+ color: var(--nclp-text) !important;
794463
+ box-shadow: none !important;
794464
+ clip-path: none !important;
794465
+ font-family: var(--nclp-font) !important;
794466
+ font-size: 11px !important;
794467
+ font-weight: 800 !important;
794468
+ letter-spacing: 0.07em !important;
794469
+ text-transform: uppercase !important;
794470
+ }
794471
+
794472
+ :is(button, [role="button"], .hud-btn, .hud-tab, .sb-nav, .key-btn, .ibtn):hover:not(:disabled),
794473
+ :is(button, [role="button"], .hud-btn, .hud-tab, .sb-nav, .key-btn, .ibtn):focus-visible {
794474
+ border-color: var(--nclp-yellow) !important;
794475
+ color: var(--nclp-yellow) !important;
794476
+ background: var(--nclp-bg-secondary) !important;
794477
+ outline: none !important;
794478
+ }
794479
+
794480
+ :is(.hud-btn--primary, button[type="submit"], .is-primary) {
794481
+ border-color: var(--nclp-yellow) !important;
794482
+ background: var(--nclp-yellow) !important;
794483
+ color: #111111 !important;
794484
+ }
794485
+
794486
+ :is(.hud-btn--danger, .danger, .kill) {
794487
+ border-color: rgba(252, 165, 165, 0.52) !important;
794488
+ background: #3a1818 !important;
794489
+ color: #fef2f2 !important;
794490
+ }
794491
+
794492
+ button:disabled,
794493
+ [role="button"][aria-disabled="true"] {
794494
+ opacity: 0.45 !important;
794495
+ cursor: not-allowed !important;
794496
+ }
794497
+
794498
+ input,
794499
+ select,
794500
+ textarea,
794501
+ #input-area,
794502
+ #sidebar-search {
794503
+ border: 1px solid var(--nclp-line) !important;
794504
+ border-radius: 3px !important;
794505
+ background: var(--nclp-bg-main) !important;
794506
+ color: var(--nclp-text) !important;
794507
+ box-shadow: none !important;
794508
+ font-family: var(--nclp-font) !important;
794509
+ }
794510
+
794511
+ :is(input, select, textarea, #input-area, #sidebar-search):focus {
794512
+ border-color: var(--nclp-yellow) !important;
794513
+ box-shadow: 0 0 0 1px var(--nclp-yellow) !important;
794514
+ outline: none !important;
794515
+ }
794516
+
794517
+ .sb-nav.active,
794518
+ .sb-chat.active,
794519
+ .slash-row.selected,
794520
+ .slash-row:hover,
794521
+ .hud-tab.active,
794522
+ .hud-tab[aria-selected="true"] {
794523
+ border-color: var(--nclp-yellow) !important;
794524
+ background: var(--nclp-amber-soft) !important;
794525
+ color: var(--nclp-yellow) !important;
794526
+ box-shadow: none !important;
794527
+ }
794528
+
794529
+ #sidebar-brand,
794530
+ #header .accent,
794531
+ :is(.hud-panel__title, .hud-result-card strong, h1, h2, h3) {
794532
+ color: var(--nclp-text) !important;
794533
+ font-family: var(--nclp-font) !important;
794534
+ font-size: 11px !important;
794535
+ font-weight: 700 !important;
794536
+ letter-spacing: 0.13em !important;
794537
+ text-transform: uppercase !important;
794538
+ }
794539
+
794540
+ :is(label, .hud-rail-label, .topbar-label, .proc-label, .tasks-label,
794541
+ .slash-desc, .hud-field label) {
794542
+ color: var(--nclp-muted) !important;
794543
+ font-size: 10px !important;
794544
+ font-weight: 700 !important;
794545
+ letter-spacing: 0.08em !important;
794546
+ text-transform: uppercase !important;
794547
+ }
794548
+
794549
+ .msg.user > *,
794550
+ .msg.system > *,
794551
+ .msg.assistant::before,
794552
+ .task-item,
794553
+ .chip,
794554
+ .hud-chip {
794555
+ border: 1px solid var(--nclp-line) !important;
794556
+ border-radius: 3px !important;
794557
+ background: var(--nclp-bg-secondary) !important;
794558
+ box-shadow: none !important;
794559
+ clip-path: none !important;
794560
+ }
794561
+
794562
+ .msg.assistant::before {
794563
+ color: var(--nclp-yellow) !important;
794564
+ border-color: var(--nclp-yellow) !important;
794565
+ }
794566
+
794567
+ .hud-result-card strong,
794568
+ .metric,
794569
+ .metric-value,
794570
+ .card-value {
794571
+ color: var(--nclp-yellow) !important;
794572
+ font-variant-numeric: tabular-nums !important;
794573
+ }
794574
+
794575
+ .live,
794576
+ .success,
794577
+ .ok { color: var(--nclp-ok) !important; }
794578
+ .error,
794579
+ .bad { color: var(--nclp-bad) !important; }
794580
+
794581
+ html { scrollbar-color: var(--nclp-line-strong) var(--nclp-bg-main); }
794582
+ *::-webkit-scrollbar { width: 6px; height: 6px; }
794583
+ *::-webkit-scrollbar-track { background: var(--nclp-bg-main); }
794584
+ *::-webkit-scrollbar-thumb {
794585
+ background: var(--nclp-line-strong);
794586
+ border: 0;
794587
+ border-radius: 3px;
794588
+ }
794589
+ *::-webkit-scrollbar-thumb:hover { background: var(--nclp-yellow); }
794590
+
794591
+ @media (prefers-reduced-motion: reduce) {
794592
+ *, *::before, *::after {
794593
+ animation-duration: 0.01ms !important;
794594
+ transition-duration: 0.01ms !important;
794595
+ }
794596
+ }
794215
794597
  </style>
794216
794598
  </head>
794217
794599
  <body>
@@ -7302,6 +7302,38 @@
7302
7302
  }
7303
7303
  ]
7304
7304
  },
7305
+ {
7306
+ "id": "command.indicator",
7307
+ "kind": "command",
7308
+ "title": "/indicator",
7309
+ "summary": "Report native system indicator readiness and daemon health",
7310
+ "aliases": [
7311
+ "/indicator",
7312
+ "indicator"
7313
+ ],
7314
+ "keywords": [
7315
+ "command",
7316
+ "tui",
7317
+ "indicator"
7318
+ ],
7319
+ "interfaces": [
7320
+ {
7321
+ "type": "tui",
7322
+ "target": "/indicator"
7323
+ },
7324
+ {
7325
+ "type": "rest",
7326
+ "target": "/v1/commands/indicator"
7327
+ }
7328
+ ],
7329
+ "references": [
7330
+ {
7331
+ "type": "source",
7332
+ "target": "packages/cli/src/tui/command-registry.ts",
7333
+ "relation": "registry"
7334
+ }
7335
+ ]
7336
+ },
7305
7337
  {
7306
7338
  "id": "command.ingest",
7307
7339
  "kind": "command",
@@ -9799,6 +9831,38 @@
9799
9831
  }
9800
9832
  ]
9801
9833
  },
9834
+ {
9835
+ "id": "command.tray",
9836
+ "kind": "command",
9837
+ "title": "/tray",
9838
+ "summary": "Alias for /indicator status",
9839
+ "aliases": [
9840
+ "/tray",
9841
+ "tray"
9842
+ ],
9843
+ "keywords": [
9844
+ "command",
9845
+ "tui",
9846
+ "tray"
9847
+ ],
9848
+ "interfaces": [
9849
+ {
9850
+ "type": "tui",
9851
+ "target": "/tray"
9852
+ },
9853
+ {
9854
+ "type": "rest",
9855
+ "target": "/v1/commands/tray"
9856
+ }
9857
+ ],
9858
+ "references": [
9859
+ {
9860
+ "type": "source",
9861
+ "target": "packages/cli/src/tui/command-registry.ts",
9862
+ "relation": "registry"
9863
+ }
9864
+ ]
9865
+ },
9802
9866
  {
9803
9867
  "id": "command.tree",
9804
9868
  "kind": "command",
package/docs/DISCOVERY.md CHANGED
@@ -232,6 +232,7 @@ Daemon equivalents are `GET /v1/discovery?q=<intent>` and `GET /v1/discovery/{id
232
232
  | `command.hf` | /hf | Cancel any pending HF token prompt and fall back immediately |
233
233
  | `command.host` | /host | Set bind host:port (OMNIUS_HOST) and restart daemon |
234
234
  | `command.image` | /image | List image models by category, quality, size, and hardware fit |
235
+ | `command.indicator` | /indicator | Report native system indicator readiness and daemon health |
235
236
  | `command.ingest` | /ingest | Ingest an audio, PDF, or text file into memory |
236
237
  | `command.init` | Initialize agent discovery guidance | Create or update managed Omnius discovery blocks in project guidance while preserving user content. |
237
238
  | `command.insights` | /insights | Show historical session insights |
@@ -310,6 +311,7 @@ Daemon equivalents are `GET /v1/discovery?q=<intent>` and `GET /v1/discovery/{id
310
311
  | `command.tools` | /tools | List agent-created custom tools |
311
312
  | `command.toolsets` | /toolsets | Show or select tool exposure sets |
312
313
  | `command.transcribe` | /transcribe | Alias for /ingest &lt;file&gt; |
314
+ | `command.tray` | /tray | Alias for /indicator status |
313
315
  | `command.tree` | /tree | Show, hide, or inspect the action-tree presentation |
314
316
  | `command.undo` | /undo | Undo the last queued or saved exchange when available |
315
317
  | `command.update` | /update | Run full non-interactive update: package, deps, rebuild, Python, cloudflared |
@@ -14,6 +14,17 @@ omnius tray stop # stop only the indicator
14
14
  omnius tray uninstall # stop it and remove login startup
15
15
  ```
16
16
 
17
+ From an active Omnius TUI, use the local slash command instead:
18
+
19
+ ```text
20
+ /indicator # start and report readiness
21
+ /indicator status # inspect without starting
22
+ ```
23
+
24
+ `/tray` is retained as an alias. Login registration and the full
25
+ start/stop/restart lifecycle remain available through the top-level
26
+ `omnius tray` command.
27
+
17
28
  The indicator polls the daemon's loopback-only `GET /health` route. It does not
18
29
  load a model or contact the configured inference backend. If the daemon uses a
19
30
  non-default port, Omnius discovers `OMNIUS_HOST`/`OMNIUS_PORT` from the current
@@ -82,4 +93,3 @@ tail -f ~/.local/state/omnius/tray.err.log # Linux default
82
93
  with `--endpoint`; avoid `0.0.0.0` in client URLs.
83
94
  - **No graphical session:** run `omnius tray start` from the logged-in desktop
84
95
  session so `DISPLAY`/`WAYLAND_DISPLAY` and the session D-Bus address exist.
85
-
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.597",
3
+ "version": "1.0.598",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.597",
9
+ "version": "1.0.598",
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.597",
3
+ "version": "1.0.598",
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/library.js",