Skip to content

refactor(tools): move network tools to tinytools-std behind NetGate (wave 4) - #6829

Merged
senamakel merged 99 commits into
tinyhumansai:mainfrom
senamakel:vendor-extract-w4-tinytools-net
Oct 1, 2026
Merged

senamakel merged 99 commits into
tinyhumansai:mainfrom
senamakel:vendor-extract-w4-tinytools-net

Conversation

@senamakel

@senamakel senamakel commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Summary

Vendor-extraction wave 4: the network tools move to tinytools-std behind a NetGate trait, following the same pattern as the Wave 3 FsGate move.

crates/openhuman-core/src: 603,797 → 600,857 lines (−3,972 moved, +594 host adapter).

Depends on:

The vendor/tinyagents gitlink points at the #250 head. I'll re-pin to the merge commits once they land.

What moved (to tinytools-std)

  • network::{http_request, web_fetch, curl, pushover}. These are gated by NetGate, which covers:
    • can_act, is_rate_limited and record_action;
    • network_needs_approval;
    • local_only_block;
    • disclose (egress);
    • prepare_client and timeout_client (proxy, TLS).
  • filesystem::workspace_state. It now shares git_operations::config hardening, and its own older duplicate is deleted.
  • filesystem::image_info. It validates paths through FsGate.
  • agent/triage strip_trailing_commas. It now uses tinytools_agent::repair::json. The host copy mangled non-ASCII text by pushing bytes as chars.

What stays host-side

  • impl NetGate for SecurityPolicy (tools/impl/network/gate.rs).
  • The x402 402-retry, as an X402PaymentHook behind the web3 feature.
  • The HTML→Markdown step, as a tinyjuice HtmlExtractor. tinyjuice depends on tinytools, so it cannot move there.
  • summary_focus, injected as a schema property.
  • The HttpRequestConfig limits, passed in as HttpLimits.
  • Tests that need a real SecurityPolicy.

Tool names, descriptions and schemas are pinned by literal JSON fixtures upstream, with a host fixture for web_fetch including summary_focus.

Behaviour changes (intentional)

  • workspace_state follows the stricter upstream git policy.
    • core.worktree is refused.
    • Worktree-scoped config is inspected.
    • Unreadable config fails closed.
    • In a non-git directory the Git Status line now shows the refusal reason instead of git's own error.
  • curl keeps its lexical resolve_dest. It was not routed through FsGate, because that would have changed behaviour.

Verification

  • Vendor:
    • tinytools-std 483 and tinytools-agent 378 tests pass.
    • fmt and clippy -D warnings are clean.
  • OpenHuman compile: every test target builds with product features. The app manifest, the embed and tinyhumans crates, and a build without web3 also compile.
  • OpenHuman lib suite: 9673 passed and 2 failed. Both failures are known on base 629f8e1:
    • credential_scrub::browser_confirmation_token_survives_without_exempting_page_credentials;
    • the flaky sync_activity::stale_entries_are_pruned_on_the_next_touch.
  • CI scripts:
    • Feature forwarding, the gated-test allowlist (updated) and submodule monotonic pass.
    • rust:layout has only the baseline entries. The tools/ops.rs pin is lowered.
    • The runtime-boundary check reports no new violations.
  • Pre-existing on base: check-module-pins fails after fetching tags (tinymemory now describes as v1.18.0-3, among others). This PR moves no module pin.

Summary by CodeRabbit

  • Changes
    • HTTP requests and web fetches now use the shared tool provider, retaining their existing limits and policy checks. HTML responses can be converted to Markdown, and eligible payment-required requests can be retried with payment.
    • Network access continues to respect privacy and approval settings, with external transfers disclosed.
    • The curl, Pushover notification, and workspace status tools are no longer available.

