Skip to content

feat: use real logos-delivery-module for Delivery transport#166

Open
jimmy-claw wants to merge 6 commits intomasterfrom
jimmy/lmao-issue-143-20260416
Open

feat: use real logos-delivery-module for Delivery transport#166
jimmy-claw wants to merge 6 commits intomasterfrom
jimmy/lmao-issue-143-20260416

Conversation

@jimmy-claw
Copy link
Copy Markdown
Owner

Summary

  • Add logos-core feature to lmao-ffi that switches the FFI transport from LogosMessagingTransport (nwaku REST) to LogosCoreDeliveryTransport (delivery_module IPC via logos_core_call_plugin_method_async)
  • Enable logos-core feature in the Nix flake build (logos-core-module/flake.nix) so the Logos Core plugin automatically uses delivery_module when running inside Logos Core
  • Update architecture docs to reflect the transport is now available (not "planned")

Fixes #143

Test plan

  • cargo test --workspace — all tests pass (default REST transport unchanged)
  • cargo check -p lmao-ffi --features logos-core — compiles cleanly with delivery transport
  • Manual: build with nix build .#lgx in logos-core-module/ and verify the plugin uses delivery_module IPC

🤖 Generated with Claude Code

jimmy-claw and others added 6 commits April 16, 2026 04:06
Comprehensive analysis of replacing OpenClaw with a Logos Core module.
Maps existing LMAO capabilities against OpenClaw features, identifies
critical gaps (lifecycle manager, scheduler, tool sandbox, LLM layer),
and recommends a 3-phase approach starting with hybrid integration.

Fixes #51

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add DeliveryTransport C++ class that obtains a QtRO replica of
delivery_module via logosAPI->getClient() and exposes send/subscribe/
unsubscribe methods. Wire it into LmaoComponent and LmaoBackend so
the module uses QtRO inter-module calls for message transport when
running inside Logos Core, with FFI fallback when QtRO is unavailable.

- DeliveryTransport: QtRO bridge to delivery_module (send, subscribe,
  unsubscribe, createNode, start, messageReceived event handling)
- LmaoComponent: stores logosAPI, initializes DeliveryTransport
- LmaoBackend: accepts DeliveryTransport, adds deliverySend() method
- module.yaml: declares delivery_module dependency
- CMakeLists.txt: adds DeliveryTransport.cpp to build

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add tabbed UI plugin with Dashboard, Fleet, Metrics, and Task History views.

FFI layer:
- Add lmao_get_info() for agent identity, topics, and encryption status
- Add lmao_get_metrics() for 17 operational counters (tasks, messages, etc.)
- Add tests for both new FFI functions (98 total tests pass)

C++ backend:
- Add getInfo() and getMetrics() Q_INVOKABLE methods to LmaoBackend

QML UI:
- DashboardView: agent status, public key (click to copy), Waku topics,
  encryption status, QtRO transport status
- MetricsView: grouped counter tiles with auto-refresh (5s), covering tasks,
  messages, discovery, sessions, streaming, and retries
- TaskHistoryView: in-memory task log with expandable details, status badges,
  timestamps, and clear functionality
- LmaoView: tabbed navigation (Dashboard/Fleet/Metrics/History) replacing
  the single fleet view

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Wire up LogosCoreDeliveryTransport in the FFI layer so the Logos Core
plugin uses delivery_module IPC (via logos_core_call_plugin_method_async)
instead of the nwaku REST transport.

- Add `logos-core` feature to lmao-ffi that switches NodeTransport from
  LogosMessagingTransport (REST) to LogosCoreDeliveryTransport (IPC)
- Enable `logos-core` feature in the Nix flake build so the plugin
  automatically uses delivery_module when running inside Logos Core
- Update architecture docs to reflect transport availability

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add logos-co/logos-delivery-module as a Nix flake dependency and wire
the QtRO inter-module call path for task sending.

Changes:
- flake.nix: add logos-delivery-module input, include in build deps
- lmao-ffi: add lmao_build_task_envelope() FFI function that creates
  A2A Task envelope (topic + base64 payload) without sending, so C++
  can route through QtRO delivery_module directly
- LmaoBackend: add sendTaskViaDelivery() that prefers QtRO when
  connected, falls back to FFI transport otherwise
- LmaoView.qml: use sendTaskViaDelivery for task sending
- Headers: declare lmao_build_task_envelope in both FFI headers
- Tests: 5 new tests for lmao_build_task_envelope (103 total pass)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: use real logos-delivery-module for Delivery transport

1 participant