Skip to content

[tinyagents-slim] complete OpenHuman host adoption - #8319

Merged
senamakel merged 1648 commits into
tinyhumansai:mainfrom
senamakel:epic-8088-final-rollup
Oct 24, 2026
Merged

senamakel merged 1648 commits into
tinyhumansai:mainfrom
senamakel:epic-8088-final-rollup

Conversation

@senamakel

@senamakel senamakel commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

OpenHuman’s #8088 rollup adopts the async TinyAgents harness, removes the retired orchestration and workflow machinery, and integrates the updated shell/process, scheduler, session, and module behavior.

Closes #8088.

This rollup includes the closed fork child issues: senamakel/openhuman#193–#214, #216–#220; senamakel/tinyagents#57–#70; senamakel/tinytools#4–#5; and senamakel/tinymcp#5. The child issues are closed on the fork after their implementation and validation landed there.

Eight module PRs have merged upstream, and their OpenHuman gitlinks now point at the canonical merge commits: TinyArtifacts #12, TinyConnectors #92, TinyDocs #52, TinyHosts #42, TinyMCP #150, TinySearch #33, TinySkills #46, and TinyWallet #119.

Keep this PR in draft until the remaining upstream module PRs merge, then update those gitlinks, rerun the focused root gates, and mark this PR ready:

Validation completed locally on the updated epic branch:

  • cargo check -p openhuman
  • cargo test -p openhuman --lib shell --features storage-sqlite -- --test-threads=1 (148 passed)
  • RUST_MIN_STACK=8388608 scripts/ci-cancel-aware.sh cargo test -p openhuman --lib --features storage-sqlite scheduled_cron_child_cannot_run_its_declared_destructive_tool -- --nocapture (1 passed)
  • RUST_MIN_STACK=8388608 scripts/ci-cancel-aware.sh cargo test -p openhuman --lib --features storage-sqlite session_key -- --nocapture (14 passed)
  • RUST_MIN_STACK=8388608 scripts/ci-cancel-aware.sh cargo test -p openhuman --lib --features storage-sqlite cold_resumed_thread_can_send_again -- --nocapture (1 passed)
  • RUST_MIN_STACK=8388608 scripts/ci-cancel-aware.sh cargo test -p openhuman --lib --features storage-sqlite stop_policy -- --nocapture (8 passed)
  • RUST_MIN_STACK=8388608 scripts/ci-cancel-aware.sh cargo test -p openhuman-embed --features testkit --test cron_agents_overlapping_runs_of_one_agent_keep_separate_transcripts -- --nocapture (1 passed)
  • cargo check -p openhuman --features storage-sqlite and cargo check -p openhuman-embed --features testkit
  • strict all-target Clippy for openhuman and openhuman-embed with storage-sqlite / testkit
  • node --test scripts/__tests__/retry-markdown-links.test.mjs (8 passed)
  • cargo fmt --manifest-path Cargo.toml --package openhuman --package openhuman-embed -- --check
  • OpenHuman pre-push format, frontend lint, TypeScript, root Clippy, and desktop Clippy hooks

Part of #8088.

senamakel and others added 30 commits October 22, 2026 20:12
The shell tool's host and execution logic now live in the exec adapters module, with the shell module keeping only the pieces it still needs. Visibility was widened to super so the adapters can reach the shared helpers, and the public re-export was repointed to the new location.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The PerCallContext import in the network host tool is now only compiled when the web3 feature is enabled, avoiding an unused import warning in builds without it.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reordered the per_call imports in the network host tool so the cfg-gated PerCallContext sits with the other per_call items, and added the missing ToolTimeout import to the shell schema and env tests.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reverts the tinyinference family from 0.5.0 back to 0.4.1 across the
workspace lockfile, updating both the package versions and every dependent
crate's resolved references.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Pinned the tinyinference family back to 0.4.1 and dropped windows-sys to 0.48.0 in the app lockfile, reverting the earlier 0.5.0 bump.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the pinned commits for all seventeen vendored tiny* submodules to their latest revisions.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Install commands now run with an explicit allowlist of environment
variables covering PATH, home and temp directories, and common toolchain
locations, instead of inheriting the full process environment. This keeps
credentials and unrelated secrets out of child processes while still
letting package managers find their caches and prefixes.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a recording exec backend and a test asserting the installer
forwards exactly the host-approved environment to the backend, so
regressions in environment handling are caught.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…e-insensitively

The install gate now forwards its filtered environment to the exec permit
instead of an empty map, so installer backends actually receive the
host-approved variables. Environment filtering was also extracted into a
testable helper that compares names case-insensitively, keeping Windows
variables like SystemRoot while still dropping secrets.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The install environment filter test now looks up entries with OsStr keys instead of string literals, matching the map's actual key type and keeping the assertions compiling without relying on borrowed str lookups.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
fix(threads): cancel driver children when purging threads
…sue-213-tools-a284

# Conflicts:
#	crates/openhuman-core/src/tools/impl/README.md
#	crates/openhuman-core/src/tools/impl/system/mod.rs
Update the lockfiles to pick up the 0.5.0 release of the tinyinference
crates, replacing the 0.4.1 entries across the workspace and the app
crate.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The plan-review gate, tool, and schemas now come from the tinyagents
harness's plan-review feature instead of local copies, so OpenHuman
registers the harness-provided tools and shares one implementation of
the approval flow. Local gate, tool, and type modules were removed and
replaced by a thin host module that wires the harness tools to
OpenHuman's tenant-scoped stores.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add the missing imports for RunModeHandle and ToolRunContext so the plan
exit tool can reference the run mode handle and tool execution context.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the install tool test assertions and environment maps so
long lines wrap within the configured width. No test behaviour or
coverage changed.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
feat: migrate host tools off tinytools-std
…dules