senamakel and others added 30 commits September 30, 2026 21:52
Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Remove the `GeneratedToolRuntimePolicy`, `GeneratedToolRuntimeContext`, and related types from the tool policy module, along with the entire `generated.rs` tools module and its tests. These were part of an earlier design for runtime-generated tool wrappers that is no longer used, and keeping them adds maintenance burden without any current consumers. The deletion also simplifies the `ToolPolicyRequest` struct by removing the `generated_tool` field and the `with_generated_tool_context` builder method, and cleans up the middleware that was populating that context.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The raw coverage end-to-end test for erased host extension was failing due to an incorrect assertion on the expected coverage data. The test now properly validates the coverage output for the erased host extension scenario.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add README documentation for the tools module and its implementation submodules to improve developer onboarding. Restructure the browser and system modules by introducing a security module and moving insert_sql_record into the system module with accompanying tests, enhancing code organization and maintainability.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The `insert_sql_record` tool was listed in the system and utilities documentation but is no longer part of the agent's toolset, so the entry has been removed to keep the reference accurate.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…r.ts,app/src/lib/i18n/en.ts,app

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduce a new image generation subsystem under the media crate, including prompt handling, view types, and associated tests. This provides the foundational types and logic needed to support image generation workflows within the application.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Added a README file to the media module to provide documentation and usage guidance for developers working with media-related functionality in the openhuman-core crate.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…p/src/lib/i18n/fr.ts,app/src/li

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Renamed the `model` field to `model_name` in the inference provider schema to match the actual API contract, fixing a mismatch that caused requests to be rejected by the upstream service.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
When generating JSON schemas for composio tool contracts, optional fields were being incorrectly treated as required, causing validation failures. This change updates the schema generation logic to properly mark fields as optional when they are not required by the tool contract, ensuring that composio integrations work correctly with tools that have optional parameters.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The catalog probe module was moved into a subdirectory but the integration code still referenced the old flat path, causing a compilation failure. The import and usage now point to the correct module location, restoring the probe functionality.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…t.tsx

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduce an abort guard mechanism for the tinyagents module to handle graceful shutdown of agent tasks. The new abort_guard.rs provides a utility for cancelling in-flight operations when the agent is terminated, ensuring resources are cleaned up properly. The module declaration and README are updated to reflect this addition.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…t.tsx

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduce a stop-hooks mechanism that allows agent components to register cleanup callbacks invoked when a runtime session ends. This enables graceful teardown of resources such as spawned tasks or open connections without requiring manual management in each session host implementation.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test for stop hooks was not properly asserting that hooks execute in the correct sequence. This change updates the test to validate the order of hook invocations, ensuring that the stop mechanism behaves as intended.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
When an agent delegates a task to another agent, the delegation event was not being recorded in the journal, causing a gap in the audit trail. This change ensures that the delegation is properly journaled, maintaining a complete history of agent interactions.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…,app/src/lib/i18n/fr.ts,app/src

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduce multimodal message types and conversion logic across the agent subsystem, enabling agents to process and route messages that contain multiple content types such as text, images, and audio. This change extends the message model, cost tracking, and tool orchestration to accommodate richer input and output formats.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a README documenting the tinyflows observability module and reorganize the observability implementation by splitting tests into a separate file. This improves code organization and provides clear documentation for developers working with observability features in tinyflows.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
When the run_rows operation receives an empty set of rows, it now returns early with an empty result instead of proceeding with the processing pipeline. This prevents unnecessary computation and avoids potential errors from downstream operations that assume at least one row is present.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The README in the core module was stale and no longer reflected the current architecture, so it has been removed. The rpc_log unit tests have been moved from a separate test file into the main rpc_log module to consolidate test code and simplify the crate structure.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Changed the log level from error to info for successful RPC responses to avoid false alarms in monitoring. Previously, all responses were logged at error level, which caused unnecessary noise in error tracking systems.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…t.tsx

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
When reading a memory graph, the RPC handler now gracefully handles the case where a source is not found in the registry. Previously this would cause an unhandled error, but now it returns a clear error message to the caller instead.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The sandbox configuration operation was using an incorrect path for resolving configuration values, causing lookups to fail when nested keys were specified. Updated the path resolution logic to properly handle hierarchical key access.

Auto-committed-on: dragonfly
Co-authored-by: Medulla <medulla@tinyhumans.ai>
senamakel and others added 27 commits October 1, 2026 07:50
The reply delivery previously awaited the emoji reaction with no timeout, so a slow or blocked reaction could prevent the reply from being stored and announced. This change introduces a two-second budget for the reaction and aborts it if exceeded, ensuring the reply is always delivered even when the reaction is delayed.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…al items

The `REACTION_BUDGET` constant and `bounded_reaction` function were marked `pub(super)` but are only used within the same module, so the visibility qualifier was redundant and has been removed to keep the codebase consistent with the module's other internal items.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…e and normal policies

Two new tests verify that `try_capacity` returns immediately when the gate is paused, preventing interactive callers from blocking behind a paused gate, and that it correctly takes the free slot under normal policy while skipping when the slot is already held.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add three tests for the `bounded_reaction` helper to verify that a stuck reaction does not block delivery, a completed reaction returns its emoji, and a panicked reaction gracefully returns `None`. These cover the regression where a reaction parked on a paused scheduler gate would stall `deliver_response` indefinitely.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
… to wait_for_capacity

