Repository navigation
feat(rutis): plugin logs, the adapter contract, one contract for three ecosystems - #268
Merged
Merged
Conversation
…act three ecosystems
- bridge: the yoagent service gains log(level, message, {run_id}?) →
tracing target yoagent_rutis::plugin with a run_id field; the dsh
adapter uses it. Test: tests/plugin_log_test.rs (own binary)
- docs: the extensions guide shows DSH, rutis-agent and pi plugging in
through Extension + the bridge with no core change, and what the bridge
gives every ecosystem (images, logs, fail-closed); the bridge README
states the adapter contract (seven fail-closed rules)
- CI: the rutis-bridge job runs the rutis-agent example
- guide: yoagent-rutis is on crates.io
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01T7iq5hpndSiHQcnAsywKuG
Review of #268: - log never returns an error: a rejected async call a plugin does not catch ends its Node runtime (no unhandledRejection handler). Any message (non-strings as JSON), any context (other fields ignored, e.g. a whole hook argument). Test: a malformed uncaught call, then 'still alive'. - Python: log is a coroutine — documented as await yoagent.log(...) - docs: two ecosystems plug in today, pi is in review (#265); the adapter rules are a contract ('should'), with which rules the DSH adapter meets Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T7iq5hpndSiHQcnAsywKuG
yuanhao
added a commit
that referenced
this pull request
Oct 8, 2026
…experimental Bridge files from main (log never rejects, run_id context); the pi branch's log test kept as pi_log_test (the adapter's warnings reach the host). The pi and DSH adapters are marked experimental, expected to move to the yo app once it hosts plugins; the guide counts pi among the three. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T7iq5hpndSiHQcnAsywKuG
This was referenced Oct 8, 2026
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.
Wires the three lasting outcomes of the ecosystem work into yoagent itself, independent of the pi adapter (#265):
yoagentservice gainslog(level, message, { run_id }?): a TypeScript/Python plugin's diagnostics go to the host'stracingoutput (targetyoagent_rutis::plugin) with the run as arun_idfield, so a GASP recorder or log viewer can attribute them (GASP recording is a follow-up). The dsh adapter uses it. Test:tests/plugin_log_test.rs(own binary — global subscriber), mutation-checked.docs/concepts/extensions.md: One contract, other ecosystems — DSH, rutis-agent and pi (experimental, feat(rutis): pi extensions adapter #265) throughExtension+ the bridge with no core change, and what every ecosystem gets (images, logs, fail-closed).rutis-bridgejob now runs the rutis-agent example, so all three ecosystems' proofs run in CI (dsh in the languages job, pi with feat(rutis): pi extensions adapter #265).Also: the guide no longer says yoagent-rutis is unpublished.
#265 will be merged with main after this lands (its own copy of
logis the same code, withoutrun_id).🤖 Generated with Claude Code
https://claude.ai/code/session_01T7iq5hpndSiHQcnAsywKuG