Skip to content

Orb bridges: ESP-Claw adapter (tinyagentos/orb/bridges/esp_claw.py, spec s5 row) - #3977

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

jaylfc merged 2 commits into
devfrom
exec/tsk-4cfupy

Conversation

@jaylfc

@jaylfc jaylfc commented Oct 25, 2026 •

Copy link
Copy Markdown
Owner

CARD TITLE (intent, not commit subject): Orb bridges: ESP-Claw adapter (tinyagentos/orb/bridges/esp_claw.py, spec s5 row)

Autonomous build of board card tsk-4cfupy.

tsk-4cfupy: Orb bridges: ESP-Claw adapter

RED-PROOF:

FFFFF...............                                                     [100%]
=================================== FAILURES ===================================
_________________ test_esp_claw_evaluate_one_orb_with_address __________________

    def test_esp_claw_evaluate_one_orb_with_address():
        """Test esp_claw.evaluate with one orb matching esp-claw app id."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:9: ImportError
___________ test_esp_claw_evaluate_underscore_app_id_does_not_match ____________

    def test_esp_claw_evaluate_underscore_app_id_does_not_match():
        """Test esp_claw.evaluate does not match app 'esp_claw' (underscore)."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:30: ImportError
_____________________ test_esp_claw_installed_returns_none _____________________

    def test_esp_claw_installed_returns_none():
        """Test esp_claw.installed returns None."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:48: ImportError
______________ test_esp_claw_adapter_registered_and_evaluate_all _______________

    def test_esp_claw_adapter_registered_and_evaluate_all():
        """Test esp_claw is in adapters() and evaluate_all includes it without error."""
        from tinyagentos.orb.bridges import adapters, evaluate_all

        module_names = [m.__name__.rsplit(".", 1)[1] for m in adapters()]
>       assert "esp_claw" in module_names
E       AssertionError: assert 'esp_claw' in ['mimiclaw']

tests/orb/test_bridge_esp_claw.py:58: AssertionError
___________________________ test_esp_claw_constants ____________________________

    def test_esp_claw_constants():
        """Test esp_claw module constants."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:73: ImportError
=========================== short test summary info ============================
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_evaluate_one_orb_with_address
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_evaluate_underscore_app_id_does_not_match
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_installed_returns_none
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_adapter_registered_and_evaluate_all
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_constants - ImportErr...
5 failed, 15 passed in 0.41s

GREEN:

....................                                                     [100%]
20 passed in 0.20s

Files:
changelog.d/tsk-4cfupy-orb-bridge-esp-claw.md | 9 ++++
tests/orb/test_bridge_esp_claw.py | 77 +++++++++++++++++++++++++++
tinyagentos/orb/bridges/esp_claw.py | 47 ++++++++++++++++
3 files changed, 133 insertions(+)

In-house review (pre-PR)

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

reviewer output

VERDICT: PASS

  • NIT: changelog.d/tsk-4cfupy-orb-bridge-esp-claw.md:9 missing newline at end of file
  • NIT: tests/orb/test_bridge_esp_claw.py:77 missing newline at end of file
  • NIT: tinyagentos/orb/bridges/esp_claw.py:47 missing newline at end of file

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


Summary by Gitar

  • Tests:
    • Added unit tests covering ESP-Claw evaluate, installed, constants, and adapter registration

This will update automatically on new commits.

Summary by CodeRabbit

  • New Features
    • Added support for ESP-Claw devices on the local network. Matching devices with a host address are shown with a link to their configuration page, where setup can be completed in the device’s web interface.
    • When no matching ESP-Claw device is found, the app displays a message indicating that none are available.

RED-PROOF:
```text
FFFFF...............                                                     [100%]
=================================== FAILURES ===================================
_________________ test_esp_claw_evaluate_one_orb_with_address __________________

    def test_esp_claw_evaluate_one_orb_with_address():
        """Test esp_claw.evaluate with one orb matching esp-claw app id."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:9: ImportError
___________ test_esp_claw_evaluate_underscore_app_id_does_not_match ____________

    def test_esp_claw_evaluate_underscore_app_id_does_not_match():
        """Test esp_claw.evaluate does not match app 'esp_claw' (underscore)."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:30: ImportError
_____________________ test_esp_claw_installed_returns_none _____________________

    def test_esp_claw_installed_returns_none():
        """Test esp_claw.installed returns None."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:48: ImportError
______________ test_esp_claw_adapter_registered_and_evaluate_all _______________

    def test_esp_claw_adapter_registered_and_evaluate_all():
        """Test esp_claw is in adapters() and evaluate_all includes it without error."""
        from tinyagentos.orb.bridges import adapters, evaluate_all

        module_names = [m.__name__.rsplit(".", 1)[1] for m in adapters()]
>       assert "esp_claw" in module_names
E       AssertionError: assert 'esp_claw' in ['mimiclaw']

tests/orb/test_bridge_esp_claw.py:58: AssertionError
___________________________ test_esp_claw_constants ____________________________

    def test_esp_claw_constants():
        """Test esp_claw module constants."""
>       from tinyagentos.orb.bridges import esp_claw
E       ImportError: cannot import name 'esp_claw' from 'tinyagentos.orb.bridges' (/tmp/exec-tsk-4cfupy/tinyagentos/orb/bridges/__init__.py)

tests/orb/test_bridge_esp_claw.py:73: ImportError
=========================== short test summary info ============================
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_evaluate_one_orb_with_address
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_evaluate_underscore_app_id_does_not_match
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_installed_returns_none
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_adapter_registered_and_evaluate_all
FAILED tests/orb/test_bridge_esp_claw.py::test_esp_claw_constants - ImportErr...
5 failed, 15 passed in 0.41s
```

GREEN:
```text
....................                                                     [100%]
20 passed in 0.20s
```
@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 b5a20de.

Files selected for processing: 3
  • changelog.d/tsk-4cfupy-orb-bridge-esp-claw.md
  • tests/orb/test_bridge_esp_claw.py
  • tinyagentos/orb/bridges/esp_claw.py

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

Walkthrough

Adds an ESP-Claw bridge adapter that selects matching LAN Orbs with a host and provides a browser configuration URL. The adapter returns instructions for opening a device UI or reports when no matching Orb is found.

Changes: ESP-Claw bridge

Layer / File(s) Summary
Adapter evaluation and validation
tinyagentos/orb/bridges/esp_claw.py, tests/orb/test_bridge_esp_claw.py, changelog.d/tsk-4cfupy-orb-bridge-esp-claw.md
Adds bridge metadata and evaluation behavior for LAN Orbs running esp-claw. Tests cover target creation, non-matching app IDs, installed() returning None, registration, and adapter constants. The changelog describes the adapter and its configuration instructions.

Priority: Normal

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

Change: Feature

Possibly related PRs

  • jaylfc/taOS#3966: Defines the bridge result and adapter evaluation interfaces used by this adapter.
  • jaylfc/taOS#3884: Adds the LAN Orb data returned to the adapter for app filtering and target construction.
Merge Risk: Minimal · up to b5a20

The adapter provides the documented default device configuration URL. No actionable merge-blocking issue remains; merge readiness is subject to 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 an ESP-Claw Orb bridge adapter. The file path and spec reference add detail 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 7 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-4cfupy, head c1eb53b): 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 1f0e9aa 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