The `try_capacity_now` function and its `bounded_reaction` wrapper are removed, restoring the original `wait_for_capacity` call in the reaction path. The bounded-reaction approach was introduced to prevent a paused scheduler gate from stalling reply delivery, but the simpler fix is to let the reaction wait for capacity like other background work, since the gate's pause state is transient and the reply delivery no longer depends on the reaction completing first.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Remove the emoji reaction feature that ran a local model inference to decide whether to react to user messages. This functionality is no longer needed, simplifying the delivery pipeline and eliminating an asynchronous spawn that could race with response storage.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The `reaction_emoji` field was incorrectly included in the default struct literal for `publish_chat_done`, causing a compilation error when the field was removed from the struct definition. This change removes the now-nonexistent field to restore correct compilation.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The `reaction_emoji` field was removed from `WebChannelEvent` and its initialization in `ProactiveMessageSubscriber` and test assertions, as it is no longer needed for the assistant's emoji reaction functionality.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Renamed the test function to drop the trailing `_without_reaction` because the test does not actually verify the absence of reactions, making the original name misleading about what is being tested.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The `reactions` module containing `local_ai_should_react` and its emoji extraction helpers was dead code — nothing in the codebase called these functions. Removing the module and its re-exports cleans up the public API and eliminates unnecessary compilation.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The emoji extraction unit tests for `extract_first_emoji` and `is_emoji_start` have been removed because the underlying functions were already deleted in a prior change, leaving these tests as dead code that would fail to compile.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The should_react capability has been removed from the inference module, including the core function, its test, the schema definition, the controller registration, and the prompt handler. This feature is no longer needed.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…eact

The README for the inference module was updated to remove references to the `reactions.rs` file and the `should_react` RPC entrypoint, which have been removed from the codebase. The list of controller methods was also corrected to no longer include `should_react`.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The `InferenceReactionGate` implementation and its wiring into the channel host have been removed because the local-model reaction call could block reply delivery indefinitely. The host now offers no reaction gate, and the test has been updated to verify that `host.reactions()` returns `None`.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Removed `InferenceReactionGate` from the list of adapters in the host directory documentation, as this adapter no longer exists in the codebase.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The channel host no longer offers a reaction gate capability, as the runtime has been disabled. The unit test now asserts that `reaction_gate` is false, and the end-to-end test has been replaced with a simpler check that the host returns no reactions interface and the capability is not advertised.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test previously asserted that the reaction gate capability was present, but the host now correctly reports it as absent. The import for `ReactionQuery` was also removed since it is no longer needed.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
…tore` references

Removed the `local_ai_should_react` function from import lists and test assertions across several test files, and cleaned up a multi-line import in the host adapters module. These items were no longer used after a prior refactor that eliminated the reaction feature, so the dead code has been pruned to keep the codebase tidy and avoid confusion.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Removed the logic that used reaction emojis from the local AI model to determine the mascot's post-turn acknowledgement face, along with the associated emoji sets and the `reaction_emoji` field from event types. The face selection now relies solely on deterministic text cues from the response, simplifying the system and eliminating an unreliable external dependency.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test file for useHumanMascot had an incorrect import path that prevented the tests from running. The path has been updated to point to the correct location of the module.

Auto-committed-on: macbook
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Co-authored-by: Medulla <medulla@tinyhumans.ai>
fix(web_chat): remove local-model emoji reactions that blocked reply delivery
…pendencies

Bump the tinymemory crate from version 1.18.0 to 1.19.0 and advance both the tinyagents and tinymemory submodule pointers. The Cargo.lock is updated accordingly, adding the `thiserror`, `log`, `base64`, `futures-util`, `reqwest`, and `sha2` dependencies to support new functionality in the updated submodules.

Auto-committed-on: dragonfly
…-dead

refactor(core): delete dead code (vendor extraction wave 4A)
…r to merged module mains

Co-authored-by: Medulla <medulla@tinyhumans.ai>
…r to merged module mains

Co-authored-by: Medulla <medulla@tinyhumans.ai>
@senamakel
senamakel merged commit c3dd008 into tinyhumansai:main Oct 1, 2026
senamakel added a commit that referenced this pull request Oct 1, 2026
fix: remove conflict markers merged in with #6829
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

priority: p2 Soon. Real but survivable — a rough edge, a gap, a thing that will bite later.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants