omnius 1.0.700 → 1.0.702

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.
@@ -0,0 +1,56 @@
1
+ # WO-51: Receive and unpack large Telegram attachments
2
+
3
+ Status: source repair complete and verified. Publication and Local Bot API live acceptance remain with the operator.
4
+
5
+ ## Finding and requested behavior
6
+
7
+ On September 5, 2026, runtime 1.0.700 rejected `agent-services.tar.gz` (37,752,526 bytes) against a hardcoded 26,214,400-byte document cap. The user explicitly requested consuming/unpacking files larger than 25 MB and removing the hardcoded cap. Evidence: copied latest run and request projection under `/tmp/omnius-latest-run-20260905-1550/`, intake and conversation capture under `/tmp/omnius-latest-telegram-p7sd8ubn/`.
8
+
9
+ Additional root defects: downloads accumulated the entire file in RAM; the cache could immediately evict a newly received file above its byte budget; archive extensions became `.bin`; received-document aliases had no general reader or archive extractor. Every Bot API and download URL was fixed to Telegram's hosted server.
10
+
11
+ Review also reproduced a FIFO blocking the local-file reader before its regular-file check, and a configured timeout above Node's timer range silently becoming 1 ms. Both are repaired with nonblocking special-file rejection and timer-range validation. The inbound polling loop awaited eager media downloads before accepting subsequent controls; responsive durable dispatch and owned Stop cancellation are included in this order.
12
+
13
+ ## Repair and owned paths
14
+
15
+ - `packages/cli/src/tui/telegram-media-admission.ts` and `platforms/attachment-store.ts`: no default inbound byte cap; explicit operator limits remain optional. Preserve valid file metadata and archive extensions.
16
+ - `telegram-file-download.ts`: stream HTTP or shared local files into exclusive owned cache files; cancellation, partial-write cleanup, prefix-only signature inspection and optional configured limits.
17
+ - `telegram-bot-transport.ts`, `omnius-directory.ts`, `telegram-bridge.ts`: one configured Bot API URL for polling, methods, uploads and downloads; trusted-root handling of local Bot API file paths; independent inference endpoint; no default cache byte eviction; exact chat/message aliases for admin document reads and extraction.
18
+ - `packages/execution/src/tools/archive-extract.ts`: streamed ZIP/TAR extraction into a fresh owned directory, no default byte cap, no content execution, no overwrite, reject traversal/links/devices and report actual manifest facts. Optional explicit resource limits remain available.
19
+ - CLI/execution tests: a real archive larger than 25 MiB through mocked Telegram transport, cache, extraction and file read; local paths; scope/cancellation/cleanup/error controls.
20
+ - `tool-policy.ts` and execution `security-classifier.ts`: classify extraction as a local write and retain the existing admin-DM filesystem boundary, including when public allowlists are expanded.
21
+ - Operator configuration and migration procedure: [Receiving large Telegram files](../../telegram-large-files.md).
22
+
23
+ ## Acceptance
24
+
25
+ - [x] A 37 MiB attachment passes default admission and streamed cache storage without whole-file buffering.
26
+ - [x] Files above former cache byte budgets remain available by exact message alias.
27
+ - [x] Actual archive extraction and subsequent file read succeed; paths cannot escape the owned extraction destination or another chat's media scope.
28
+ - [x] Configured local Bot API URLs and shared paths are respected throughout transport; cloud download refusal is actionable.
29
+ - [x] Cancellation, existing destinations, malformed streams and unsafe archive entries fail honestly and preserve unrelated files.
30
+ - [x] Polling and authorized Stop remain responsive during large-file transfers; cancelled work cannot start afterward.
31
+ - [x] Record tests, builds, scoped commits and push.
32
+
33
+ ## Recorded verification
34
+
35
+ - Execution: 1,852 passed / 3 existing skips across 164 suites, including 31 archive cases and the mutation-authority regression. Command: `pnpm --dir packages/execution exec vitest run --maxWorkers=4 --minWorkers=1`; log `/tmp/omnius-wo51-execution-full.log`. Archive tool and classifier delivered in `dec18c74` on `origin/main`.
36
+ - End-to-end attachment fixture: actual 38 MiB ZIP contents through mocked `getFile`, HTTP streaming, bridge cache, exact message alias, real archive extraction and real text read. Also covers local shared files, cross-chat/missing aliases, retained 900 MiB sparse cache entry, and direct bridge cancellation. Initial focused 49/49 across large attachments, cache and existing admin-alias suites: `/tmp/omnius-wo51-large-attachments.log`.
37
+ - Transport: 25/25 including real FIFO rejection and timer overflow validation: `/tmp/omnius-wo51-telegram-transport-tests.log`; CLI typecheck passed in `/tmp/omnius-wo51-telegram-transport-types.log`.
38
+ - First CLI sweep ran while the two transport follow-up tests were being added. It passed 2,643 cases and failed those two while the module and fixtures were changing; both pass in a fresh run against the final transport source. The final full run passed all 2,656 cases across 278 suites, including the finished transport and dispatch changes: `/tmp/omnius-wo51-cli-final.log`. Command: `pnpm --dir packages/cli exec vitest run --maxWorkers=4 --minWorkers=1`.
39
+ - Clean all-workspace build passed: `/tmp/omnius-wo51-workspace-build.log`. Final all-workspace rebuild passed after the completed source repair: `/tmp/omnius-wo51-final-workspace-build.log`.
40
+
41
+ ## External transport dependency
42
+
43
+ Telegram documents a hosted Bot API download limit of 20 MB; a Local Bot API server supports downloads without that limit and can return an absolute local file path. Removing Omnius's cap alone cannot change the hosted service. Sources: [File/getFile](https://core.telegram.org/bots/api#file), [Local Bot API server](https://core.telegram.org/bots/api#using-a-local-bot-api-server).
44
+
45
+ Read-only host review found no local Bot API executable/service/container, configured API app credentials or endpoint. Port 8081 is already used by IPFS. Repository tests use mocked transport; do not claim live large-file reception until a Local Bot API server and its shared files directory are configured. No bot logout, service switch, Telegram message or inference request was performed. The user reserved publication and subsequent live testing; this source workorder does not change that scope.
46
+
47
+ ## Responsive intake closeout
48
+
49
+ Authoritative polling now schedules a bounded number of attachment dispatch owners outside the poll wait. Deferred ordinary messages stay in the existing SQLite spool, preserving session order across keyset pages. Authenticated, self-targeted controls can bypass a blocked transfer. Stop durably retires its own active attachment and earlier pending session inputs before acknowledgment, including future retries; it never seizes another live dispatch lease. A cancellation fence prevents handler/model startup, and bridge shutdown drains owners before a new generation can start. Downloads and analysis coalesce only within the same session and input, including guest-session isolation. Explicit shadow/disabled durable-intake modes preserve synchronous legacy dispatch because they lack authoritative persistence for safe deferral.
50
+
51
+ - The full CLI run collected 17 large-attachment cases before the last guest-isolation fixture was added. That final fixture also passed in the subsequent 18-case large-attachment suite; all 2,657 distinct non-skipped CLI cases have a passing result on the final implementation.
52
+ - Final focused regression: 108/108 across nine media, alias, polling, durable-intake, control and spool suites; `/tmp/omnius-wo51-poll-tests.log`. Includes actual blocked-body cancellation while another chat progresses; a cancellation receipt inspected inside the Stop reply callback; no post-Stop handler start; unauthorized/wrong-bot/argument-bearing controls; capacity ordering; restart after a late getFile response; guest/ordinary concurrent same-file cancellation isolation.
53
+ - Spool: 11/11 including 2,106-row keyset paging, update-zero query preservation, future retry cancellation, and foreign lease/terminal-state controls; `/tmp/omnius-wo51-telegram-spool-tests.log`. New owned paths include `telegram-update-spool.ts` and its tests.
54
+ - Initial focused run exposed a zero-ID fixture setup error and an existing transport fixture that stopped polling before returning its deliverable batch. Fixtures were corrected to use valid ingress IDs and stop after actual delivery; delivery assertions remain intact.
55
+ - Independent bounded review passed the final ordering, cancellation durability, deferred retry and guest ownership repairs. No live Telegram, inference, bot migration or service change was performed.
56
+ - Archive implementation is in `dec18c74`; final CLI integration commit includes this workorder. Final delivery hashes are recorded in `TRACKER.md`.
@@ -0,0 +1,35 @@
1
+ # WO-52: Preserve required steering instructions in the actual model request
2
+
3
+ Status: source repair complete; verified and ready for publication. Live acceptance follows the user's publication.
4
+
5
+ ## Finding
6
+
7
+ The latest Telegram run (`telegram-64ac9937dc7647a8-1788648116746-1`) reached turn 87 at 15:50 PDT on September 5 without executing work tools. Its retained history contained 32 `task_complete` attempts and 25 `tool_search` calls. Every admitted attempt was gated pending structured reconciliation of the new archive attachment. There was 84.6% free context; this was not context exhaustion or an active Ollama outage.
8
+
9
+ The canonical request compiler removed the fresh `[ACTIVE USER STEERING]` protocol slot as `stale_work_scope`. Conversation/constrained projection excludes mutable task frames indiscriminately, including protected unacknowledged input. The model therefore never received the schema it was required to emit. Intake nevertheless claimed that the input was visible on each request because visibility was recorded before final projection. Copied request and projection decisions: `/tmp/omnius-latest-run-20260905-1550/latest-main.json` (decision around line 1230); intake copy under `/tmp/omnius-latest-telegram-p7sd8ubn/`.
10
+
11
+ ## Repair
12
+
13
+ - `packages/orchestrator/src/canonical-context-projection.ts`: retain the current protected unacknowledged steering slot while excluding stale task frames; report budget inability rather than silently remove required authority.
14
+ - `packages/orchestrator/src/agenticRunner.ts`: only the exact current host-authored system slot receives that protection. Mark input visible at admitted backend dispatch, bound to the input actually present; do not credit discarded requests or later replacement inputs. Task profiles can embed steering in the canonical frame: retain a request-owned binding only when the current signal was selected without truncation, then verify that exact frame reaches dispatch.
15
+ - Pure projection tests and `agenticRunner-conversation-steering.test.ts`: actual conversation primary/brute loops, stream/batch, constrained budgets, stale copies, pause/replacement races and valid explicit reconciliation after an unavailable attachment.
16
+
17
+ ## Acceptance
18
+
19
+ - [x] The actual next request contains the current input ID and full reconciliation contract in conversation and constrained modes.
20
+ - [x] Stale/assistant-authored copies cannot become protected authority.
21
+ - [x] Visibility receipts match actual admitted request content and owner.
22
+ - [x] Explicit valid reconciliation permits intended continuation without admitting stale work; parser remains strict.
23
+ - [x] Required instructions cannot disappear to meet a budget; no invented acknowledgement or retry-count authority.
24
+ - [x] Record verification, scoped commit and push.
25
+
26
+ The separate attachment-size/transport failure is handled by WO-51. This order fixes the missing protocol and false visibility receipts; it does not infer intent from malformed model output.
27
+
28
+ ## Verification and delivery
29
+
30
+ The first expanded regression run passed 114 cases and exposed a task-profile visibility regression in the initial patch: canonical task frames embed steering instead of retaining its standalone message. The final request-owned frame binding repaired this without weakening the original fixture or marking absent/truncated instructions visible.
31
+
32
+ - Final regression: 118/118 across conversation steering, pure/production canonical projection, production/recovery steering evidence, admission, intake lifecycle, preemption and interruption suites. Command: `pnpm --dir packages/orchestrator exec vitest run tests/agenticRunner-conversation-steering.test.ts tests/canonical-context-projection.test.ts tests/agenticRunner-canonical-production.test.ts tests/agenticRunner-steering-evidence-production.test.ts tests/agenticRunner-steering-evidence-recovery.test.ts tests/steering-admission.test.ts tests/steering-intake-lifecycle.test.ts tests/steering-preemption-api.test.ts tests/agenticRunner-interruption.test.ts tests/interruption-lifecycle.test.ts --maxWorkers=4 --minWorkers=1`. Log: `/tmp/omnius-wo52-regressions-final.log`.
33
+ - Typecheck passed: `/tmp/omnius-wo52-visibility-types.log`. Clean all-workspace build passed; final orchestrator rebuild after the frame-binding follow-up passed: `/tmp/omnius-wo52-final-build.log`.
34
+ - Tests use scripted backends and local temporary fixtures; no inference request or live Telegram message was sent.
35
+ - The scoped repair commit includes this workorder; final commit hash and remote delivery are recorded in `TRACKER.md`.
@@ -0,0 +1,27 @@
1
+ # WO-53: Stop duplicate deferred reflection writes
2
+
3
+ Status: scoped source repair verified; publication remains with the operator.
4
+ Issue: https://github.com/robit-man/open-agents/issues/3
5
+
6
+ ## Finding
7
+
8
+ Runtime 1.0.701 repeatedly upserted unchanged retained Telegram messages. The deferred branch computed an episode ID but unconditionally appended and returned `reused: false`. A captured 1.2 MB tail contained 138 copies of one message with identical content; the complete spool was 3,275,565,579 bytes. That sample does not attribute every byte of the backlog to this producer. Evidence and hashes: `/tmp/omnius-rapid-issues-a6e37rk0/manifest.json`.
9
+
10
+ ## Repair
11
+
12
+ - `packages/cli/src/tui/telegram-reflection-corpus.ts`: fingerprint scoped message identity plus projected content and metadata; return the actual deferred reuse receipt. Preserve edits to text, mode, media and reply context.
13
+ - `packages/cli/src/tui/memory-paths.ts`: persist content-addressed revision receipts after a flushed JSONL append. Receipts survive process reload and maintenance rotation without opening episode or graph databases inline. Unkeyed callers retain their existing append behavior.
14
+ - Existing bot ownership serializes the producer. This is an at-least-once crash boundary: interruption between append and receipt can cause one replay; the receipt must never acknowledge an unwritten record. No global multi-writer exactly-once claim is made. The existing large spool is preserved for maintenance, not deleted or rewritten.
15
+
16
+ ## Verification
17
+
18
+ - [x] 138 repeated unchanged upserts add exactly one record and return reuse.
19
+ - [x] Fresh module state plus rotated spool still reuses the persistent revision receipt.
20
+ - [x] Changed text/mode/media and different chat scope remain separate records.
21
+ - [x] Failed append does not create an acknowledgment; retry succeeds.
22
+ - [x] All seven cases in `memory-paths.test.ts` and `telegram-reflection-corpus.test.ts` passed: `/tmp/omnius-issue3-churn-tests.log`.
23
+ - [x] All-workspace build passed: `/tmp/omnius-issue3-build.log`.
24
+
25
+ ## Remaining issue scope
26
+
27
+ The repeated context-snapshot recovery behavior remains in issue #3. The read-headroom comparison was refined: the first zero-headroom receipts occurred with 39,615/40,000 canonical input tokens, requesting another 4,718 and 3,203 tokens. Physical model free space is a different budget; the subtraction was not shown incorrect. Do not increase only the read ceiling, which could violate subsequent canonical admission. Neither behavior is claimed repaired by this scoped churn patch. No live inference, service restart, model change or backlog mutation was performed.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omnius",
3
- "version": "1.0.700",
3
+ "version": "1.0.702",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omnius",
9
- "version": "1.0.700",
9
+ "version": "1.0.702",
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.700",
3
+ "version": "1.0.702",
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",