Reformat import ordering, line wrapping, and assertion layout to match rustfmt output. No behaviour changes.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Extend the plan review end-to-end test to open a Socket.IO connection
before the review is parked, asserting the request arrives over the live
event path rather than only through room-join replay. A second client
then connects after the review is parked to confirm reconnecting
subscribers still receive the same request as a replay.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a debug print of the subscription acknowledgement frame in the
plan review decide test so failures can be diagnosed from the captured
output.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The plan review wake test now wraps the core HTTP router in a middleware that
inserts a process-default DispatchCtx into request extensions, matching how the
real server populates dispatch context so the handler no longer relies on an
ambient context.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The plan review end-to-end test no longer opens a live Socket.IO
connection before parking the review, so it only exercises the room-join
replay path a reconnecting client uses. The live event delivery
assertions were removed along with the setup they depended on.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The end-to-end plan review test now initializes the event bus, registers the
approval surface subscriber, and connects a live Socket.IO client that
subscribes to the thread before the review is parked. This verifies that a
parked review is pushed to an already-subscribed socket, not only replayed to
sockets that join afterwards.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…8-219-plan-review

# Conflicts:
#	crates/openhuman-core/Cargo.toml
…plan-review

test: cover live and replayed plan review requests
Relocate the worker mirror, worker thread, and their tests from the
threads module into agent::subagent_host::ops so the subagent host owns
the worker plumbing it drives. No behaviour changes.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The SessionDriver implementation for OpenHumanSessionDriver was extracted
from driver.rs into a new driver/execute.rs submodule, leaving driver.rs
with just the struct and constructor. This is a pure code move with no
behaviour change, done to keep the driver file manageable as the execute
path grows.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
senamakel and others added 27 commits October 24, 2026 08:49
The test provider now resolves hints and unpinned roles to the configured
default model, falling back to a concrete managed model when the default is
itself a hint. This mirrors the production factory's hint-dropping behaviour
so the escalation tests exercise the same resolution path.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add eprintln debug statements around the permit, agent build, and run
steps of the harness node to trace execution during investigation.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test for a turn without the state block was using the planner agent, which
does not exercise the intended fallback path. Switch it to the summarizer agent
so the active goal is carried through the expected code path.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…n test

The escalation model test now builds its dispatch context through
derive_with so the hosted invocation base carries the built-in agent
definitions, matching how the turn actually runs. The runtime call reuses
that derived context instead of the bare runtime context.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Dropped three temporary eprintln! debug statements that were logging permit, build, and run progress in the agent harness runner. They were leftover tracing noise and are no longer needed.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The headless flow agent test now uses a multi-threaded Tokio runtime with two
worker threads so the nested grandchild result can be exercised without the
single-threaded scheduler blocking on it.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Drop the explicit multi-thread flavor and worker thread count from the
headless flow agent test so it uses the default runtime, matching the
other tests in the file.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Enable a debug-level tracing subscriber in the headless flow agent test so
failures in the nested grandchild result path can be diagnosed from the
captured stderr output.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The dynamic prompt rejection test now formats the error with the alternate
flag so the whole anyhow chain is checked, and includes the actual error in
the failure message to make mismatches easier to diagnose.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The budget and admission decorator was only applied to the copies of the
models held on the turn set, leaving the native model set's own resolver
and error slots undecorated. When a native set is present, the decorator
is now applied through it and the derived primary, routes, summarizer,
and error slot are refreshed from the result.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The direct-mode routing test now installs a persistent default storage backend for its temporary workspace, since the scope-preference read goes through workspace storage and the default in-memory backend is fenced.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The nested grandchild result test no longer installs a debug tracing subscriber, so it runs without emitting debug logs to stderr.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The two headless agent flow tests now install a real SQLite storage
backend and point the config at its URL, since the agent tool belt loads
the tinymcp module which reaches the host's installed storage and the
conditioned session-transcript writes need a real backend.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Print the full error chain before the assertion so a failing run shows
the actual error text instead of only the assertion message.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the storage guard setup in two agent tests to satisfy rustfmt, and dropped a stray eprintln debug statement from the composio scope preference error path.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The error path in the scope preference loader printed the error to stderr
before logging it, which leaked noise into normal output. The tracing
warning already covers the failure, so the debug line was dropped.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test now acquires the composio module guard so the scope-preference read
is served from the host's installed storage instead of relying on a
persistent default backend for the temporary workspace.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The shared builder test config now stores a fixture API key so model
construction passes the backend-session gate, and a leftover debug print
was dropped from the host tools test.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Condense the comment explaining that preparing a turn leaves a paused goal paused, and consume the goal option directly instead of borrowing it before mapping.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Hoist the paused status into a local binding and drop the explanatory comment so the assertion reads more directly.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The dispatch policy test now installs a SQLite test backend and points both
configs at its URL, because validating tool arguments reaches the host's
installed storage through the tinymcp module.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test now relies on module_guard, which already holds the storage slot and installs a memory backend restored on drop, so the extra lock and manual restore helper were removed. Locking the slot a second time deadlocked because the slot mutex is not reentrant.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Replaced the bare unwrap on the provision call in the profile system prompt test with an expect carrying a debug label, so a failure there reports which step broke instead of a generic panic.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Replace the expect call with unwrap when provisioning the test profile, dropping the leftover debug message from the assertion.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reordered `#[path]` module declarations in the tinyagents middleware and
credentials ops test modules so they read alphabetically, and applied rustfmt
line wrapping to a few test call sites. No test behaviour changed.

Auto-committed-on: cuttlefish
Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel merged commit 5961805 into tinyhumansai:main Oct 24, 2026
15 of 20 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Epic: one async spawn_subagent; goals, session and tools upstream; prune tinyagents to what OpenHuman uses

1 participant