Repository navigation
Hive language integrations, executable tools, and OpenHuman at upstream main - #132
Merged
Merged
Conversation
Update the vendored openhuman subproject to the latest commit. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Move the openhuman, tinytools and tinymemory git pins to the revisions the vendored submodule now carries, and mirror OpenHuman's own patch section with paths re-rooted under vendor/openhuman so the workspace root resolves each crate to a single copy. Add patch entries for tinybus and tinytools-std so the storage, wallet and MCP modules share one bus interface and one Tool trait instead of compiling a second set of types. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Refresh the openhuman example's dependency set, pulling in newer crypto and async crates and dropping unused ones. The lockfile was regenerated to match. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Replace direct openhuman_core references for turn origin, trusted automation source, and tool hook events with their openhuman_embed equivalents, and use the ToolHookDecision constructors instead of building variants by hand. This keeps the deploy and host layers depending only on the embed seam rather than core internals. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Replace the verbose matches! checks in the permission tests with the is_deny helper and direct boolean comparisons, which keeps the same coverage while making the assertions easier to read. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The permission tests asserted deny and allow in the wrong direction, so they passed only when the engine returned the opposite of the intended decision. The assertions are now written directly against is_deny, and the isolated-session case checks the write denial before switching the tool name so each expectation matches the behaviour under test. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add atomicwrites, clack-private-fs, fs4, and rustix to the openhuman crate's dependency set, pulling in the corresponding lockfile entries. These support atomic file writes and cross-process locking needed by the secrets storage work. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Moved memory root validation, identity resolution, and cron schedule validation onto the extracted tinymemory and tinyflows crates, and updated the agent registry path. The scheduler now runs with a DispatchCtx so it can reach the runtime context, and a new error variant surfaces memory engine failures. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Wire the tinyflows scheduler crate into the workspace and the openhuman crate, pinning it to the git revision OpenHuman vendors and patching it onto the in-tree copy so its Schedule type matches what openhuman::cron re-exports. The testkit feature is enabled to expose InMemorySessionStores for the memory session store. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformat the config validation, deploy permission gate, host runner, and memory module to satisfy rustfmt, including the permission tests. No behaviour changes. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Several assertions in the permission tests had their deny checks inverted, so they passed for the wrong reason. The polarity of each check is now aligned with the behaviour it is meant to verify, and the isolated-session case sets the tool name before asserting on it. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The openhuman-embed dependency now enables the modules feature, since OpenHuman serves MCP through its TinyMCP module and calls fail with "module unavailable" without the module host. The MCP test registers the statically linked tinymcp module and switches the module source to linked so tests load it in-process instead of downloading the pinned release. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The lockfile now records the tinymcp crate and the dirs 7.0.0 and tinybox-bus 0.1.36 packages it pulls in, alongside the existing dirs 6.0.0 and tinybox-bus 0.2.0 entries that other crates still resolve to. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Adjust the test to reference ModuleSourceMode through the config schema module, matching the relocated type. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Print the coordinator transcript and the tail of each received request body before the assertion so failures can be diagnosed from the captured output. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The debug output in the scheduled MCP envelope test now parses each captured request body as JSON and prints tool-role messages, tool calls, and the names of any MCP tools, instead of dumping the raw body. This makes it easier to see what the model actually received when the assertion fails. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add env_logger to the openhuman crate's dev-dependencies so the MCP deployment tests can initialise logging, and pull in the resulting transitive crates in the lockfile. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Removed several transitive crates from the lockfile after trimming the openhuman crate's dependency list, and added coverage to the MCP deploy tests for the newly exercised paths. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The separate Memory and MemoryEngine variants both wrapped memory engine failures, so they are merged into a single Memory variant backed by tinymemory_api::Error. This removes the redundant openhuman_core error path and simplifies matching for callers. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Replace the stop-hook tool-target rule with a matcher restriction, since stop hooks have no tool, and add a check for argv placeholders that name no argument. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Regenerate the example lockfile to pick up updated crate versions and new transitive dependencies. Also add the executable tools spec document. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Record the new decision that the hive language defines the deployment, superseding the parallel schema of the OpenHuman hive configuration spec, and link it from the ADR index. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Redirect the tinyflows-schedule crate to the in-tree vendored source so the dependency graph resolves against the local copy instead of the git remote. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The async context loading test now spawns its body onto a tokio worker thread instead of running it directly on the test thread, since the runtime build future outgrows the default test stack and only workers get the larger stack size. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The openhuman example lockfile no longer pins tinyflows-bus and tinyflows-schedule to a specific git revision, so the duplicate tinyflows-bus entry and its source annotations are removed and the remaining references resolve to the local path dependency. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The deepswe hive example now retries provider calls that fail with DispatchAdmission, matching the other transient core errors. A test fixture was also updated to reference the re-exported ToolHookEvent path, and a stray semicolon was removed from a runner test. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The pin assertion script now also checks the tinyflows-schedule dependency, resolving the tinyflows submodule commit inside the OpenHuman vendor tree so that a stale or mismatched pin is caught in CI. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Introduce a new integration module for the language document layer, along with a tool helper that exposes it. This provides the scaffolding needed to wire document handling into the broader integration surface. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Rework the hive example to configure the declared manifest directly instead of mutating a resolved config, so model names, MCP servers, and routing are set on the package before deployment. Each seat now gets its own tinyhive-<seat> MCP server and the retry prompt targets that server by name. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Packages can now carry the runtime, provider, model, MCP, skill, tool, permission, profile, hook, session, feature and workflow sections of `hive.json`, plus a seat's profile, model, toolpacks, hooks, permissions, limits and extra context. Tool sources under `tools/` and skill bundles under `skills/` are parsed as documents, and the integration edit class owns them so a constitution can permit or refuse edits to them. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Document that `HookRunner::stop` still returns a `followup` printed by a stop hook, but the OpenHuman adapter observes and discards it because a turn is authorized only by the coordinator's round. Also note that fixed `tools/…` arguments of `command` resolve against the package root, and box the `run_package` example's futures to keep its stack within bounds. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The exec crate README now explains that it runs processes and so sits outside the pure crates guarded by assert-pure.sh, and that a stop hook cannot start another turn. The run README and its test README describe how a tools/… program and every fixed tools/… element of command are joined to the absolute package root, while substituted argv placeholders are left alone. The run_package example switches to writeln! for its Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The manifest tests now load checked-in packages through PackageSource and assert against the lowered hive and package structures instead of the old HiveConfig, covering canonical file output, seat ids, policy widths, integration limits and MCP tool boundaries. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Replace serde_yaml_ng with the new tinyhivemind-exec crate in the openhuman example's dependency graph, dropping the transitive unsafe-libyaml package. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
… hives The crate READMEs now describe hive packages as the only deployment input, with `language::PackageSource` reading and checking a directory and `deploy::HiveDeployment::from_packages` lowering one or more onto a single runtime. The example hives were regenerated against the current package format, and the retired `canonicalize` binary was dropped. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Hive deployment now takes checked tinyhivemind-lang packages rather than the retired HiveConfig manifests, with HiveDeployment::from_packages building one runtime from one or more packages. Package extras such as executable tools, script hooks, skill staging and session settings are attached during assembly, and the example hives and docs were updated to the package layout. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Stop hooks no longer return a follow-up prompt, so `HookRunner::stop` now returns nothing and ignores each hook's stdout and failures. This keeps a stop hook from starting another turn, leaving it purely observational. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Stop hooks now run to completion and return no value, so a hook can no longer start a follow-up turn; only the coordinator's round authorizes a turn. The docs and spec were updated to match, and the language integration spec now states that executable tools reach a seat only through a toolpack. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Adds a debug print in the scripted hive responder so the final message is visible whenever a retry is triggered by a tool role, making it easier to diagnose unexpected retry behaviour in tests. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add env_logger initialisation to the test that checks a new hive turn does not inherit a prior action acceptance, so log output is captured when the test runs. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Drop a stray eprintln that dumped the last message on every tool-role response and an unused env_logger initializer in the retry test, keeping the test output clean. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted a few long assertions and tuple entries in the openhuman manifest tests to satisfy rustfmt line width limits. No test behaviour changed. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the retain call on the seat's allowed tools list to wrap across multiple lines, matching the project's formatting style. No behaviour change. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Rewrite the hive example READMEs around the hive language package layout, describing hive.json as the canonical manifest, how binaries read and deploy packages without writing back, and how run-only values such as executable paths and model routes are supplied at deploy time. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The example READMEs now describe hive language packages instead of manifests, covering how each binary reads its packages, sets endpoints and run paths, then checks and deploys them. File tables and the multi_hive walkthrough were refreshed to match the new seat, role and provider-reference terminology. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The README now states that seats get their memory tools from their own `tinyhive-<seat>` MCP server rather than a single shared `tinyhive` server, matching how the tools are actually served. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Hive context now reaches a turn through the seat's membership rather than being concatenated into the seat prompt, so a seat shared across several hives sees each hive's own documents instead of a merged blob. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Hive and seat context documents are now registered in the config and referenced from each membership instead of being dropped, so shared context reaches a turn through the seat's membership per hive. The hive's memory root is also carried through from the package rather than left unset, and the profile no longer takes unused hive and skills arguments. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Enable the openhuman-embed modules feature and register the statically linked tinymcp module in the MCP deploy test so the module is available during the run. The assertion no longer tolerates the module being unavailable, since the test now proves the hive gate lets the call through rather than accepting either outcome. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add env_logger to the openhuman crate's dev-dependencies so the MCP deploy tests can initialise logging, and refresh Cargo.lock with the new transitive dependencies. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The `modules` feature of `openhuman-embed` is only needed by tests, so it now lives in dev-dependencies instead of the main dependency. The MCP deploy test also configures a linked module source and ensures the tinymcp module is loaded before exercising remote-effect classification. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Remove the env_logger, dirs, and jiff dependency tree from the openhuman crate since nothing in the deploy test path uses them anymore. The lockfile and manifest shrink accordingly, and the MCP test no longer pulls in the removed crates. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
|
Warning Review limit reached
This review includes 297 billable files and costs up to $74.25. View limit details
Comment |
senamakel
marked this pull request as ready for review
October 24, 2026 20:00
Tiny Sweeper review
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This makes
tinyhivemind-langthe one place a hive mind is defined, and bumps OpenHuman to upstream main.74d2a796, along with the tinytools, tinymemory and tinyflows revs it vendors. Its root[patch]tables are mirrored here, and the adapter is ported to the moved APIs (HookOutput,security::turn_origin,agent_registry,tinymemory_tools::{Identity, validate_root},tinyflows_schedule,cron::scheduler::run(&DispatchCtx, …)).hive.jsongainsruntime,providers,models,mcp,skills,tools,toolpacks,permissions,profiles,hooks,session,jev,featuresandworkflows. All of them are validated, resolved per seat by lowering, and covered by a newintegrationedit class the constitution can withhold.tinyhivemind-execcrate runs them by a language-neutral convention; edit a script and the next call runs the new version.HiveDeployment::from_packages, and theHiveConfigmanifest format is retired.Spec:
docs/specs/hive-language-integrations.mdanddocs/specs/executable-tools.md. Decision: ADR 0034. Plan:docs/plans/2026-10-23-hive-language-integrations.md.Known failing: 8
examples/openhumanDeepSWE tests (upstream blocker)At this OpenHuman pin, MCP calls run through the TinyMCP module, and that module faults during startup in an embedded runtime. tinybus then caches it as
Ready, so every MCP call answers "TinyMCP module is unavailable". As a result, 8deepswe_hivetest::retry::*tests fail. Theproof::testMCP baseline probably fails too: that run stopped before reaching it. The adapter's own MCP test now asserts only what the adapter owns: the hive gate refuses the scheduled call and admits the interactive one. The investigation and evidence are in tinyhumansai/openhuman#8280 and tinyhumansai/tinybus#109. Once they are fixed, I'll re-pin and restore the end-to-end assertion. Do not merge until that is done (this PR must keepmaingreen).Related issue
Refs tinyhumansai/openhuman#8280, tinyhumansai/tinybus#109
API or behavior changes
Breaking:
tinyhivemind_openhuman::configis crate-private.HiveConfig::{from_json, load_dir}and Markdown/YAML profile loading are removed; uselanguage::PackageSource+HiveDeployment::from_packages.ManifestFactory::create_seat,HiveDeployment::{build, build_with}are crate-private.SecretResolvertakestinyhivemind_lang::SecretRef.tinyhivemind_lang::LoweredSeatreplacesmodel/tools/mcp/skillswithintegration: LoweredSeatIntegration.LoweredHivegainsintegrations.model,mcpandskillsnow reference declared sections by id. Every shipped package declares what it uses.Error::Memorywrapstinymemory_api::Error. NewConfigError::{Package, ConflictingSeat, ConflictingDeclaration},lang::Error::Integration,Rule::Integration,PatchClass::Integration.openhuman-embedfeaturessecret-file,legacy-import(needed to compile the pinned core) andtestkit(in-memory session stores).New: the
tinyhivemind-execcrate;PackageSource;HiveDeployment::from_packages; therun_packageexample.Behaviour: a package's memory root becomes the hive's memory root. Hive and seat context now reaches turns through each hive's membership, so a shared seat sees each hive's own documents. Toolpack tool groups can only narrow the runtime's groups.
stophooks observe and cannot start a turn.Validation
cargo fmt --all -- --check: cleancargo clippy --all-targets --all-features -- -D warnings: cleancargo build --all-targets --all-features: cleancargo test --all-features: all passRUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features: clean.github/scripts/assert-pure.shand.github/scripts/assert-openhuman-pin.sh(now also checkstinyflows-schedule): cleancargo test --manifest-path examples/openhuman/Cargo.toml: 8 DeepSWE retry tests fail.proof::testprobably fails for the same reason but was not reached. See above.basic,hive,benchanddriver_bench --episodes 200run.hive_checkreports no findings on every gallery package and on all five converted OpenHuman packages.run_packageon theintegrationspackage: summary, shell tool, Python tool, an edited script picked up with no rebuild, and a script hook refusing a call.basic_hiveandmulti_hivebinaries run with exit 0.deepswe_hiveandpe1006_hiveneed Docker and live keys, so only their unit tests ran.Tests
tools/andskills/edits; lowering precedence, toolpack expansion and feature switches; a pinnedhive_checkreport forexamples/broken/integrations.Documentation
docs/crate-dependencies.md.IntegrationsandExecutable-toolspages, and updatedHive-language*,Host-integrationandIntegration-crates. The wiki commits are on ahive-language-integrationsbranch of the wiki repo and need merging there.Checklist
#[allow(...)],#[ignore], or relaxed lints.envcontents in the diff or the description