omnius 1.0.648 → 1.0.650

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/launcher.cjs CHANGED
File without changes
@@ -293856,6 +293856,7 @@ async function getDaemonReportedIdentity(port) {
293856
293856
  const resp = await fetch(`http://127.0.0.1:${p}/health`, { signal: AbortSignal.timeout(2e3) });
293857
293857
  if (!resp.ok) return null;
293858
293858
  const data = await resp.json();
293859
+ if (data.status !== "ok") return null;
293859
293860
  const version = data.boot_version ?? data.version;
293860
293861
  if (!version) return null;
293861
293862
  return {
@@ -293867,15 +293868,13 @@ async function getDaemonReportedIdentity(port) {
293867
293868
  return null;
293868
293869
  }
293869
293870
  }
293870
- async function getDaemonReportedVersion(port) {
293871
- return (await getDaemonReportedIdentity(port))?.bootVersion ?? null;
293872
- }
293873
293871
  async function waitForDaemonReady(port, expectedVersion, attempts = 24) {
293874
293872
  let observedVersion = null;
293875
293873
  for (let attempt = 0; attempt < attempts; attempt++) {
293876
293874
  await new Promise((resolve11) => setTimeout(resolve11, 500));
293877
- if (!await isDaemonRunning(port)) continue;
293878
- observedVersion = await getDaemonReportedVersion(port);
293875
+ const identity = await getDaemonReportedIdentity(port);
293876
+ if (!identity) continue;
293877
+ observedVersion = identity.bootVersion;
293879
293878
  if (!expectedVersion || expectedVersion === "0.0.0" || observedVersion === expectedVersion) {
293880
293879
  return { ok: true, observedVersion };
293881
293880
  }
@@ -61,11 +61,63 @@ It records scope, dependencies, evidence, and closure rules.
61
61
  - Test an abort that forbids unary fallback.
62
62
  - [x] Run focused Telegram suites.
63
63
  - [x] Build the CLI package.
64
+ - [x] Stop treating a clean admin-chat answer as an incomplete agentic task.
65
+ - Root cause: the live model returned a valid visible reply on each turn, but
66
+ `AgenticRunner` required a `task_complete` tool call on the conversational
67
+ Telegram surface. It therefore repeated the generation three times and
68
+ committed the run as incomplete after 55,193 tokens and zero tool calls.
69
+ - Add an explicit `acceptTextOnlyCompletion` runner contract. Enable it only
70
+ for admin-DM chat; action and mutation runs retain authoritative completion
71
+ and evidence gates.
72
+ - Retain the first completed stream answer before completion-boundary
73
+ filtering so Telegram cannot discard the terminal conversational reply.
74
+ - [x] Separate the Telegram admin reply from internal run diagnostics.
75
+ - Render only the natural answer, concise work summary, or artifact
76
+ description on the Reply tab.
77
+ - Do not prepend `Admin run`, echo the request, append a page marker, expose
78
+ raw exceptions, or persist completion reports as assistant conversation.
79
+ - Put lifecycle status and mutations in Activity, tool results in Tools,
80
+ completion and verification reports in Evidence, and prompt/context data in
81
+ Context.
82
+ - Return the panel to Reply when a run finishes, while marking updated
83
+ internal tabs for inspection.
84
+ - Preserve and deliver a usable draft and generated artifacts when the runner
85
+ misses `task_complete`; keep the incomplete report in Evidence.
86
+ - [x] Add Telegram reply-versus-evidence regressions.
87
+ - Assert exact clean Reply rendering for completed and failed panels.
88
+ - Assert that the literal `back at it?` incomplete-run failure delivers only
89
+ its usable conversational draft and stores `INCOMPLETE` behind Evidence.
90
+ - Assert that a one-turn admin chat delivery and persisted assistant history
91
+ contain the exact model answer, not the panel report.
92
+ - [ ] QUEUED — Make automatic generated-artifact upload receipts authoritative.
93
+ - Return delivered and failed artifact receipts from the automatic sender.
94
+ - Put raw upload diagnostics in Tools or Evidence.
95
+ - If an attachment cannot be delivered, replace any success claim with one
96
+ concise user-facing blocker without exposing a local path.
97
+ - [x] Make Telegram intake completion depend on a delivery receipt.
98
+ - Require `ok: true` and a positive Telegram `message_id`.
99
+ - Try the existing HTML-to-plain fallback, then fail the run if both sends
100
+ fail or neither returns a receipt.
101
+ - Mark the intake consumed only after a confirmed visible delivery; otherwise
102
+ mark it failed for replay and diagnosis.
64
103
  - [ ] VERIFY — Run live Telegram route inference.
65
104
  - Endpoint: `http://127.0.0.1:11434`.
66
105
  - Model: `robit/ornith-1.5:9b`.
67
106
  - Required GPU: a broker-selected A100 80 GB GPU.
68
107
  - Forbidden GPU: the GT 1030.
108
+ - Partial live evidence: Telegram intake accepted `back at it?`, created a task
109
+ epoch, and completed broker-backed `/v1/chat/completions` and `/api/chat`
110
+ requests without the former 30-second abort.
111
+ - The earlier open-ledger result is now diagnosed as a conversational
112
+ completion-policy mismatch, not a transport or model failure.
113
+ - Direct live proof after the causal fix: the exact Ornith model returned
114
+ `TELEGRAM_CHAT_TERMINAL_OK`; the runner completed in one turn with zero tool
115
+ calls and 30 completion tokens while resident on an A100 80 GB GPU.
116
+ - Open gate: receive and deliver one fresh real Telegram message through the
117
+ rebuilt installed CLI. Mocked Bot API coverage is complete, but it does not
118
+ replace an end-to-end Telegram delivery receipt.
119
+ - Ready state: the rebuilt `/usr/local/bin/omnius` TUI is running in
120
+ `telegram_test`; its Telegram poller owns the live workspace lock.
69
121
  - Required result: valid visible route JSON.
70
122
  - Required result: nonzero generated token telemetry.
71
123
  - Required result: no 30-second abort.
@@ -96,11 +148,100 @@ It records scope, dependencies, evidence, and closure rules.
96
148
  - [x] Confirm the exact model tag `robit/ornith-1.5:9b`.
97
149
  - [x] Confirm model context length `262144`.
98
150
  - [x] Confirm model capabilities for completion, vision, tools, and thinking.
99
- - [ ] VERIFY — Confirm that Omnius can request broker capacity without bypass.
100
- - [ ] VERIFY — Confirm parallel sub-agent requests on separate host lanes.
151
+ - [x] Replace per-request capacity polling with one FIFO scheduler and one reconciler.
152
+ - [x] Cancel disconnected queued clients before backend inference starts.
153
+ - [x] Add queue IDs, positions, phases, depth, age, and aggregate timing metrics.
154
+ - [x] Make queue time exclude backend generation and time to first response.
155
+ - [x] Warm each managed model with zero generated tokens before lane readiness.
156
+ - [x] Verify model residency before admitting a lane.
157
+ - [x] Canonicalize only an omitted `:latest` tag.
158
+ - [x] Preserve separately configured model aliases.
159
+ - [x] Replace least-recently-used idle lanes for mixed-model demand.
160
+ - [x] Remove the system-lane block on independent managed-lane expansion.
161
+ - [x] Scope anonymous CUDA handling to selected GPUs and broker-external processes.
162
+ - [x] Ignore foreign-process departure and unselected-GPU churn.
163
+ - [x] Retire only affected managed lanes after stable allocation growth.
164
+ - [x] Protect queued timeout and client-write paths from broken-pipe tracebacks.
165
+ - [x] Keep `/api/tags`, `/api/ps`, `/api/version`, `/api/show`, and `/v1/models`
166
+ available during cooperative GPU-lease drains.
167
+ - [x] Add broker regressions for lazy three-lane scaling, FIFO, cancellation, aliases,
168
+ mixed models, warm readiness, queue telemetry, and CUDA process churn.
169
+ - [x] Add the negotiator suite to the broker repository CI workflow.
170
+ - [x] Commit broker scheduler repair locally on `main` as `4fbad0c`.
171
+ - [x] Commit drain-safe metadata repair locally on `main` as `cd344e3`.
172
+ - [x] Commit host-memory restart preflight repair on `main` as `4a24eb5`.
173
+ - [x] Commit endpoint-aware queue admission repair on `main` as `4349a5b`.
174
+ - [x] Commit the public private-lane range contract on `main` as `c98492f`.
175
+ - [x] Deploy the repaired broker through `./ollama-unify.sh --install-safety`.
176
+ - Installed helper SHA-256:
177
+ `39458260611a80f50d87f03e7567bcdcc632ebd1af421e9d94f69521410d80cd`.
178
+ - `ollama-unify-negotiator.service` and `ollama.service` are active.
179
+ - Public port `11434` and system backend port `11436` report Ollama `0.32.13`.
180
+ - [x] Disable the conflicting legacy `ollama-env-update.service` unit.
181
+ - [x] Confirm that Omnius can request broker capacity without bypass.
182
+ - Discovery published managed ports `11437` through `11468`.
183
+ - Omnius created no private `ollama serve` owner during the live run.
184
+ - [x] Confirm parallel requests on separate host lanes.
185
+ - Live discovery showed two concurrent `robit/ornith-1.5:9b` lanes on separate
186
+ A100 80 GB GPUs and a separate embedding lane.
101
187
  - [ ] VERIFY — Confirm that broker queue time remains visible to Telegram.
102
- - [ ] EXTERNAL — Confirm the broker repository commit on `main`.
103
- - [ ] EXTERNAL — Confirm the required broker service restart state.
188
+ - [x] Confirm broker commits `4fbad0c`, `cd344e3`, `4a24eb5`, `4349a5b`, and
189
+ `c98492f` are pushed to `origin/main`.
190
+ - [x] Confirm local and remote broker `main` are identical at `c98492f`.
191
+ - [x] Confirm the required broker service restart state.
192
+
193
+ ## P0: Broker ownership incident root cause
194
+
195
+ - [x] Identify the duplicate scheduler and port-ownership race.
196
+ - Root cause: an older Omnius elastic-pool worker survived independently and
197
+ spawned detached Ollama servers on ports `11436` through `11438` while the
198
+ broker installer temporarily stopped the supervised services.
199
+ - Result: the system Ollama service could not reclaim `11436`, and the host
200
+ broker opened another managed set on later ports.
201
+ - [x] Remove the stale Omnius worker and its detached Ollama process groups.
202
+ - [x] Route broker-managed setup and recovery through systemd.
203
+ - [x] Fail closed when local broker discovery is malformed or temporarily absent.
204
+ - [x] Remove the unsafe `OMNIUS_OLLAMA_UNIFY_ALLOW_POOL` ownership bypass.
205
+ - [x] Prevent `/parallel` from detached-spawning Ollama for a broker-managed endpoint.
206
+ - [x] Keep one supervised system Ollama owner and one broker scheduler.
207
+
208
+ ## P0: Runtime package and daemon integrity
209
+
210
+ - [x] Replace the Zod-4-only `z.json()` runtime contract with a recursive JSON
211
+ schema that works with the bundled Zod runtime.
212
+ - [x] Add nested JSON acceptance and `undefined` rejection tests.
213
+ - [x] Make `publish/dist/launcher.cjs` executable during every publish build.
214
+ - [x] Confirm the source artifact and `/usr/local` installed CLI have the same
215
+ SHA-256 and report Omnius `1.0.649`.
216
+ - Current installed `dist/index.js` SHA-256:
217
+ `9e7a830d1370c0127f38fa4e24b8b15cc9069746904d80a26e41f9ee48a59b8b`.
218
+ - [x] Remove the stale user-service drop-in that moved the shared daemon from
219
+ port `11435` to the Cygnus port `11535`.
220
+ - [x] Confirm the shared Omnius daemon is active on `11435` and the separate
221
+ Cygnus daemon is active on `11535`, both at `1.0.649`.
222
+ - [x] Replace the stale `telegram_test` main-model identifier with the exact tag
223
+ `robit/ornith-1.5:9b`.
224
+ - [x] Stop the diagnostic TUI and remove its dead-PID Telegram ownership lock.
225
+
226
+ ## P0: Startup control-plane recovery
227
+
228
+ - [x] Replace boolean model availability with `available`, `unavailable`, and
229
+ `unknown` outcomes.
230
+ - [x] Treat timeout, HTTP 502, and connection failure as `unknown`.
231
+ - [x] Preserve the configured model when availability is unknown.
232
+ - [x] Run first-run setup only after a successful catalog proves the model absent.
233
+ - [x] Match omitted Ollama `:latest` with strict canonical equality.
234
+ - [x] Use one coalesced names-only `/api/tags` request for startup availability
235
+ and readline completion.
236
+ - [x] Keep full per-model `/api/show` discovery out of startup checks.
237
+ - [x] Classify Telegram startup failures as retryable or terminal.
238
+ - [x] Retry network errors, HTTP/Bot API 429, 5xx, and webhook propagation delay.
239
+ - [x] Do not retry invalid tokens or duplicate long-poller ownership conflicts.
240
+ - [x] Add a bounded TUI Telegram auto-start supervisor.
241
+ - [x] Cancel pending Telegram auto-start when the operator stops Telegram.
242
+ - [x] Use one daemon `/health` response for liveness and immutable boot identity.
243
+ - [x] Tolerate bounded transient daemon health-read failures before recovery.
244
+ - [x] Require daemon health payload `status: ok` before accepting identity.
104
245
 
105
246
  ## P0: Live inference hardware gate
106
247
 
@@ -115,9 +256,18 @@ It records scope, dependencies, evidence, and closure rules.
115
256
  - [x] Inspect `nvidia-smi` model process placement.
116
257
  - [x] Confirm model runner PID `2199237` on an A100.
117
258
  - [x] Confirm that no test runner uses the GT 1030.
118
- - [ ] VERIFY — Send the first generated-token request.
119
- - [ ] VERIFY — Inspect GPU placement during generation.
120
- - [ ] VERIFY — Record response text, usage, timing, and graph validity.
259
+ - [x] Send the first generated-token request.
260
+ - Exact response text: `BROKER_OK`.
261
+ - Provider usage: 5 evaluated tokens.
262
+ - [x] Inspect GPU placement during generation.
263
+ - The Ornith runner was resident on an A100 80 GB GPU.
264
+ - No Ollama runner was resident on the GT 1030.
265
+ - [x] Re-preflight the final installed live session.
266
+ - The broker admitted zero-token capacity on managed lane 10.
267
+ - Runner PID `3179075` is resident on A100 GPU 2.
268
+ - No Ollama runner is resident on the GT 1030.
269
+ - [x] Record response text, provider usage, and broker admission.
270
+ - [ ] VERIFY — Record live ontology graph validity.
121
271
 
122
272
  ## P1: Ontology long-horizon work graph
123
273
 
@@ -298,9 +448,41 @@ It records scope, dependencies, evidence, and closure rules.
298
448
  - [x] Telegram transport, observability, link, and Bot API suites: 161 passed.
299
449
  - [x] Native Ollama transport suite: 19 passed.
300
450
  - [x] Model-broker focused suite: 6 passed.
451
+ - [x] Model availability and first-run setup regressions: 11 passed.
452
+ - [x] Telegram Bot API, startup retry, and routing suite: 91 passed.
453
+ - [x] Daemon identity, singleton, and listener-reclaim regressions: 23 passed.
454
+ - [x] CLI typecheck passed after startup control-plane repairs.
455
+ - [x] CLI build passed after startup control-plane repairs.
456
+ - [x] Inference visibility, terminal links, Telegram transport, and GPU policy:
457
+ 81 focused tests passed.
458
+ - [x] Completion authority, evidence, feature verification, and broker ownership:
459
+ 79 focused orchestrator tests passed.
460
+ - [x] `task_complete`, broker execution, and todo persistence: 46 focused tests passed.
461
+ - [x] Cross-version operational-world JSON schema: 15 tests passed.
462
+ - [x] Published and installed launchers are mode `0755` and their bundled CLI
463
+ hashes match.
301
464
  - [x] Rerun Telegram focused suites after the timeout repair.
465
+ - [x] Telegram routing, inference, observability, and receipt regressions after
466
+ the conversational completion repair: 158 passed.
467
+ - [x] Functional admin-chat regression proves one tool-bearing runner inference,
468
+ exact visible reply delivery, positive message receipt, and one persisted
469
+ assistant history record.
470
+ - [x] Telegram Reply/Evidence isolation suite: 101 focused tests passed, including
471
+ the literal incomplete `back at it?` delivery regression.
472
+ - [x] CLI typecheck, all workspace builds, publish generation, and publish
473
+ artifact audit passed after Reply/Evidence isolation.
474
+ - [ ] VERIFY — Restart the operator-owned `telegram_test` TUI so its in-memory
475
+ process loads the rebuilt bundle, then confirm one fresh private DM keeps
476
+ diagnostics behind the buttons.
477
+ - [x] Direct live `AgenticRunner` inference with `robit/ornith-1.5:9b` completed
478
+ in one turn with 5,837 total provider tokens and no `task_complete` demand.
479
+ - [x] Legacy `maxTurns` control passed alone with a 60-second harness timeout
480
+ (20.9-second test body); its earlier 30-second failure occurred only under
481
+ concurrent test-worker contention.
302
482
  - [x] Rerun CLI typecheck and build after link support.
303
483
  - [x] Rerun all workspace TypeScript builds after the transport repair.
484
+ - [x] Rebuild all workspaces, regenerate `publish/`, pass the publish artifact
485
+ audit, install the rebuilt package, and restart both user daemons.
304
486
  - [ ] VERIFY — Run live Telegram inference.
305
487
  - [ ] VERIFY — Run live ontology patch inference.
306
488
 
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.648",
3
+ "version": "1.0.650",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.648",
9
+ "version": "1.0.650",
10
10
  "bundleDependencies": [
11
11
  "image-to-ascii"
12
12
  ],
@@ -4375,9 +4375,9 @@
4375
4375
  "license": "Apache-2.0 OR MIT"
4376
4376
  },
4377
4377
  "node_modules/ip-address": {
4378
- "version": "10.5.0",
4379
- "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.5.0.tgz",
4380
- "integrity": "sha512-R5SnVLJmgYYvf2F2ZgwSBnelz5G4q5AxIC277GDfUaNbrZKNANcBC7RHqYYePlszf4kBolVkJauG0ZjHHFh55g==",
4378
+ "version": "10.7.0",
4379
+ "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.7.0.tgz",
4380
+ "integrity": "sha512-BGFsyJd5mpXp3rK6jIdADLNgpJUK1jnjzvYF8lK+VyDab9JAmqN0YOKDdP17HlgKb2+ehPgDc8EtnRLbGCAMhA==",
4381
4381
  "license": "MIT",
4382
4382
  "engines": {
4383
4383
  "node": ">= 12"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.648",
3
+ "version": "1.0.650",
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",