Repository navigation
Merge current TinyAgents owner changes - #175
Merged
senamakel merged 405 commits intoOct 22, 2026
Merged
Conversation
Acquire the notifications lock in the runtime path and the per-thread lock in the store path so that concurrent turn accounting cannot interleave with notification delivery. This prevents races where goal updates and notifications could be observed in an inconsistent order. Auto-committed-on: dragonfly
Adjust the test import to reference tinyinference_llm through the tinyagents_harness re-export so the tests resolve against the intended dependency path. Auto-committed-on: dragonfly
Drops the approval-gated rule tool fixture and the packed rule tool struct from the tool rules tests, along with the unused cancellation and lane helpers on the subagent job registry. The goals module documentation now describes the runtime surface and the harness-level counterpart of OpenHuman's thread_goals. Auto-committed-on: dragonfly
Introduces a named type alias for the binding closure so the field type in ToolCallBinding is easier to read, and documents the generic binding contract exposed through the erased host extension. Auto-committed-on: dragonfly
Relocated the Binder type alias so it sits directly above the ToolCallBinding struct it belongs to, keeping the doc comment attached to the struct it describes. No behaviour change. Auto-committed-on: dragonfly
Add a test that verifies PerCallTool delegates host call extensions and presentation metadata to the tool built for each call. This guards against regressions where the per-call wrapper drops the prototype's spec, labels, or return-direct flag. Auto-committed-on: dragonfly
PerCallTool now delegates host_call_extension, spec, display_label, display_detail, and return_direct to the wrapped prototype so per-call wrappers expose the same metadata and display behaviour as the tool they wrap. Auto-committed-on: dragonfly
The canonical_json module is only used by the skills tool, so it is now compiled behind the skills feature to avoid dead code in builds without it. A goals_and_todos example was registered with its required features, and the dependency boundary test now asserts that the subagent inference and task dependencies are declared as optional. Auto-committed-on: dragonfly
Replace the handle_of lookup with a bound_with_handle helper that hands back the PackRegistryHandle alongside the tool list, so tests no longer depend on the host extension carrying the handle. The rebind assertion now checks for ToolCallBinding, matching what the extension actually holds. Auto-committed-on: dragonfly
Reinstates tests covering require_approval deferral and auto_approve waivers, hosted definition rule stacking, approval rules on rewrite targets, re-checking repaired arguments against rules, and rules that withhold tool_search itself. Also reformats a few assertions in the skills tests. Auto-committed-on: dragonfly
Adds a test asserting that a run policy's tool rules are enforced against the tool selected through a packed skill binding, not just the binding itself. This guards against rules silently bypassing the resolved target. Auto-committed-on: dragonfly
Auto-committed-on: dragonfly
Register the jobs_tests and test_helpers modules under cfg(test) so the new subagent job tests are compiled and run. Auto-committed-on: dragonfly
Auto-committed-on: dragonfly
Test-only cleanup: RunPolicy is now referenced by its full path instead of being imported, and an unused tools binding is prefixed with an underscore so the test module compiles without warnings. No test behaviour changes. Auto-committed-on: dragonfly
Adjust the skills tests to pass the handle by reference and to mark unused tool bindings with an underscore, matching the updated render_pack_filtered signature. Auto-committed-on: dragonfly
The subagent tools module no longer declares the jobs_tests and test_helpers test modules, dropping the associated test wiring from this crate. Auto-committed-on: dragonfly
Adds tests asserting that registry lock failures surface as registry errors rather than recoverable selector denials, that cancelled jobs cannot return to running, and that settled jobs release their cancellation tokens. Also covers a budget overrun racing an owner cancel, which must settle as cancelled without output. Auto-committed-on: dragonfly
Adds a test asserting that a leaf subagent whose harness exposes delegation tools refuses to spawn and reports the leaf restriction, while a leaf without such tools still runs. This guards the policy that leaves must not delegate. Auto-committed-on: dragonfly
Add tests asserting that the jobs tool treats a null action as a query and that the moved message shell rejects request ids longer than the allowed limit. Also simplify an existing skills binding test to use the shared scripted model helpers. Auto-committed-on: dragonfly
Rename the unused tools binding to _tools so the filtered listing test no longer warns about an unused variable. Auto-committed-on: dragonfly
…nt tests The skill binding test now asserts the specific "not permitted" message instead of accepting either "denied" or "refused", and the oversized request id test unwraps the error explicitly so a missing rejection fails with a clear message rather than a generic panic. Auto-committed-on: dragonfly
The oversized request id test now reads the id of the job registered by background execution instead of hardcoding a task id, so the rejection path is exercised against a real job. Auto-committed-on: dragonfly
Extend the cancellation test to verify that cancelling an already settled job key returns a terminal error rather than succeeding. This locks in the expected behaviour for repeated cancellation attempts. Auto-committed-on: dragonfly
Extend the driver alias registry test to send a message with a request_id and assert the first call reports message_queued while a repeat with the same id is flagged as a duplicate. Add a registry test that fills the per-job request-id window past its capacity and confirms the oldest id ages out and can be delivered again. Auto-committed-on: dragonfly
Adds a test asserting that cancelling the parent run context settles a background driver subagent job as cancelled and leaves the driver invoked exactly once. Auto-committed-on: dragonfly
The subagent job-control tests and their shared helpers have been deleted, so the module no longer carries coverage for per-job cancellation, parent-cancel cascade, panic safety, message deduplication, or alias configuration. Auto-committed-on: dragonfly
Auto-committed-on: dragonfly
…cascade Adds a case asserting that a fixed query alias rejects a null configured identifier with an error naming the field. Also switches the cancel tool setup to use the identifier field helper and adds a test verifying that cancelling the parent run settles a running background driver job as cancelled. Auto-committed-on: dragonfly
The file contained two identical copies of the parent cancellation cascade test, so the redundant copy was dropped to keep the suite free of duplicate coverage. Auto-committed-on: dragonfly
The call to ledger::record_result was passing a reference to output where the function now expects the value itself, so the borrow was dropped to match the updated signature. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
ToolRulePolicy now carries an optional permission ceiling that ToolGate checks before applying rules, refusing calls whose argument-sensitive permission level exceeds the session limit. A test fixture covers the argument-aware dispatch path. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
… test The test built the gate from a temporary policy that was dropped at the end of the statement, so the policy is now bound to a local first and passed by reference. This keeps the test valid under borrow rules without changing what it asserts. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted the argument-aware permission test and its helper to satisfy rustfmt line width, and removed a redundant blank line in the policy type. No behaviour changes. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The policy's is_permissive check now also requires that no permission ceiling is set, so a policy with a ceiling is no longer reported as admitting every tool. A test asserts the new behaviour. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a test that runs a packed dangerous tool through the harness under a read-only permission ceiling and asserts the tool never executes, with the refusal surfaced back to the model as a tool error. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
A middleware error from after_tool_output_screened previously propagated without recording a terminal event, leaving the tool call stuck in a started state. The failure is now reported through fail_tool_call before the error is returned. The after_model_rewrite hooks also run in registration order so restored request state stays final. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The ledger now receives the screened model-facing output rather than the raw tool result, so redactions are reflected in the state block. Patch path extraction is limited to patch tools, and the state block is stripped by its header so a truncated copy is still replaced. Paused goals now get a context block telling the model to resume, set a new goal, or leave it paused. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Paused goals now receive a context block containing goal_resume, so the turn preparation test asserts the block is present instead of absent and the related test name and doc comment were updated to match. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The README now describes the context block returned by prepare_turn as optional rather than naming the active_goal_context_block field, and explains that active and budget-limited goals receive their usual context while paused goals get guidance to resume, set a new goal, or stay paused. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reformatted assertions and call chains across the goals runtime and state block test suites so they match rustfmt's line-width and indentation rules. No test behaviour or coverage changed. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The screening test now feeds a tool result whose canonical content holds a secret but whose markdown summary is safe, and asserts the ledger keeps the summary while dropping both secrets. This checks that screening uses the model-facing output rather than the raw canonical content. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The test now builds ToolRulePolicy with a struct literal setting permission_ceiling directly, since the with_permission_ceiling builder method is no longer available. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Replace the struct literal with the ToolRulePolicy builder when setting the read-only permission ceiling, keeping the test aligned with the current construction API. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The prepared goal test now checks that a paused goal's context block is present and mentions goal_resume, instead of asserting it is absent. This matches the behaviour where paused goals surface resume context to the host turn. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
feat(state_block): a request-only run-state block with the goal, the plan and tool-call facts
…channel-identity feat(harness): add generic turn runner and progress types
…ked-permissions-finish-evidence-20261018 Fix packed-call minimum permissions and observe actual tool execution
Update the vendored tinyinference submodule to the latest upstream commit. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the vendored tinyinference submodule to the latest upstream commit. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
…-8092-owner-current-union
Update the vendored tinytools submodule to a newer revision. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
…nt-union # Conflicts: # crates/tinyagents-harness/src/lib.rs # crates/tinyagents-hooks/Cargo.toml # crates/tinyagents-registry/Cargo.toml # vendor/tinytools
Co-authored-by: Medulla <medulla@tinyhumans.ai>
Update the locked versions of the tinyinference workspace crates from 0.4.1 to 0.5.0 to match the new release. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The model response construction was missing the charged_amount_nanos field, so it is now set to None alongside the existing charged_amount to keep the struct fully initialized. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
The cost estimation tests now set the new charged_amount_nanos field to None in their usage structs, keeping the fixtures in sync with the extended usage type. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Add a clippy allow attribute to the steering command enum so the public command payload stays ergonomic and its serde shape is preserved. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
Reworded the comment on SteeringCommand to explain that the large_enum_variant allow exists to keep InjectMessage(Message) source-compatible, since boxing the payload would change the public constructor's type. Auto-committed-on: cuttlefish Co-authored-by: Medulla <medulla@tinyhumans.ai>
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.
Merge the TinyAgents epic work with canonical main so the epic inherits the current harness APIs and its required TinyInference and TinyTools versions.
This preserves epic-native oneshot, registry, metadata, and routing behavior while taking canonical progress, inspection auth, native harness-tools/goals/todos, and TinyTools 0.6. The inspection entry points include
ClaudeAgentSdkInspectionAuthandClaudeAgentSdkProvider::for_inspection. TinyInference is pinned to merged epic commit766829095d0730cd7c3cc7de1b589749bda979f0; TinyTools is pinned to canonical3a01641f8ebd8a55656cd212f9a90638d958a447.The integration adapts TinyInference 0.5.0 usage metadata, including the new nanodollar field. Claude Code CLI usage does not report a nanodollar charge, so that conversion remains
None. The strict clippy lint on the publicSteeringCommand::InjectMessage(Message)variant is narrowly allowed to preserve the public Rust constructor type.Validation on the owner source:
cargo fmt --all -- --check,cargo check --workspace --all-targets,cargo clippy --workspace --all-targets -- -D warnings, andcargo test --workspace --no-fail-fast(5,813 passed, 0 failed, 35 ignored across 135 result blocks). Full gate receipts and raw logs are maintained outside the target worktree.Refs senamakel/openhuman#256
Part of tinyhumansai/openhuman#8092