Skip to content

Orb bridges: PycoClaw adapter (tinyagentos/orb/bridges/pycoclaw.py, spec s5 row) - #3973

Merged
jaylfc merged 2 commits into
devfrom
exec/tsk-kxm5xd
Oct 27, 2026
Merged

jaylfc merged 2 commits into
devfrom
exec/tsk-kxm5xd

Conversation

@jaylfc

@jaylfc jaylfc commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

CARD TITLE (intent, not commit subject): Orb bridges: PycoClaw adapter (tinyagentos/orb/bridges/pycoclaw.py, spec s5 row)

Autonomous build of board card tsk-kxm5xd.

tsk-kxm5xd: Orb bridges: PycoClaw adapter

Added

  • Orb bridge adapter for PycoClaw (tinyagentos/orb/bridges/pycoclaw.py): pure adapter that surfaces webrepl URLs (https://{host}/webrepl) for orbs whose app is pycoclaw, discovered via orbs_running/orb_host/target, with top-level instruction "No Orb running PycoClaw found on the LAN." when there are no targets

RED-PROOF:

FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_one_orb_with_addresses
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_orb_no_addresses_falls_back_to_name_local
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_ignores_other_app_ids
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_empty_input
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_installed_returns_none
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_constants - ImportError
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_in_adapters - AssertionError: assert 'pycoclaw' in ['mimiclaw']
FAILED tests/orb/test_bridge_pycoclaw.py::test_evaluate_all_includes_pycoclaw_without_error
8 failed, 15 passed in 0.52s

23 passed in 0.22s

Files:
changelog.d/tsk-kxm5xd-orb-bridge-pycoclaw.md | 3 +
tests/orb/test_bridge_pycoclaw.py | 111 ++++++++++++++++++++++++++
tinyagentos/orb/bridges/pycoclaw.py | 47 +++++++++++
3 files changed, 161 insertions(+)

In-house review (pre-PR)

in-house-review: PASS (kilo/nvidia/nemotron-3-ultra-550b-a55b:free)

reviewer output

VERDICT: PASS

  • NIT: tests/orb/test_bridge_pycoclaw.py:73 the test test_pycoclaw_evaluate_orb_no_addresses_falls_back_to_name_local asserts orb_host returns "pyco.local" for an orb with empty addresses — this relies on orb_host behavior which is not shown in the diff but is assumed correct per the mimiclaw pattern
  • NIT: changelog.d/tsk-kxm5xd-orb-bridge-pycoclaw.md:3 the bullet mentions "discovered via orbs_running/orb_host/target" but the card spec says "orbs_running(lan_orbs, APP_ID)" — minor wording difference only

In-house-Review: PASS model=kilo/nvidia/nemotron-3-ultra-550b-a55b:free head=fac4a5464 needs-lead=0


Summary by Gitar

  • New bridge adapter:
    • Added pycoclaw adapter surfacing WebREPL URLs for Orbs running PycoClaw on the LAN
  • Tests:
    • Added unit tests covering target discovery, empty input, app filtering, and adapter registration

This will update automatically on new commits.

Summary by CodeRabbit

  • New Features
    • Added support for connecting to PyCoClaw devices through the browser-based WebREPL, with device URLs and guidance shown for matching devices.
    • Added a message when no matching devices are found.

### Added

- Orb bridge adapter for PycoClaw (tinyagentos/orb/bridges/pycoclaw.py): pure adapter that surfaces webrepl URLs (https://{host}/webrepl) for orbs whose app is pycoclaw, discovered via orbs_running/orb_host/target, with top-level instruction "No Orb running PycoClaw found on the LAN." when there are no targets

RED-PROOF:
```text
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_one_orb_with_addresses
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_orb_no_addresses_falls_back_to_name_local
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_ignores_other_app_ids
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_evaluate_empty_input
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_installed_returns_none
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_constants - ImportError
FAILED tests/orb/test_bridge_pycoclaw.py::test_pycoclaw_in_adapters - AssertionError: assert 'pycoclaw' in ['mimiclaw']
FAILED tests/orb/test_bridge_pycoclaw.py::test_evaluate_all_includes_pycoclaw_without_error
8 failed, 15 passed in 0.52s
```
23 passed in 0.22s
@qodo-code-review

Copy link
Copy Markdown

ⓘ Qodo reviews are paused because your trial has ended. Ask your workspace admin to add credits to resume reviews. Manage billing

@coderabbitai

coderabbitai Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between 23dfeda and ddef5d3.

Files selected for processing: 3
  • changelog.d/tsk-kxm5xd-orb-bridge-pycoclaw.md
  • tests/orb/test_bridge_pycoclaw.py
  • tinyagentos/orb/bridges/pycoclaw.py

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

Walkthrough

Adds a PycoClaw Orb bridge adapter. It finds matching LAN Orbs, creates HTTPS WebREPL targets, and returns instructions based on whether targets are found.

Changes: PycoClaw bridge

Layer / File(s) Summary
Bridge evaluation and validation
tinyagentos/orb/bridges/pycoclaw.py, tests/orb/test_bridge_pycoclaw.py, changelog.d/tsk-kxm5xd-orb-bridge-pycoclaw.md
The adapter selects PycoClaw Orbs and creates WebREPL targets when a host is available. Tests cover host selection, fallback addresses, filtering, empty results, constants, and adapter discovery. The changelog describes the bridge.

Priority: Normal

Estimated code review effort: 2 (Simple) | ~12 minutes

Change: Feature

Sequence Diagram(s)

sequenceDiagram
  participant Bridge as PycoClaw bridge
  participant Discovery as orbs_running()
  participant Host as orb_host()
  participant Target as target()
  Bridge->>Discovery: Find running LAN Orbs
  Discovery-->>Bridge: Return discovered Orbs
  Bridge->>Host: Get host for each matching Orb
  Host-->>Bridge: Return host
  Bridge->>Target: Build WebREPL target
  Target-->>Bridge: Return target
  Bridge-->>Bridge: Return BridgeResult with targets and instruction
Loading

Possibly related PRs

  • jaylfc/taOS#3966: Adds the bridge interfaces and discovery flow used by the PycoClaw adapter.
  • jaylfc/taOS#3884: Adds LAN Orb records with the fields consumed by the PycoClaw bridge.
Merge Risk: Minimal · up to ddef5

The bridge provides the documented WebREPL URLs. No actionable merge-blocking issue remains; merge after normal checks.

Pre-merge checks: Passed 5
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the main change: adding a PycoClaw Orb bridge adapter. The file path and spec reference add minor noise but do not make the title unclear.
Docstring Coverage Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within survi…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Documentation-only edits and deletions within surviving functions are included; unchanged diff context and fully deleted functions are excluded. Analyzed 10 functions across 2 files. (1 skipped: 1 unsupported.)

Finishing Touches: 💡 1
🛠️ Fix failing CI checks: 💡
  • Commit to this branch
  • Create a new PR
📝 Generate docstrings
  • Commit to this branch
  • Create a new PR
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@gitar-bot

gitar-bot Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

Gitar is working

Verification

Rules No rules evaluated

Functional validation Not enabled

Set up

Auto-approval Not enabled

Set up

Gitar

@jaylfc jaylfc added the needs-jay Automerge refused (sensitive path / unreadable compare): Jay merges. Not counted in the lane PR cap. label Oct 25, 2026
@jaylfc

jaylfc commented Oct 25, 2026

Copy link
Copy Markdown
Owner Author

Lead review (taosc-dev, card tsk-kxm5xd, head fac4a54): PASS.

Checked against the card line by line: constants, installed(), instruction strings verbatim, matching rule, pure (no network/subprocess/discovery), only the adapter + its test + the changelog fragment touched. Red-first fence is real and names tests that ship here. All five adapter PRs (#3972 #3973 #3976 #3977 #3978) applied together on origin/dev: pytest tests/orb 228 passed.

The only red check is bot-review-gate (no CodeRabbit artifact on this head yet, CR rate-limited). Merge waits a CR artifact + Jay (tinyagentos/orb/ path).

@jaylfc
jaylfc merged commit 24be059 into dev Oct 27, 2026
45 of 47 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-jay Automerge refused (sensitive path / unreadable compare): Jay merges. Not counted in the lane PR cap.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant