From 70d66cd814e4d0484e9b11dfbf45c6571b2cd4a7 Mon Sep 17 00:00:00 2001 From: Hongming Wang Date: Thu, 30 Apr 2026 13:03:44 -0700 Subject: [PATCH 1/3] feat: poll-mode inbound delivery + `molecule connect` CLI (Phase 30.8c) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit External agents that can't expose a public HTTP endpoint (laptops behind NAT, ephemeral CI runners, hermes self-hosted, codex et al) had to reverse- engineer the activity-poll loop from molecule-mcp-claude-channel/server.ts because the SDK only shipped the push-mode `A2AServer` (Phase 30.8b). This adds the complementary path: - `RemoteAgentClient.fetch_inbound(since_id=…)` — one-shot GET against `/workspaces/:id/activity?type=a2a_receive&since_id=…`. Cursor-loss (410) surfaces as `CursorLostError`; caller resets and re-polls. - `RemoteAgentClient.reply(msg, text)` — smart-routes to `/notify` for canvas users, `/a2a` (JSON-RPC envelope + X-Source-Workspace-Id) for peer agents. Hides the reply-path bifurcation from connector authors. - `PollDelivery` / `PushDelivery` / `InboundDelivery` protocol — same `MessageHandler` callback works for both transports. - `RemoteAgentClient.run_agent_loop(handler, delivery=None)` — combined heartbeat + state-poll + inbound dispatch. Defaults to `PollDelivery`. Async handlers detected and `asyncio.run`'d (matches A2AServer pattern). Sleep cadence = min(heartbeat_interval, delivery.interval). - `python -m molecule_agent connect` CLI — one-line bootstrap. Loads a user's `module:function` via importlib, registers, runs the loop until pause/delete or SIGTERM. All flags also read from environment variables. Tests: 50 new (test_inbound.py, test_cli_connect.py) covering every prod branch — source normalization, cursor advancement, 410 reset, async/sync handler dispatch, handler exception → log+continue+advance, smart-reply routing for canvas vs peer vs unknown sources, run_agent_loop terminal states, sleep-interval selection, CLI handler resolution failures. Resolves #17. --- CLAUDE.md | 19 +- molecule_agent/README.md | 55 +++- molecule_agent/__init__.py | 18 ++ molecule_agent/__main__.py | 195 ++++++++++++ molecule_agent/client.py | 265 +++++++++++++++- molecule_agent/inbound.py | 370 ++++++++++++++++++++++ tests/test_cli_connect.py | 167 ++++++++++ tests/test_inbound.py | 613 +++++++++++++++++++++++++++++++++++++ 8 files changed, 1695 insertions(+), 7 deletions(-) create mode 100644 molecule_agent/inbound.py create mode 100644 tests/test_cli_connect.py create mode 100644 tests/test_inbound.py diff --git a/CLAUDE.md b/CLAUDE.md index 7736e31..a6d2665 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -139,6 +139,8 @@ unless noted): | `POST` | `/workspaces/:id/delegate` | 30.6 | bearer + X-Workspace-ID, 300s timeout | | `GET` | `/workspaces/:id/plugins/:name/download` | 30.3 | bearer | | `POST` | `/workspaces/:id/plugins` | 30.3 | bearer | +| `GET` | `/workspaces/:id/activity?type=a2a_receive&since_id=…` | 30.8c | bearer (poll-mode inbound) | +| `POST` | `/workspaces/:id/notify` | 30.8c | bearer (canvas-user reply) | **Token** is cached at `~/.molecule//.auth_token` with `0600` permissions. On restart the client reuses the cached token — the platform @@ -201,9 +203,20 @@ python -m molecule_agent verify-sha256 ./my-plugin-dir first**. Do not patch silently — the SDK is consumed across multiple runtime environments and silent patches can cause subtle breakage elsewhere. -- `molecule_agent` does not yet bundle an inbound A2A server helper. - Platform-initiated calls to a remote agent without a publicly reachable - endpoint will not succeed. See Phase 30.8b in the platform's `PLAN.md`. +- `molecule_agent` ships two inbound delivery paths: **push** (Phase 30.8b, + `A2AServer` — for agents with a publicly reachable URL) and **poll** (Phase + 30.8c, `PollDelivery` — for agents behind NAT or without a public endpoint, + the typical case for hermes-self-hosted, codex, and similar OSS runtimes). + Both feed the same `MessageHandler` callback through + `RemoteAgentClient.run_agent_loop(handler)`. The reply transport + (`/notify` for canvas users vs `/a2a` for peer agents) is hidden behind + `client.reply(msg, text)`. + +- One-line bootstrap for poll-mode agents: + `python -m molecule_agent connect --platform-url … --workspace-id … --token … --handler my_module:fn`. + Picks `PollDelivery` automatically when `--reported-url` is empty; SIGTERM/SIGINT + shut the loop down cleanly. Cursor optionally persisted to `--cursor-file` so + restarts resume from the last-seen activity row. --- diff --git a/molecule_agent/README.md b/molecule_agent/README.md index 34c89f0..8a38367 100644 --- a/molecule_agent/README.md +++ b/molecule_agent/README.md @@ -57,13 +57,62 @@ A runnable demo with full setup walkthrough lives at | `heartbeat(...)` | 30.1 | Single bearer-authed heartbeat | | `get_peers()` / `discover_peer()` | 30.6 | Sibling URL discovery with TTL cache | | `call_peer(target, message)` | 30.6 | Direct A2A with proxy fallback | +| `fetch_inbound(since_id=…)` | 30.8c | One-shot poll of `/workspaces/:id/activity` for inbound A2A | +| `reply(msg, text)` | 30.8c | Smart-routes reply to `/notify` (canvas user) or `/a2a` (peer) | | `run_heartbeat_loop()` | combo | Drives heartbeat + state-poll on a timer; exits on pause/delete | +| `run_agent_loop(handler)` | combo | Heartbeat + state + **inbound dispatch**; exits on pause/delete | + +## Inbound delivery — push vs poll + +Two ways an external agent can receive A2A messages: + +| Path | When to use | Class | +|---|---|---| +| **Push** | Your agent has a publicly reachable URL (cloud VM, ngrok tunnel) | `A2AServer` (Phase 30.8b) | +| **Poll** | Your agent is behind NAT, on a laptop, or in a CI runner with no public URL | `PollDelivery` (Phase 30.8c) | + +Both dispatch to the same `MessageHandler` callback through `run_agent_loop`: + +```python +from molecule_agent import RemoteAgentClient, InboundMessage + +def my_handler(msg: InboundMessage, client: RemoteAgentClient) -> str | None: + print(f"← {msg.source}: {msg.text}") + return f"echo: {msg.text}" # auto-routed via /notify or /a2a + +client = RemoteAgentClient(workspace_id="…", platform_url="…") +client.register() +client.run_agent_loop(my_handler) # default: PollDelivery +``` + +The reply transport (`/notify` for canvas users, `/a2a` for peer agents) is hidden — `client.reply(msg, text)` picks based on `msg.source`. Async handlers work too; `PollDelivery` detects awaitable returns and `asyncio.run`s them. + +## CLI: `molecule_agent connect` + +One command bootstraps the full poll-mode loop. No code beyond your handler: + +```bash +python -m molecule_agent connect \ + --platform-url https://your-tenant.moleculesai.app \ + --workspace-id 550e8400-… \ + --token your-workspace-token \ + --handler my_handlers:echo \ + --poll-interval 5 \ + --cursor-file ~/.molecule/cursor +``` + +Where `my_handlers.py` is anywhere on `PYTHONPATH`: + +```python +def echo(msg, client): + return f"echo: {msg.text}" +``` + +All flags also read from environment variables (`MOLECULE_PLATFORM_URL`, `MOLECULE_WORKSPACE_ID`, `MOLECULE_WORKSPACE_TOKEN`, `MOLECULE_POLL_INTERVAL`, `MOLECULE_CURSOR_FILE`). SIGTERM/SIGINT shut the loop down cleanly. ## What it doesn't do (yet) -- **No inbound A2A server.** Other agents can't initiate calls to your remote - agent unless you host an HTTP endpoint yourself. Future `start_a2a_server()` - helper will close this gap. +- **No long-poll.** Activity polling is fixed-cadence (default 5s). Server-side long-poll support would cut p50 inbound latency to ~0; tracked separately. - **No automatic reconnect after token loss.** If `~/.molecule//.auth_token` is deleted, you'll need to re-issue the token via the platform admin (since `POST /registry/register` is idempotent — it won't mint a second token for diff --git a/molecule_agent/__init__.py b/molecule_agent/__init__.py index 372edf4..3c92ddd 100644 --- a/molecule_agent/__init__.py +++ b/molecule_agent/__init__.py @@ -41,6 +41,16 @@ from .client import ( WorkspaceState, verify_plugin_sha256, ) +from .inbound import ( + CursorLostError, + DEFAULT_POLL_INTERVAL, + InboundDelivery, + InboundMessage, + InboundSource, + MessageHandler, + PollDelivery, + PushDelivery, +) # compute_plugin_sha256 lives in __main__ (the CLI entry point). # Import it here so `from molecule_agent import compute_plugin_sha256` works. @@ -51,6 +61,14 @@ __all__ = [ "RemoteAgentClient", "WorkspaceState", "PeerInfo", + "InboundMessage", + "InboundSource", + "InboundDelivery", + "PollDelivery", + "PushDelivery", + "MessageHandler", + "CursorLostError", + "DEFAULT_POLL_INTERVAL", "compute_plugin_sha256", "verify_plugin_sha256", "__version__", diff --git a/molecule_agent/__main__.py b/molecule_agent/__main__.py index 38c5b97..6534662 100644 --- a/molecule_agent/__main__.py +++ b/molecule_agent/__main__.py @@ -6,12 +6,24 @@ Commands: plugin.yaml (self-referential). Output the hash so you can paste it into plugin.yaml under the sha256 field. + + connect Register and run a remote agent against a + Molecule platform — heartbeat + state-poll + + inbound message poll, all in one process. + Loads a user-supplied handler module:func + and dispatches every inbound A2A message. + Designed for hermes / codex / any third-party + runtime that can't expose a reachable URL. """ from __future__ import annotations import argparse import hashlib +import importlib import json +import logging +import os +import signal import sys from pathlib import Path @@ -52,6 +64,119 @@ def compute_plugin_sha256(plugin_dir: Path) -> str: return hashlib.sha256(manifest_bytes).hexdigest() +def _resolve_handler(spec: str): + """Resolve a ``module.path:function`` spec into the callable. + + Mirrors the convention used by gunicorn / uvicorn / celery for app + references — a single string the user can put in a config file or env + var. Raises ``SystemExit`` with a readable message on any failure + (import, attribute lookup, non-callable result) so the CLI's exit + surface is clean. + """ + if ":" not in spec: + raise SystemExit( + f"error: handler spec {spec!r} must be of the form 'module.path:function'" + ) + mod_path, func_name = spec.split(":", 1) + if not mod_path or not func_name: + raise SystemExit(f"error: handler spec {spec!r} is malformed") + try: + # Importing the user's module pulls in their code — we run it from + # the current working directory by default so 'my_handler:fn' works + # without setting PYTHONPATH first. + if "" not in sys.path: + sys.path.insert(0, "") + module = importlib.import_module(mod_path) + except Exception as exc: + raise SystemExit(f"error: could not import {mod_path}: {exc}") + try: + func = getattr(module, func_name) + except AttributeError: + raise SystemExit(f"error: {mod_path} has no attribute {func_name!r}") + if not callable(func): + raise SystemExit(f"error: {spec} is not callable") + return func + + +def _connect_command(args: argparse.Namespace) -> int: + """Run the register + heartbeat + inbound-poll loop. + + Returns the process exit code. 0 on graceful exit (paused/removed/SIGTERM), + non-zero on registration / handler-import failures. + """ + # Lazy import — the connect path pulls in requests + the full client, + # while verify-sha256 should stay light. + from .client import RemoteAgentClient + from .inbound import PollDelivery + + logging.basicConfig( + level=logging.INFO if args.verbose else logging.WARNING, + format="[molecule] %(message)s", + ) + + handler = _resolve_handler(args.handler) + + client = RemoteAgentClient( + workspace_id=args.workspace_id, + platform_url=args.platform_url, + agent_card={"name": args.agent_name or f"remote-{args.workspace_id[:8]}"}, + reported_url=args.reported_url or "", + ) + + if args.token: + # User passed a token explicitly — persist it so register() can be + # skipped on a known-tokened workspace. The platform's register + # endpoint refuses to issue a second token when one is on file. + client.save_token(args.token) + + # If we don't have a token yet (and one wasn't provided), call register + # so the platform mints one. On a known-tokened workspace this still + # succeeds and just returns the cached token. + if client.load_token() is None: + try: + client.register() + except Exception as exc: + print(f"[molecule] register failed: {exc}", file=sys.stderr) + return 2 + + print( + f"[molecule] connected as {args.workspace_id} " + f"(platform={args.platform_url}, delivery=poll, interval={args.poll_interval}s)" + ) + + cursor_file = None + if args.cursor_file: + cursor_file = Path(args.cursor_file).expanduser() + + delivery = PollDelivery( + client, + interval=args.poll_interval, + cursor_file=cursor_file, + ) + + # Graceful shutdown on SIGINT / SIGTERM. The loop's built-in stop + # condition is platform-driven (paused / deleted), so we install a + # signal handler that sets max_iterations to the loop counter +1 + # by raising KeyboardInterrupt — caught below. + def _on_signal(_sig, _frame): + raise KeyboardInterrupt + + signal.signal(signal.SIGINT, _on_signal) + signal.signal(signal.SIGTERM, _on_signal) + + try: + terminal = client.run_agent_loop(handler, delivery=delivery) + print(f"[molecule] platform reports workspace {terminal} — exiting") + return 0 + except KeyboardInterrupt: + print("[molecule] received signal — shutting down cleanly") + try: + delivery.stop() + except Exception: + pass + return 0 + + def main() -> None: parser = argparse.ArgumentParser( prog="molecule_agent", @@ -69,6 +194,74 @@ def main() -> None: help="Path to the plugin directory (must contain plugin.yaml)", ) + cn = sub.add_parser( + "connect", + help=( + "Register and run a remote agent against a Molecule platform — " + "heartbeat + state-poll + inbound A2A message dispatch." + ), + ) + cn.add_argument( + "--platform-url", + required=True, + default=os.environ.get("MOLECULE_PLATFORM_URL"), + help="Base URL of the Molecule platform (env: MOLECULE_PLATFORM_URL)", + ) + cn.add_argument( + "--workspace-id", + required=True, + default=os.environ.get("MOLECULE_WORKSPACE_ID"), + help="UUID of the workspace this agent claims (env: MOLECULE_WORKSPACE_ID)", + ) + cn.add_argument( + "--token", + default=os.environ.get("MOLECULE_WORKSPACE_TOKEN"), + help=( + "Pre-issued workspace bearer token (env: MOLECULE_WORKSPACE_TOKEN). " + "If omitted, the CLI calls /registry/register and caches the issued token." + ), + ) + cn.add_argument( + "--handler", + required=True, + help=( + "Handler spec in 'module.path:function' form. The function receives " + "(InboundMessage, RemoteAgentClient) and returns a reply string or None." + ), + ) + cn.add_argument( + "--agent-name", + default=os.environ.get("MOLECULE_AGENT_NAME"), + help="Name in the agent_card (env: MOLECULE_AGENT_NAME). Defaults to remote-.", + ) + cn.add_argument( + "--reported-url", + default=os.environ.get("MOLECULE_REPORTED_URL", ""), + help=( + "Externally-reachable URL siblings can call. Empty = poll-only mode " + "(env: MOLECULE_REPORTED_URL)." + ), + ) + cn.add_argument( + "--poll-interval", + type=float, + default=float(os.environ.get("MOLECULE_POLL_INTERVAL", "5.0")), + help="Seconds between activity polls (env: MOLECULE_POLL_INTERVAL).", + ) + cn.add_argument( + "--cursor-file", + default=os.environ.get("MOLECULE_CURSOR_FILE"), + help=( + "Path to persist the activity cursor across restarts (env: " + "MOLECULE_CURSOR_FILE). Default: in-process only." + ), + ) + cn.add_argument( + "--verbose", + action="store_true", + help="Enable INFO-level logging.", + ) + args = parser.parse_args() if args.command == "verify-sha256": @@ -80,6 +273,8 @@ def main() -> None: print(f"Computed SHA256: {h}") except Exception as exc: sys.exit(f"error: {exc}") + elif args.command == "connect": + sys.exit(_connect_command(args)) else: parser.print_help() diff --git a/molecule_agent/client.py b/molecule_agent/client.py index f72d51d..05b007f 100644 --- a/molecule_agent/client.py +++ b/molecule_agent/client.py @@ -31,10 +31,13 @@ import time import uuid from dataclasses import dataclass, field from pathlib import Path -from typing import Any +from typing import TYPE_CHECKING, Any import requests +if TYPE_CHECKING: + from .inbound import InboundDelivery, InboundMessage, MessageHandler + logger = logging.getLogger(__name__) # Polling cadence defaults. Chosen to align with the platform's 60-second @@ -687,6 +690,266 @@ class RemoteAgentClient: resp.raise_for_status() return resp.json() + # ------------------------------------------------------------------ + # Inbound delivery (poll mode) — Phase 30.8c + # ------------------------------------------------------------------ + + def fetch_inbound( + self, + since_id: str | None = None, + limit: int = 100, + type: str = "a2a_receive", + ) -> list["InboundMessage"]: + """Fetch one batch of inbound A2A activity rows. + + Hits ``GET /workspaces/:id/activity?type=…&since_id=…&limit=…``. + Returns the rows newer than ``since_id`` in oldest-first order, + parsed into :class:`~molecule_agent.inbound.InboundMessage`. + + Used by :class:`~molecule_agent.inbound.PollDelivery`; most callers + should drive this through :py:meth:`run_agent_loop` rather than + polling manually. + + Args: + since_id: Activity-id cursor — only rows newer than this are + returned. Pass ``None`` for the initial fetch. + limit: Max rows per batch. Default 100. Server-side cap may + lower this. + type: Activity-row type filter. Default ``"a2a_receive"``; + pass another type to consume different streams (e.g. + ``"workspace_state_changed"``). + + Returns: + List of :class:`InboundMessage`, oldest first. May be empty. + + Raises: + :class:`~molecule_agent.inbound.CursorLostError`: if the server + returns 410 Gone (cursor's row has been rotated out of the + activity window). Caller should reset the cursor and retry. + ``requests.HTTPError``: on other non-2xx responses (401, 5xx, …). + """ + # Local import to avoid a circular dependency at module load — the + # inbound module references RemoteAgentClient via TYPE_CHECKING. + from .inbound import CursorLostError, _parse_activity_row + + params: dict[str, str] = {"type": type, "limit": str(int(limit))} + if since_id: + params["since_id"] = since_id + url = f"{self.platform_url}/workspaces/{self.workspace_id}/activity" + resp = self._session.get( + url, + headers=self._auth_headers(), + params=params, + timeout=15.0, + ) + if resp.status_code == 410: + raise CursorLostError( + f"cursor {since_id!r} no longer valid (410 Gone); reset and re-poll" + ) + # 429 retry: rebuild the URL with encoded query string and route + # through _get_with_retry, which honours Retry-After + jittered + # backoff. We only retry on 429 — every other status falls through + # to raise_for_status below. + if resp.status_code == 429: + from urllib.parse import urlencode + resp = self._get_with_retry( + url + "?" + urlencode(params), + headers=self._auth_headers(), + ) + resp.raise_for_status() + + rows = resp.json() or [] + if not isinstance(rows, list): + # Defensive: if the server ever wraps in {"items": […]} we + # accept that shape too rather than silently dropping data. + rows = rows.get("items", []) if isinstance(rows, dict) else [] + + out: list["InboundMessage"] = [] + for row in rows: + if not isinstance(row, dict): + continue + msg = _parse_activity_row(row) + if msg is not None: + out.append(msg) + return out + + def reply(self, message: "InboundMessage", text: str) -> None: + """Reply to an inbound message. + + The reply transport is picked from ``message.source``: + + * ``canvas_user`` → ``POST /workspaces/:id/notify`` with + ``{"message": text}``. The canvas surfaces the text to the user. + * ``peer_agent`` → ``POST /workspaces/:peer_id/a2a`` with a JSON-RPC + ``message/send`` envelope and ``X-Source-Workspace-Id`` header. + * ``unknown`` → raises ``ValueError``. The SDK refuses to guess the + transport; the caller should inspect ``message.raw`` and use + :py:meth:`call_peer` or a direct HTTP call as appropriate. + + Args: + message: The :class:`InboundMessage` being replied to. Determines + the transport. + text: Reply text. Empty / whitespace-only strings raise + ``ValueError`` to prevent accidental silent acks. + + Raises: + ``ValueError``: on empty text or unknown source. + ``requests.HTTPError``: on non-2xx server response. + """ + if not text or not text.strip(): + raise ValueError("reply text must be non-empty") + + if message.source == "canvas_user": + resp = self._session.post( + f"{self.platform_url}/workspaces/{self.workspace_id}/notify", + headers={ + **self._auth_headers(), + "Content-Type": "application/json", + }, + json={"message": text}, + timeout=15.0, + ) + resp.raise_for_status() + return + + if message.source == "peer_agent": + target = message.source_id or "" + if not target: + raise ValueError( + "peer_agent inbound message has no source_id — cannot route reply" + ) + body = { + "jsonrpc": "2.0", + "id": str(uuid.uuid4()), + "method": "message/send", + "params": { + "message": { + "role": "agent", + "messageId": str(uuid.uuid4()), + "parts": [{"kind": "text", "text": text}], + } + }, + } + resp = self._session.post( + f"{self.platform_url}/workspaces/{target}/a2a", + headers={ + **self._auth_headers(), + "X-Source-Workspace-Id": self.workspace_id, + "X-Workspace-ID": self.workspace_id, + "Content-Type": "application/json", + }, + json=body, + timeout=15.0, + ) + resp.raise_for_status() + return + + raise ValueError( + f"cannot auto-route reply for source={message.source!r}; " + "inspect message.raw and call /notify or /a2a directly" + ) + + def run_agent_loop( + self, + handler: "MessageHandler", + delivery: "InboundDelivery | None" = None, + max_iterations: int | None = None, + task_supplier: "callable | None" = None, + ) -> str: + """Combined heartbeat + state-poll + inbound-delivery loop. + + Generalization of :py:meth:`run_heartbeat_loop` that also drains + inbound messages on every tick. This is the recommended entry + point for an external agent author — registers, heartbeats, + state-polls, and dispatches inbound, all in one sync call. + + Args: + handler: ``Callable[[InboundMessage, RemoteAgentClient], + str | None | Awaitable[str | None]]``. Invoked once per + inbound message. Returning a non-empty string sends an + automatic reply via :py:meth:`reply`. ``None`` skips the + reply (useful for fire-and-forget consumers). + delivery: An :class:`InboundDelivery` implementation. Defaults + to :class:`PollDelivery` (the right choice when the agent + can't expose an inbound URL — i.e. ``reported_url`` is + empty or starts with ``remote://``). Pass an explicit + :class:`PushDelivery` (constructed around an + :class:`A2AServer`) for push-mode agents. + max_iterations: Stop after N iterations. ``None`` = run until + the platform reports the workspace paused or deleted. + task_supplier: Optional zero-arg callable returning a dict + ``{"current_task": str, "active_tasks": int}`` reported on + each heartbeat (same contract as :py:meth:`run_heartbeat_loop`). + + Returns: + The terminal status: ``"paused"``, ``"removed"``, or + ``"max_iterations"``. + + Errors from the activity poll, heartbeat, or state poll are + logged and the loop continues — a transient platform hiccup + should not take a remote agent offline. Handler exceptions are + caught at the delivery layer (see :class:`PollDelivery`). + """ + from .inbound import PollDelivery + + if delivery is None: + delivery = PollDelivery(self) + + i = 0 + try: + while True: + if max_iterations is not None and i >= max_iterations: + return "max_iterations" + i += 1 + + report: dict[str, Any] = {} + if task_supplier is not None: + try: + report = task_supplier() or {} + except Exception as exc: + logger.warning("task_supplier raised: %s", exc) + + try: + self.heartbeat( + current_task=str(report.get("current_task", "")), + active_tasks=int(report.get("active_tasks", 0)), + ) + except Exception as exc: + logger.warning("heartbeat failed: %s — continuing", exc) + + try: + delivery.run_once(handler) + except Exception as exc: + logger.warning("inbound delivery.run_once raised: %s — continuing", exc) + + try: + state = self.poll_state() + except Exception as exc: + logger.warning("state poll failed: %s — continuing", exc) + state = None + + if state is not None and state.should_stop: + logger.info( + "platform reports workspace %s (paused=%s deleted=%s) — exiting", + state.status, state.paused, state.deleted, + ) + return state.status + + # Sleep cadence: take the smaller of heartbeat_interval and + # the delivery's poll interval (when present) so inbound + # latency is bounded by the delivery's setting, not by the + # heartbeat cadence. + interval = self.heartbeat_interval + poll_interval = getattr(delivery, "interval", None) + if isinstance(poll_interval, (int, float)) and poll_interval > 0: + interval = min(interval, float(poll_interval)) + time.sleep(interval) + finally: + try: + delivery.stop() + except Exception as exc: + logger.warning("delivery.stop raised on loop exit: %s", exc) + # ------------------------------------------------------------------ # Delegation — KI-002 idempotency guard # ------------------------------------------------------------------ diff --git a/molecule_agent/inbound.py b/molecule_agent/inbound.py new file mode 100644 index 0000000..9e00aac --- /dev/null +++ b/molecule_agent/inbound.py @@ -0,0 +1,370 @@ +"""Poll-mode inbound delivery for remote agents that can't expose an HTTP endpoint. + +The :class:`A2AServer` companion (Phase 30.8b) covers the case where an agent +can host a publicly reachable HTTP endpoint and the platform pushes work to it. +Many real adopters can't — laptops behind NAT, ephemeral CI runners, hermes +self-hosted on a developer machine. For those, the platform queues inbound +A2A messages on the workspace's ``activity_logs`` and the agent polls. + +This module provides: + +* :class:`InboundMessage` — typed view over an ``activity_logs`` row that + carries an ``a2a_receive`` event. Source is normalized to ``canvas_user`` + vs ``peer_agent`` so the SDK can route replies without the caller having + to know which envelope to use. +* :class:`CursorLostError` — raised when the activity endpoint returns + 410 Gone (the cursor's row was rotated out). Caller resets and re-polls. +* :class:`InboundDelivery` — protocol that ``run_agent_loop`` accepts; both + :class:`PollDelivery` and :class:`PushDelivery` satisfy it. +* :class:`PollDelivery` — the new poll-mode implementation. +* :class:`PushDelivery` — thin wrapper over :class:`A2AServer` so the same + ``run_agent_loop`` works for push-mode agents that expose an inbound URL. + +Big-tech prior art: Slack Socket Mode, Telegram getUpdates, AWS SQS long +polling, Stripe ``stripe listen``. Same shape — cursor-based poll, SDK-owned +loop, single handler callback, smart-reply hidden behind the SDK. +""" +from __future__ import annotations + +import asyncio +import inspect +import logging +import time +from dataclasses import dataclass, field +from pathlib import Path +from typing import ( + Any, + Awaitable, + Callable, + Literal, + Protocol, + TYPE_CHECKING, + runtime_checkable, +) + +if TYPE_CHECKING: + from .client import RemoteAgentClient + +logger = logging.getLogger(__name__) + + +InboundSource = Literal["canvas_user", "peer_agent", "unknown"] + + +@dataclass +class InboundMessage: + """One inbound A2A event the agent must handle. + + The ``activity_id`` is the cursor — pass it as ``since_id`` on the next + fetch to avoid re-receiving this message. + + ``source`` is normalized so the SDK can pick the reply transport: + + * ``canvas_user`` — a user typing in the canvas chat. Reply via + ``POST /workspaces/:id/notify``. + * ``peer_agent`` — another workspace's agent. Reply via + ``POST /workspaces/:peer_id/a2a`` with a JSON-RPC envelope and + ``X-Source-Workspace-Id`` header. + * ``unknown`` — the activity row didn't carry a recognizable source. + :py:meth:`RemoteAgentClient.reply` raises ``ValueError`` rather than + guess. + """ + + activity_id: str + source: InboundSource + source_id: str + text: str + raw: dict[str, Any] = field(default_factory=dict) + + +class CursorLostError(Exception): + """Raised when ``GET /workspaces/:id/activity`` returns 410 Gone. + + The platform retires old activity rows on a fixed window (see + workspace-server's activity_logs retention policy). If the agent's + cursor points at a row that has been rotated out, the server replies + 410. Callers should reset the cursor (``since_id=None``) and re-poll; + they will catch up on whatever's still in the window. + """ + + +# --------------------------------------------------------------------------- +# Activity row → InboundMessage parsing +# --------------------------------------------------------------------------- + + +def _parse_activity_row(row: dict[str, Any]) -> InboundMessage | None: + """Convert one ``activity_logs`` row into an :class:`InboundMessage`. + + Returns ``None`` if the row is malformed or doesn't carry text we can + deliver — preferable to raising and aborting the whole poll batch. + + Activity row shape (per workspace-server's handlers/activity.go): + ``{"id": ..., "type": "a2a_receive", "source_id": ..., "data": {...}, ...}`` + """ + aid = str(row.get("id") or "") + if not aid: + return None + + data = row.get("data") if isinstance(row.get("data"), dict) else {} + source_kind = str(data.get("source") or row.get("source") or "") + source_id = str(row.get("source_id") or data.get("source_id") or "") + + # Normalize source. The platform uses "canvas_user" / "peer_agent" / + # sometimes "user" (legacy). Anything else falls into "unknown" so we + # don't accidentally route a reply down the wrong transport. + source: InboundSource + if source_kind in ("canvas_user", "user"): + source = "canvas_user" + elif source_kind == "peer_agent": + source = "peer_agent" + elif source_id and source_id != "user": + # Heuristic: a non-empty source_id that isn't the "user" sentinel + # is almost certainly a peer workspace. + source = "peer_agent" + elif source_id == "user": + source = "canvas_user" + else: + source = "unknown" + + text = str(data.get("text") or data.get("message") or "") + + return InboundMessage( + activity_id=aid, + source=source, + source_id=source_id, + text=text, + raw=row, + ) + + +# --------------------------------------------------------------------------- +# Handler + delivery protocol +# --------------------------------------------------------------------------- + + +# A handler receives the inbound message + the client (so it can reply, fetch +# secrets, call peers, etc.) and returns either a reply string or None. +# Sync OR async — :class:`PollDelivery` detects ``Awaitable`` results and +# awaits them, mirroring the pattern in :class:`A2AServer`. +MessageHandler = Callable[ + ["InboundMessage", "RemoteAgentClient"], + "str | None | Awaitable[str | None]", +] + + +@runtime_checkable +class InboundDelivery(Protocol): + """The contract :py:meth:`RemoteAgentClient.run_agent_loop` calls into. + + Two implementations ship with the SDK: + + * :class:`PollDelivery` — for agents without a reachable URL. + * :class:`PushDelivery` — for agents that host an A2AServer. + + Third parties can supply their own (e.g. WebSocket, gRPC streaming) + by satisfying this protocol. + """ + + def run_once(self, handler: MessageHandler) -> int: + """Drain one batch of inbound messages and dispatch to handler. + + Returns the count of messages dispatched. The caller's outer loop + decides cadence / sleep. + """ + ... + + def stop(self) -> None: + """Release any resources (close sockets, stop background threads).""" + ... + + +# --------------------------------------------------------------------------- +# PollDelivery — the new path +# --------------------------------------------------------------------------- + + +# Default poll cadence. 5s gives <5s p50 latency for canvas-user messages +# while keeping load on workspace-server modest (one GET per agent per 5s). +# Slack Socket Mode runs at ~1s, Telegram getUpdates with timeout=30 is the +# canonical long-poll. We don't have long-poll support server-side yet, so +# fixed 5s is the conservative choice. Tunable via constructor. +DEFAULT_POLL_INTERVAL = 5.0 + + +class PollDelivery: + """Poll ``GET /workspaces/:id/activity?type=a2a_receive&since_id=…``. + + The cursor is process-memory by default; a restart re-polls from + scratch, which is harmless because handlers should be idempotent + (the platform makes no exactly-once guarantees on activity poll — + the same SDK-level convention as Slack Events API). + + Pass ``cursor_file`` to persist the cursor across restarts: + + PollDelivery(client, cursor_file=Path("~/.molecule/cursor")) + + Cursor-loss (HTTP 410) is handled transparently — the cursor is + reset to ``None`` and the next poll starts fresh with whatever's in + the activity window. + """ + + def __init__( + self, + client: "RemoteAgentClient", + interval: float = DEFAULT_POLL_INTERVAL, + type: str = "a2a_receive", + limit: int = 100, + cursor_file: Path | None = None, + ) -> None: + self._client = client + self.interval = interval + self.type = type + self.limit = limit + self._cursor_file = cursor_file + self._cursor: str | None = self._load_cursor() + self._stopped = False + + def _load_cursor(self) -> str | None: + if self._cursor_file is None or not self._cursor_file.exists(): + return None + try: + cur = self._cursor_file.read_text().strip() + return cur or None + except OSError as exc: + logger.warning("could not read cursor file %s: %s", self._cursor_file, exc) + return None + + def _save_cursor(self) -> None: + if self._cursor_file is None or self._cursor is None: + return + try: + self._cursor_file.parent.mkdir(parents=True, exist_ok=True) + self._cursor_file.write_text(self._cursor) + except OSError as exc: + logger.warning("could not write cursor file %s: %s", self._cursor_file, exc) + + @property + def cursor(self) -> str | None: + """Current cursor (``activity_id`` of the most recently dispatched + message). Useful for tests and observability.""" + return self._cursor + + def run_once(self, handler: MessageHandler) -> int: + """Fetch one batch and dispatch each message to ``handler``. + + Returns the number of messages dispatched. A handler exception is + logged but does not abort the batch — at-least-once semantics, the + same row may be re-delivered on the next iteration if its cursor + wasn't advanced. + """ + if self._stopped: + return 0 + try: + batch = self._client.fetch_inbound( + since_id=self._cursor, + limit=self.limit, + type=self.type, + ) + except CursorLostError: + logger.info("cursor %s lost (410 Gone) — resetting", self._cursor) + self._cursor = None + return 0 + + dispatched = 0 + for msg in batch: + try: + self._dispatch(handler, msg) + except Exception as exc: + # Log + continue. We DO advance the cursor past this message + # so a poison-pill input doesn't block the queue forever — + # this matches how Slack Events delivers and how SQS DLQs + # work. The handler is expected to surface its own errors + # via logging or its own observability. + logger.exception("handler raised on activity %s: %s", msg.activity_id, exc) + self._cursor = msg.activity_id + dispatched += 1 + + if dispatched: + self._save_cursor() + return dispatched + + def _dispatch(self, handler: MessageHandler, msg: "InboundMessage") -> None: + """Invoke handler, await if async, send the reply if returned.""" + result = handler(msg, self._client) + if inspect.isawaitable(result): + # Detect a running loop without using the deprecated + # asyncio.get_event_loop() (Py3.12+). If a loop is running we + # refuse — the caller is async and should await the handler + # themselves; we can't synchronously block on an awaitable + # without deadlocking the running loop. + try: + asyncio.get_running_loop() + except RuntimeError: + # No running loop — safe to spin up a fresh one. Mirrors + # A2AServer's pattern: build, run, close. asyncio.run is + # the modern equivalent of new_loop+run_until_complete+close + # and handles the close even on exception. + result = asyncio.run(result) # type: ignore[arg-type] + else: + raise RuntimeError( + "PollDelivery.run_once was called from inside a running " + "event loop with an async handler. Use a sync handler " + "here, or schedule run_once on a worker thread via " + "asyncio.to_thread()." + ) + + reply_text = result if isinstance(result, str) else None + if reply_text: + try: + self._client.reply(msg, reply_text) + except Exception as exc: + logger.warning("reply send failed for activity %s: %s", msg.activity_id, exc) + + def stop(self) -> None: + self._stopped = True + + +# --------------------------------------------------------------------------- +# PushDelivery — wraps the existing A2AServer +# --------------------------------------------------------------------------- + + +class PushDelivery: + """Adapt :class:`A2AServer` to the :class:`InboundDelivery` protocol. + + Use this when the agent CAN expose a reachable HTTP endpoint. The + A2AServer runs in its own thread and dispatches to ``handler`` as + HTTP requests arrive — ``run_once`` is a no-op (the loop driver in + :py:meth:`RemoteAgentClient.run_agent_loop` simply sleeps and + keeps the heartbeat alive). + """ + + def __init__(self, client: "RemoteAgentClient", server: Any) -> None: + # ``server`` typed Any to avoid a circular import; it's an A2AServer. + self._client = client + self._server = server + + def run_once(self, handler: MessageHandler) -> int: # noqa: ARG002 — handler unused + # A2AServer dispatches synchronously on its own thread; nothing + # for the outer loop to do per-tick. + return 0 + + def stop(self) -> None: + try: + self._server.stop() + except Exception as exc: + logger.warning("PushDelivery stop: A2AServer.stop raised: %s", exc) + + +__all__ = [ + "CursorLostError", + "DEFAULT_POLL_INTERVAL", + "InboundDelivery", + "InboundMessage", + "InboundSource", + "MessageHandler", + "PollDelivery", + "PushDelivery", + "_parse_activity_row", +] diff --git a/tests/test_cli_connect.py b/tests/test_cli_connect.py new file mode 100644 index 0000000..59c9e72 --- /dev/null +++ b/tests/test_cli_connect.py @@ -0,0 +1,167 @@ +"""Tests for `python -m molecule_agent connect` CLI handler resolution. + +Run-loop integration is covered by tests/test_inbound.py — these tests only +exercise the CLI's argument parsing, handler resolution, and the +register-on-missing-token behavior. We do not start the full loop because +that's already covered, and starting it from a CLI test runs into signal ++ event-loop interactions that aren't worth reproducing here. +""" +from __future__ import annotations + +import sys +import textwrap +from pathlib import Path +from unittest.mock import MagicMock, patch + +import pytest + +from molecule_agent.__main__ import _resolve_handler + + +# --------------------------------------------------------------------------- +# _resolve_handler +# --------------------------------------------------------------------------- + + +def _write_handler_module(tmp_path: Path, name: str, body: str) -> None: + """Drop a handler module into tmp_path and prepend tmp_path to sys.path.""" + p = tmp_path / f"{name}.py" + p.write_text(textwrap.dedent(body)) + if str(tmp_path) not in sys.path: + sys.path.insert(0, str(tmp_path)) + + +def test_resolve_handler_happy_path(tmp_path: Path): + _write_handler_module( + tmp_path, + "ok_handler_mod", + """ + def echo(msg, client): + return msg.text + """, + ) + fn = _resolve_handler("ok_handler_mod:echo") + assert callable(fn) + # Sanity-check the resolved callable's name. + assert fn.__name__ == "echo" + + +def test_resolve_handler_missing_colon_exits(tmp_path: Path): + with pytest.raises(SystemExit, match="must be of the form"): + _resolve_handler("not_a_spec_no_colon") + + +def test_resolve_handler_empty_module_exits(): + with pytest.raises(SystemExit, match="malformed"): + _resolve_handler(":fn") + + +def test_resolve_handler_empty_function_exits(): + with pytest.raises(SystemExit, match="malformed"): + _resolve_handler("mod:") + + +def test_resolve_handler_import_error_exits(): + with pytest.raises(SystemExit, match="could not import"): + _resolve_handler("definitely_not_a_real_module_xyzzy:fn") + + +def test_resolve_handler_attribute_error_exits(tmp_path: Path): + _write_handler_module( + tmp_path, + "no_func_mod", + """ + OTHER = 1 + """, + ) + with pytest.raises(SystemExit, match="no attribute"): + _resolve_handler("no_func_mod:not_there") + + +def test_resolve_handler_not_callable_exits(tmp_path: Path): + _write_handler_module( + tmp_path, + "not_callable_mod", + """ + IT_IS_AN_INT = 42 + """, + ) + with pytest.raises(SystemExit, match="not callable"): + _resolve_handler("not_callable_mod:IT_IS_AN_INT") + + +# --------------------------------------------------------------------------- +# _connect_command — registration / token-loading branches +# --------------------------------------------------------------------------- + + +def test_connect_command_register_failure_returns_2(tmp_path: Path, monkeypatch): + _write_handler_module( + tmp_path, + "rcfail_mod", + """ + def fn(msg, client): + return None + """, + ) + + from molecule_agent import __main__ as cli_mod + + args = MagicMock() + args.handler = "rcfail_mod:fn" + args.platform_url = "http://platform.test" + args.workspace_id = "ws-zzz" + args.token = None + args.agent_name = None + args.reported_url = "" + args.poll_interval = 1.0 + args.cursor_file = None + args.verbose = False + + fake_client = MagicMock() + fake_client.load_token.return_value = None # no cached token + fake_client.register.side_effect = RuntimeError("network sad") + + with patch("molecule_agent.client.RemoteAgentClient", return_value=fake_client): + rc = cli_mod._connect_command(args) + assert rc == 2 + + +def test_connect_command_uses_provided_token_skips_register(tmp_path: Path, monkeypatch): + _write_handler_module( + tmp_path, + "tokset_mod", + """ + def fn(msg, client): + return None + """, + ) + + from molecule_agent import __main__ as cli_mod + + args = MagicMock() + args.handler = "tokset_mod:fn" + args.platform_url = "http://platform.test" + args.workspace_id = "ws-zzz" + args.token = "explicit-token" + args.agent_name = None + args.reported_url = "" + args.poll_interval = 1.0 + args.cursor_file = None + args.verbose = False + + fake_client = MagicMock() + # Once save_token has been called, load_token should return the token, + # so register is NOT called. + fake_client.load_token.return_value = "explicit-token" + # run_agent_loop returns a terminal status — paused — so the function + # exits 0 cleanly without us having to signal-break the loop. + fake_client.run_agent_loop.return_value = "paused" + + with patch("molecule_agent.client.RemoteAgentClient", return_value=fake_client): + rc = cli_mod._connect_command(args) + + assert rc == 0 + fake_client.save_token.assert_called_once_with("explicit-token") + fake_client.register.assert_not_called() + fake_client.run_agent_loop.assert_called_once() diff --git a/tests/test_inbound.py b/tests/test_inbound.py new file mode 100644 index 0000000..f09034d --- /dev/null +++ b/tests/test_inbound.py @@ -0,0 +1,613 @@ +"""Tests for poll-mode inbound delivery (Phase 30.8c). + +Covers: + +* :func:`_parse_activity_row` source normalization and edge cases. +* :py:meth:`RemoteAgentClient.fetch_inbound` happy path, cursor, 410, shapes. +* :py:meth:`RemoteAgentClient.reply` smart-routing (canvas vs peer). +* :class:`PollDelivery` cursor advancement, async/sync handler dispatch, + error handling, 410 reset, cursor-file persistence, stop(). +* :py:meth:`RemoteAgentClient.run_agent_loop` heartbeat + state + delivery + composition, default-delivery selection, terminal-status handling, sleep + cadence selection. + +Mocking style matches ``tests/test_remote_agent.py``: a ``FakeResponse`` / +``MagicMock`` session, no third-party HTTP mock library. +""" +from __future__ import annotations + +import asyncio +from pathlib import Path +from typing import Any +from unittest.mock import MagicMock, call + +import pytest +import requests + +from molecule_agent import ( + CursorLostError, + InboundMessage, + PollDelivery, + PushDelivery, + RemoteAgentClient, + WorkspaceState, +) +from molecule_agent.inbound import _parse_activity_row + + +# --------------------------------------------------------------------------- +# FakeResponse — same shape as the existing test_remote_agent helper +# --------------------------------------------------------------------------- + + +class FakeResponse: + def __init__(self, status_code: int = 200, json_body: Any = None, text: str = ""): + self.status_code = status_code + self._json = json_body + self.text = text + self.headers: dict[str, str] = {} + + def json(self) -> Any: + return self._json + + def raise_for_status(self) -> None: + if self.status_code >= 400: + raise requests.HTTPError(f"HTTP {self.status_code}") + + +@pytest.fixture +def tmp_token_dir(tmp_path: Path) -> Path: + return tmp_path / "molecule-token-cache" + + +@pytest.fixture +def client(tmp_token_dir: Path) -> RemoteAgentClient: + session = MagicMock() + c = RemoteAgentClient( + workspace_id="ws-abc-123", + platform_url="http://platform.test", + agent_card={"name": "test-agent"}, + token_dir=tmp_token_dir, + session=session, + ) + # Pre-seed the cached token so _auth_headers returns one and we don't + # have to mock /registry/register on every test. + c.save_token("test-token-secret") + return c + + +# --------------------------------------------------------------------------- +# _parse_activity_row +# --------------------------------------------------------------------------- + + +def test_parse_activity_row_canvas_user_explicit(): + row = { + "id": "act-1", + "type": "a2a_receive", + "source_id": "user", + "data": {"source": "canvas_user", "text": "hi"}, + } + msg = _parse_activity_row(row) + assert msg is not None + assert msg.activity_id == "act-1" + assert msg.source == "canvas_user" + assert msg.source_id == "user" + assert msg.text == "hi" + + +def test_parse_activity_row_legacy_user_normalizes_to_canvas(): + # Older platform versions used 'user' instead of 'canvas_user'. + row = {"id": "act-2", "data": {"source": "user", "text": "hello"}} + msg = _parse_activity_row(row) + assert msg is not None + assert msg.source == "canvas_user" + + +def test_parse_activity_row_peer_agent_explicit(): + row = { + "id": "act-3", + "source_id": "peer-ws-77", + "data": {"source": "peer_agent", "text": "ping"}, + } + msg = _parse_activity_row(row) + assert msg is not None + assert msg.source == "peer_agent" + assert msg.source_id == "peer-ws-77" + + +def test_parse_activity_row_inferred_peer_from_source_id(): + # No explicit source field but a non-'user' source_id present → infer peer_agent. + # This protects us from server-side variants that omit 'source' in data. + row = {"id": "act-4", "source_id": "peer-ws-88", "data": {"text": "ping"}} + msg = _parse_activity_row(row) + assert msg is not None + assert msg.source == "peer_agent" + + +def test_parse_activity_row_inferred_canvas_from_user_source_id(): + row = {"id": "act-5", "source_id": "user", "data": {"text": "hi"}} + msg = _parse_activity_row(row) + assert msg is not None + assert msg.source == "canvas_user" + + +def test_parse_activity_row_unknown_source_falls_through(): + # No source_id, no source → unknown. Reply path will refuse to guess. + row = {"id": "act-6", "data": {"text": "??"}} + msg = _parse_activity_row(row) + assert msg is not None + assert msg.source == "unknown" + + +def test_parse_activity_row_no_id_returns_none(): + row = {"data": {"source": "canvas_user", "text": "no id"}} + assert _parse_activity_row(row) is None + + +def test_parse_activity_row_text_alt_key(): + # Some server paths use 'message' instead of 'text'. Accept both. + row = {"id": "act-7", "data": {"source": "canvas_user", "message": "alt"}} + msg = _parse_activity_row(row) + assert msg is not None + assert msg.text == "alt" + + +# --------------------------------------------------------------------------- +# fetch_inbound +# --------------------------------------------------------------------------- + + +def test_fetch_inbound_happy_path(client: RemoteAgentClient): + rows = [ + {"id": "act-1", "data": {"source": "canvas_user", "text": "hi"}}, + {"id": "act-2", "source_id": "peer-77", "data": {"source": "peer_agent", "text": "ping"}}, + ] + client._session.get.return_value = FakeResponse(200, rows) + + out = client.fetch_inbound() + + assert len(out) == 2 + assert out[0].source == "canvas_user" + assert out[1].source == "peer_agent" + # Verify the GET shape. + call_args = client._session.get.call_args + assert call_args.args[0] == "http://platform.test/workspaces/ws-abc-123/activity" + assert call_args.kwargs["params"]["type"] == "a2a_receive" + assert call_args.kwargs["params"]["limit"] == "100" + assert "since_id" not in call_args.kwargs["params"] + + +def test_fetch_inbound_with_since_id_passes_cursor(client: RemoteAgentClient): + client._session.get.return_value = FakeResponse(200, []) + client.fetch_inbound(since_id="act-prev") + params = client._session.get.call_args.kwargs["params"] + assert params["since_id"] == "act-prev" + + +def test_fetch_inbound_410_raises_cursor_lost(client: RemoteAgentClient): + client._session.get.return_value = FakeResponse(410, {"error": "cursor lost"}) + with pytest.raises(CursorLostError): + client.fetch_inbound(since_id="act-stale") + + +def test_fetch_inbound_accepts_dict_items_wrapper(client: RemoteAgentClient): + # If a future server version wraps in {"items": [...]}, we still parse. + body = {"items": [{"id": "act-1", "data": {"source": "canvas_user", "text": "hi"}}]} + client._session.get.return_value = FakeResponse(200, body) + out = client.fetch_inbound() + assert len(out) == 1 + assert out[0].activity_id == "act-1" + + +def test_fetch_inbound_skips_malformed_rows(client: RemoteAgentClient): + rows = [ + {"id": "act-1", "data": {"source": "canvas_user", "text": "ok"}}, + "not a dict", + {"data": {"text": "no id"}}, # missing id → skipped + ] + client._session.get.return_value = FakeResponse(200, rows) + out = client.fetch_inbound() + assert len(out) == 1 + assert out[0].activity_id == "act-1" + + +def test_fetch_inbound_401_raises_http_error(client: RemoteAgentClient): + client._session.get.return_value = FakeResponse(401) + with pytest.raises(requests.HTTPError): + client.fetch_inbound() + + +def test_fetch_inbound_empty_returns_empty(client: RemoteAgentClient): + client._session.get.return_value = FakeResponse(200, []) + assert client.fetch_inbound() == [] + + +# --------------------------------------------------------------------------- +# reply() +# --------------------------------------------------------------------------- + + +def test_reply_canvas_user_hits_notify(client: RemoteAgentClient): + msg = InboundMessage( + activity_id="act-1", source="canvas_user", source_id="user", text="hi" + ) + client._session.post.return_value = FakeResponse(200, {"status": "sent"}) + + client.reply(msg, "hello") + + call_args = client._session.post.call_args + assert call_args.args[0] == "http://platform.test/workspaces/ws-abc-123/notify" + assert call_args.kwargs["json"] == {"message": "hello"} + assert call_args.kwargs["headers"]["Authorization"] == "Bearer test-token-secret" + + +def test_reply_peer_agent_hits_a2a(client: RemoteAgentClient): + msg = InboundMessage( + activity_id="act-2", source="peer_agent", source_id="peer-ws-77", text="ping" + ) + client._session.post.return_value = FakeResponse(200, {"jsonrpc": "2.0", "result": {}}) + + client.reply(msg, "pong") + + call_args = client._session.post.call_args + assert call_args.args[0] == "http://platform.test/workspaces/peer-ws-77/a2a" + body = call_args.kwargs["json"] + assert body["jsonrpc"] == "2.0" + assert body["method"] == "message/send" + assert body["params"]["message"]["parts"][0]["text"] == "pong" + headers = call_args.kwargs["headers"] + assert headers["X-Source-Workspace-Id"] == "ws-abc-123" + assert headers["X-Workspace-ID"] == "ws-abc-123" + + +def test_reply_unknown_source_raises_value_error(client: RemoteAgentClient): + msg = InboundMessage(activity_id="act-3", source="unknown", source_id="", text="?") + with pytest.raises(ValueError, match="cannot auto-route"): + client.reply(msg, "won't send") + client._session.post.assert_not_called() + + +def test_reply_empty_text_raises_value_error(client: RemoteAgentClient): + msg = InboundMessage(activity_id="act-4", source="canvas_user", source_id="user", text="hi") + with pytest.raises(ValueError, match="non-empty"): + client.reply(msg, "") + with pytest.raises(ValueError, match="non-empty"): + client.reply(msg, " ") + client._session.post.assert_not_called() + + +def test_reply_peer_agent_missing_source_id_raises(client: RemoteAgentClient): + msg = InboundMessage(activity_id="act-5", source="peer_agent", source_id="", text="?") + with pytest.raises(ValueError, match="no source_id"): + client.reply(msg, "won't send") + + +def test_reply_propagates_http_error(client: RemoteAgentClient): + msg = InboundMessage(activity_id="act-6", source="canvas_user", source_id="user", text="hi") + client._session.post.return_value = FakeResponse(500) + with pytest.raises(requests.HTTPError): + client.reply(msg, "boom") + + +# --------------------------------------------------------------------------- +# PollDelivery +# --------------------------------------------------------------------------- + + +def test_poll_delivery_run_once_advances_cursor(client: RemoteAgentClient): + rows = [ + {"id": "act-1", "data": {"source": "canvas_user", "text": "a"}}, + {"id": "act-2", "data": {"source": "canvas_user", "text": "b"}}, + ] + client._session.get.return_value = FakeResponse(200, rows) + delivery = PollDelivery(client, interval=0.0) + + received: list[str] = [] + + def handler(msg: InboundMessage, _client: RemoteAgentClient): + received.append(msg.text) + return None # no reply + + n = delivery.run_once(handler) + assert n == 2 + assert received == ["a", "b"] + assert delivery.cursor == "act-2" + + +def test_poll_delivery_handler_exception_advances_and_continues( + client: RemoteAgentClient, caplog +): + rows = [ + {"id": "act-1", "data": {"source": "canvas_user", "text": "poison"}}, + {"id": "act-2", "data": {"source": "canvas_user", "text": "next"}}, + ] + client._session.get.return_value = FakeResponse(200, rows) + delivery = PollDelivery(client, interval=0.0) + + seen: list[str] = [] + + def handler(msg, _c): + seen.append(msg.text) + if msg.text == "poison": + raise RuntimeError("kaboom") + return None + + n = delivery.run_once(handler) + # Both messages should be dispatched even though the first raised. + assert n == 2 + assert seen == ["poison", "next"] + # Cursor advances past the failure so we don't get stuck on poison forever. + assert delivery.cursor == "act-2" + + +def test_poll_delivery_async_handler_awaited(client: RemoteAgentClient): + rows = [{"id": "act-1", "data": {"source": "canvas_user", "text": "ahoy"}}] + client._session.get.return_value = FakeResponse(200, rows) + delivery = PollDelivery(client, interval=0.0) + + seen: list[str] = [] + + async def async_handler(msg, _c): + await asyncio.sleep(0) + seen.append(msg.text) + return None + + n = delivery.run_once(async_handler) + assert n == 1 + assert seen == ["ahoy"] + + +def test_poll_delivery_handler_returns_text_triggers_reply(client: RemoteAgentClient): + rows = [{"id": "act-1", "data": {"source": "canvas_user", "text": "hi"}}] + # First mock the GET (fetch_inbound), then the POST (reply). + client._session.get.return_value = FakeResponse(200, rows) + client._session.post.return_value = FakeResponse(200, {"status": "sent"}) + + delivery = PollDelivery(client, interval=0.0) + + def handler(msg, _c): + return f"echo:{msg.text}" + + n = delivery.run_once(handler) + assert n == 1 + # /notify should have been called with the echo body. + post_call = client._session.post.call_args + assert "/notify" in post_call.args[0] + assert post_call.kwargs["json"] == {"message": "echo:hi"} + + +def test_poll_delivery_handler_returns_none_no_reply(client: RemoteAgentClient): + rows = [{"id": "act-1", "data": {"source": "canvas_user", "text": "hi"}}] + client._session.get.return_value = FakeResponse(200, rows) + delivery = PollDelivery(client, interval=0.0) + + def handler(_msg, _c): + return None + + delivery.run_once(handler) + client._session.post.assert_not_called() + + +def test_poll_delivery_410_resets_cursor(client: RemoteAgentClient): + delivery = PollDelivery(client, interval=0.0) + delivery._cursor = "act-stale" + + client._session.get.return_value = FakeResponse(410, {"error": "gone"}) + n = delivery.run_once(lambda *_: None) + + # No messages dispatched, cursor reset to None. + assert n == 0 + assert delivery.cursor is None + + +def test_poll_delivery_cursor_file_persistence( + client: RemoteAgentClient, tmp_path: Path +): + cursor_file = tmp_path / "cursor" + rows = [{"id": "act-XYZ", "data": {"source": "canvas_user", "text": "hi"}}] + client._session.get.return_value = FakeResponse(200, rows) + + delivery = PollDelivery(client, interval=0.0, cursor_file=cursor_file) + assert delivery.cursor is None # nothing on disk yet + + delivery.run_once(lambda *_: None) + assert cursor_file.read_text() == "act-XYZ" + + # New delivery instance reads the cursor from disk. + fresh = PollDelivery(client, interval=0.0, cursor_file=cursor_file) + assert fresh.cursor == "act-XYZ" + + +def test_poll_delivery_stop_makes_run_once_noop(client: RemoteAgentClient): + delivery = PollDelivery(client, interval=0.0) + delivery.stop() + + n = delivery.run_once(lambda *_: None) + assert n == 0 + # GET should not have been issued. + client._session.get.assert_not_called() + + +# --------------------------------------------------------------------------- +# PushDelivery +# --------------------------------------------------------------------------- + + +def test_push_delivery_run_once_is_noop(client: RemoteAgentClient): + fake_server = MagicMock() + delivery = PushDelivery(client, fake_server) + n = delivery.run_once(lambda *_: None) + assert n == 0 + + +def test_push_delivery_stop_calls_server_stop(client: RemoteAgentClient): + fake_server = MagicMock() + delivery = PushDelivery(client, fake_server) + delivery.stop() + fake_server.stop.assert_called_once() + + +def test_push_delivery_stop_swallows_server_exception( + client: RemoteAgentClient, caplog +): + fake_server = MagicMock() + fake_server.stop.side_effect = RuntimeError("server down hard") + delivery = PushDelivery(client, fake_server) + # Should not raise. + delivery.stop() + + +# --------------------------------------------------------------------------- +# run_agent_loop +# --------------------------------------------------------------------------- + + +def _stub_state(client: RemoteAgentClient, paused=False, deleted=False, status="online"): + """Make poll_state return a stub WorkspaceState.""" + client.poll_state = MagicMock( # type: ignore[method-assign] + return_value=WorkspaceState( + workspace_id=client.workspace_id, + status=status, + paused=paused, + deleted=deleted, + ) + ) + + +def test_run_agent_loop_exits_on_paused(client: RemoteAgentClient, monkeypatch): + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client, paused=True, status="paused") + delivery = MagicMock() + delivery.run_once.return_value = 0 + delivery.interval = 0.0 + + terminal = client.run_agent_loop(lambda *_: None, delivery=delivery) + assert terminal == "paused" + delivery.stop.assert_called_once() + + +def test_run_agent_loop_exits_on_deleted(client: RemoteAgentClient, monkeypatch): + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client, deleted=True, status="removed") + delivery = MagicMock() + delivery.run_once.return_value = 0 + delivery.interval = 0.0 + + terminal = client.run_agent_loop(lambda *_: None, delivery=delivery) + assert terminal == "removed" + + +def test_run_agent_loop_max_iterations(client: RemoteAgentClient, monkeypatch): + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client) # online forever + delivery = MagicMock() + delivery.run_once.return_value = 0 + delivery.interval = 0.0 + + terminal = client.run_agent_loop(lambda *_: None, delivery=delivery, max_iterations=3) + assert terminal == "max_iterations" + assert delivery.run_once.call_count == 3 + assert client.heartbeat.call_count == 3 + + +def test_run_agent_loop_default_delivery_is_poll(client: RemoteAgentClient, monkeypatch): + """When delivery=None, run_agent_loop should construct a PollDelivery.""" + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client, paused=True, status="paused") + # fetch_inbound returns an empty list once for the default-poll path. + client.fetch_inbound = MagicMock(return_value=[]) # type: ignore[method-assign] + + terminal = client.run_agent_loop(lambda *_: None) + assert terminal == "paused" + client.fetch_inbound.assert_called() + + +def test_run_agent_loop_swallows_heartbeat_exception( + client: RemoteAgentClient, monkeypatch +): + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock(side_effect=RuntimeError("hb down")) # type: ignore[method-assign] + _stub_state(client, paused=True, status="paused") + delivery = MagicMock() + delivery.run_once.return_value = 0 + delivery.interval = 0.0 + + terminal = client.run_agent_loop(lambda *_: None, delivery=delivery) + # Heartbeat failure does NOT stop the loop — we still detect 'paused'. + assert terminal == "paused" + + +def test_run_agent_loop_swallows_delivery_exception( + client: RemoteAgentClient, monkeypatch +): + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client, paused=True, status="paused") + delivery = MagicMock() + delivery.run_once.side_effect = RuntimeError("delivery exploded") + delivery.interval = 0.0 + + terminal = client.run_agent_loop(lambda *_: None, delivery=delivery) + # Delivery failure logged + continued; loop still exits cleanly on paused. + assert terminal == "paused" + + +def test_run_agent_loop_uses_min_of_intervals(client: RemoteAgentClient, monkeypatch): + """The loop should sleep min(heartbeat_interval, delivery.interval).""" + sleeps: list[float] = [] + monkeypatch.setattr("time.sleep", lambda s: sleeps.append(s)) + client.heartbeat_interval = 30.0 + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client) # online; uses max_iterations to exit + delivery = MagicMock() + delivery.run_once.return_value = 0 + delivery.interval = 5.0 + + client.run_agent_loop(lambda *_: None, delivery=delivery, max_iterations=2) + assert sleeps == [5.0, 5.0] + + +def test_run_agent_loop_calls_task_supplier(client: RemoteAgentClient, monkeypatch): + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client, paused=True, status="paused") + delivery = MagicMock() + delivery.run_once.return_value = 0 + delivery.interval = 0.0 + + def supplier(): + return {"current_task": "doing-thing", "active_tasks": 2} + + client.run_agent_loop(lambda *_: None, delivery=delivery, task_supplier=supplier) + # Heartbeat receives the supplied report. + hb_kwargs = client.heartbeat.call_args.kwargs + assert hb_kwargs["current_task"] == "doing-thing" + assert hb_kwargs["active_tasks"] == 2 + + +def test_run_agent_loop_swallows_task_supplier_exception( + client: RemoteAgentClient, monkeypatch +): + monkeypatch.setattr("time.sleep", lambda _s: None) + client.heartbeat = MagicMock() # type: ignore[method-assign] + _stub_state(client, paused=True, status="paused") + delivery = MagicMock() + delivery.run_once.return_value = 0 + delivery.interval = 0.0 + + def supplier(): + raise RuntimeError("supplier broken") + + terminal = client.run_agent_loop( + lambda *_: None, delivery=delivery, task_supplier=supplier + ) + assert terminal == "paused" + # Heartbeat called with empty task fields (the default when supplier fails). + hb_kwargs = client.heartbeat.call_args.kwargs + assert hb_kwargs["current_task"] == "" + assert hb_kwargs["active_tasks"] == 0 From 87a4cfcc55dba62a721fdfc9813bf0e6ff518076 Mon Sep 17 00:00:00 2001 From: Hongming Wang Date: Thu, 30 Apr 2026 13:09:06 -0700 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20address=20self-review=20findings=20?= =?UTF-8?q?=E2=80=94=20lint=20+=20comment=20+=20missing=20test?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Drop unused `import time` from inbound.py and `import call` from test_inbound.py (caught by ruff in CI; would have caught locally if I'd run it before pushing). - Rewrite the misleading comment in PollDelivery.run_once: the cursor DOES advance past handler exceptions (poison-pill resilience). The previous comment claimed otherwise, which would have confused future readers. - Drop `_parse_activity_row` from inbound.py's `__all__`. The leading underscore signals "private helper"; exposing it via `__all__` contradicted the convention. Tests still import it directly via the module path. - Add `test_fetch_inbound_429_retries_via_get_with_retry` — the PR description claimed branch-coverage of the 429 path but no test exercised it. Closes the gap. --- .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 2439 bytes .../__pycache__/__main__.cpython-313.pyc | Bin 0 -> 12545 bytes .../__pycache__/a2a_server.cpython-313.pyc | Bin 0 -> 11030 bytes .../__pycache__/client.cpython-313.pyc | Bin 0 -> 52208 bytes .../__pycache__/inbound.cpython-313.pyc | Bin 0 -> 14535 bytes molecule_agent/inbound.py | 13 +- molecule_ai_sdk.egg-info/PKG-INFO | 159 ++++++++++++++++++ molecule_ai_sdk.egg-info/SOURCES.txt | 30 ++++ molecule_ai_sdk.egg-info/dependency_links.txt | 1 + molecule_ai_sdk.egg-info/requires.txt | 5 + molecule_ai_sdk.egg-info/top_level.txt | 2 + .../__pycache__/__init__.cpython-313.pyc | Bin 0 -> 2458 bytes .../__pycache__/__main__.cpython-313.pyc | Bin 0 -> 6264 bytes .../__pycache__/builtins.cpython-313.pyc | Bin 0 -> 12801 bytes .../__pycache__/channel.cpython-313.pyc | Bin 0 -> 4868 bytes .../__pycache__/manifest.cpython-313.pyc | Bin 0 -> 13835 bytes .../__pycache__/org.cpython-313.pyc | Bin 0 -> 8859 bytes .../__pycache__/protocol.cpython-313.pyc | Bin 0 -> 3544 bytes .../__pycache__/workspace.cpython-313.pyc | Bin 0 -> 4598 bytes .../conftest.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 4648 bytes ...st_a2a_server.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 18501 bytes ...l_peer_errors.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 30147 bytes ...t_cli_connect.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 9256 bytes .../test_inbound.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 69718 bytes ..._remote_agent.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 132083 bytes ...retry_backoff.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 44160 bytes ..._safe_extract.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 50796 bytes .../test_sdk.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 74807 bytes ..._verification.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 40149 bytes ...st_validators.cpython-313-pytest-9.0.2.pyc | Bin 0 -> 50515 bytes tests/test_inbound.py | 29 +++- 31 files changed, 232 insertions(+), 7 deletions(-) create mode 100644 molecule_agent/__pycache__/__init__.cpython-313.pyc create mode 100644 molecule_agent/__pycache__/__main__.cpython-313.pyc create mode 100644 molecule_agent/__pycache__/a2a_server.cpython-313.pyc create mode 100644 molecule_agent/__pycache__/client.cpython-313.pyc create mode 100644 molecule_agent/__pycache__/inbound.cpython-313.pyc create mode 100644 molecule_ai_sdk.egg-info/PKG-INFO create mode 100644 molecule_ai_sdk.egg-info/SOURCES.txt create mode 100644 molecule_ai_sdk.egg-info/dependency_links.txt create mode 100644 molecule_ai_sdk.egg-info/requires.txt create mode 100644 molecule_ai_sdk.egg-info/top_level.txt create mode 100644 molecule_plugin/__pycache__/__init__.cpython-313.pyc create mode 100644 molecule_plugin/__pycache__/__main__.cpython-313.pyc create mode 100644 molecule_plugin/__pycache__/builtins.cpython-313.pyc create mode 100644 molecule_plugin/__pycache__/channel.cpython-313.pyc create mode 100644 molecule_plugin/__pycache__/manifest.cpython-313.pyc create mode 100644 molecule_plugin/__pycache__/org.cpython-313.pyc create mode 100644 molecule_plugin/__pycache__/protocol.cpython-313.pyc create mode 100644 molecule_plugin/__pycache__/workspace.cpython-313.pyc create mode 100644 tests/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_a2a_server.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_call_peer_errors.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_cli_connect.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_inbound.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_remote_agent.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_retry_backoff.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_safe_extract.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_sdk.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_sha256_verification.cpython-313-pytest-9.0.2.pyc create mode 100644 tests/__pycache__/test_validators.cpython-313-pytest-9.0.2.pyc diff --git a/molecule_agent/__pycache__/__init__.cpython-313.pyc b/molecule_agent/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3ddc6c2d826f1c62acc8bac8f61fedecb8589533 GIT binary patch literal 2439 zcmZuzTW=dx5MDbsXPs+rNC=^W`#>CQuM?8AL`_lD6g8W)ggVd%gx1Hqq)`}cG4$FyPm zsUL<{ad1;OKckypjh2B%tI#U$73?Awnb8_+jqi=w<2at(PwY+DlQ?Nl;gns%l0A*n z+4|(3X_v8V&)|$bi?j9|&e`)gZ!h42y@-qU6}*!9P3>K^ui-UjSVpV#MFFq3rt!v+ zSuH2GCJp0Z*btI$$WL&bYK&k4k&!uGALB`w#*)Yw+o{)@wI?6$hOJE;2 z8@HJo1u+jr6fzaDc00%+ImvEDwBI&ALTtu@k}Htmw+Kr$19+*V%)^!vm^rsF1sg>c1N*2tDvvA}OKGP19s_ zWxz*8AFx3LafFIJ&KR<-33AUDWCuIk?4E7C{eCHnsH2W*>j-bFvcBGg+iT5c9acZ- z)Yn$LwK~7GvQb}K+t^rNU!yn8W~DaTJfxVDpubh=DHY32%c6#2efX*YXFP~~Xb^iY z?abgiE=Oux3q?ccR^TXiWYIgb{wZ@RnOI4lA(9TW? zP*o_bB==lo27;0gFXia+kU`L)#NEbz{*r}it5~ZQK z`XJgM2&6`JsH;v9-5!M_5%GjPCV-?|?e>pWW5{gl&Sgs8wHmr*PS&z^n;_{ESaYM< z)Qt^HQL=b!Nh{otspQbjszmCRJL;B4 z)VhK9X^-$nA!unN{9WM#$(v5?ARGI9-Um{kWs>}Ki>VIv4ymX|*>=FyzHgLUQgaeg zi2k791QpKWh@7bSBJ5=3c>0G|>5TsVPbT)r( zk#e|@&gJV5NLhWrbmoAnINCgOkjUQfiE_QJze|aN|G=Ba3CbI%v?*yrUsVHVwVBgq zMwO1L_<9LzlIH~D4-9#k_ zj)P-*gUMGp$%rm=1|gjs=*s}W1)ePWRNmlAM`yq;aAv?pIMb5j1Y8i745EfX%%P{N zbo6h=Iawp!v0@Y_)HzE9u|>*K*CS;OC#$9H$ZY)6$(F^5`$f zU3{N{Y7)s$$-EdV6bk@RdJ$FJU7U^nwchJkU7`p<-10q_V4&Y Tx%hPIMa7uE@lzS!qZqFNFQx?y literal 0 HcmV?d00001 diff --git a/molecule_agent/__pycache__/__main__.cpython-313.pyc b/molecule_agent/__pycache__/__main__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2f958131af59181427991360c60f2b4679188764 GIT binary patch literal 12545 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 mj(a>OJd5?+4Dnt^Db~Eu_uUZR+y4TqA~GNV literal 0 HcmV?d00001 diff --git a/molecule_agent/__pycache__/client.cpython-313.pyc b/molecule_agent/__pycache__/client.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2622dade1218b8c3983bb8a9295080fd2a2b1014 GIT binary patch literal 52208 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 literal 0 HcmV?d00001 diff --git a/molecule_agent/inbound.py b/molecule_agent/inbound.py index 9e00aac..b56a4e0 100644 --- a/molecule_agent/inbound.py +++ b/molecule_agent/inbound.py @@ -29,7 +29,6 @@ from __future__ import annotations import asyncio import inspect import logging -import time from dataclasses import dataclass, field from pathlib import Path from typing import ( @@ -253,10 +252,13 @@ class PollDelivery: def run_once(self, handler: MessageHandler) -> int: """Fetch one batch and dispatch each message to ``handler``. - Returns the number of messages dispatched. A handler exception is - logged but does not abort the batch — at-least-once semantics, the - same row may be re-delivered on the next iteration if its cursor - wasn't advanced. + Returns the number of messages dispatched. The cursor advances past + every dispatched row, including ones whose handler raised — a + poison-pill input shouldn't block the queue forever. The handler + is responsible for surfacing its own errors via logging or its own + observability. This matches Slack Events delivery and SQS DLQ + semantics; the platform makes no exactly-once guarantees on + activity poll, so handlers must be idempotent regardless. """ if self._stopped: return 0 @@ -366,5 +368,4 @@ __all__ = [ "MessageHandler", "PollDelivery", "PushDelivery", - "_parse_activity_row", ] diff --git a/molecule_ai_sdk.egg-info/PKG-INFO b/molecule_ai_sdk.egg-info/PKG-INFO new file mode 100644 index 0000000..55501cb --- /dev/null +++ b/molecule_ai_sdk.egg-info/PKG-INFO @@ -0,0 +1,159 @@ +Metadata-Version: 2.4 +Name: molecule-ai-sdk +Version: 0.2.0 +Summary: Molecule AI SDK — build plugins (molecule_plugin) AND remote agents that join a Molecule AI org from another machine (molecule_agent). +Author: Molecule AI +License: MIT +Project-URL: Homepage, https://github.com/Molecule-AI/molecule-sdk-python +Project-URL: Repository, https://github.com/Molecule-AI/molecule-sdk-python +Project-URL: Documentation, https://github.com/Molecule-AI/molecule-sdk-python#readme +Keywords: agents,ai,multi-agent,a2a,plugins,saas,remote-agent +Classifier: Development Status :: 4 - Beta +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: 3.13 +Requires-Python: >=3.11 +Description-Content-Type: text/markdown +Requires-Dist: pyyaml>=6.0 +Requires-Dist: requests>=2.31 +Provides-Extra: test +Requires-Dist: pytest-asyncio>=0.24; extra == "test" + +# molecule_plugin — Python SDK for building Molecule AI plugins + +A Molecule AI plugin is a directory that bundles rules, skills, and per-runtime +install adaptors. Any plugin that conforms to this contract is installable +on any Molecule AI workspace whose runtime the plugin supports. + +## Quick start + +Copy `template/` to a new directory and edit: + +``` +my-plugin/ +├── plugin.yaml # name, version, runtimes, description +├── rules/my-rule.md # optional — appended to CLAUDE.md at install +├── skills/my-skill/ +│ ├── SKILL.md # instructions injected into the system prompt +│ └── tools/do_thing.py # optional LangChain @tool functions +└── adapters/ + ├── claude_code.py # one-liner: `from molecule_plugin import AgentskillsAdaptor as Adaptor` + └── deepagents.py # same +``` + +Validate: + +```python +from molecule_plugin import validate_manifest +errors = validate_manifest("my-plugin/plugin.yaml") +assert not errors, errors +``` + +## CLI + +The SDK ships a CLI for validating Molecule AI artifacts before publishing: + +```bash +python -m molecule_plugin validate plugin my-plugin/ +python -m molecule_plugin validate workspace workspace-configs-templates/claude-code-default/ +python -m molecule_plugin validate org org-templates/molecule-dev/ +python -m molecule_plugin validate channel channels.yaml +python -m molecule_plugin validate my-plugin/ # kind defaults to 'plugin' +``` + +Exit code is 0 when valid, 1 when any errors are found — suitable for CI. +Add `-q` / `--quiet` to suppress success lines and emit only errors. + +Programmatic equivalents: + +```python +from molecule_plugin import ( + validate_plugin, + validate_workspace_template, + validate_org_template, + validate_channel_file, + validate_channel_config, +) +``` + +## Per-runtime adaptors — when to write a custom one + +The default `AgentskillsAdaptor` handles the common shape: rules go into +the runtime's memory file (CLAUDE.md), skill dirs go into `/configs/skills/`. +That covers most plugins. + +Write a custom adaptor when you need to: + +- **Register runtime tools dynamically** — call `ctx.register_tool(name, fn)`. +- **Register DeepAgents sub-agents** — call `ctx.register_subagent(name, spec)`. +- **Write to a non-standard memory file** — call `ctx.append_to_memory(filename, content)`. + +Minimum custom adaptor: + +```python +# adapters/deepagents.py +from molecule_plugin import InstallContext, InstallResult + +class Adaptor: + def __init__(self, plugin_name: str, runtime: str): + self.plugin_name, self.runtime = plugin_name, runtime + + async def install(self, ctx: InstallContext) -> InstallResult: + ctx.register_subagent("my-agent", {"prompt": "...", "tools": [...]}) + return InstallResult(plugin_name=self.plugin_name, runtime=self.runtime, source="plugin") + + async def uninstall(self, ctx: InstallContext) -> None: + pass +``` + +## Resolution order (understood by the platform) + +For `(plugin_name, runtime)`: + +1. **Platform registry** — `workspace-template/plugins_registry//.py` + (curated; set by the Molecule AI team for quality-assured plugins). +2. **Plugin-shipped** — `/adapters/.py` (what this SDK helps you build). +3. **Raw-drop fallback** — copies plugin files into `/configs/plugins//` + and surfaces a warning; no tools are wired. + +You generally ship for path #2. If your plugin becomes popular enough to be +promoted to "default," the Molecule AI team PRs a copy of your adaptor into +the platform registry (path #1) so it survives upstream breakage. + +## Testing locally + +The SDK ships `AgentskillsAdaptor` as a standalone, unit-testable class: + +```python +import asyncio +from pathlib import Path +from molecule_plugin import AgentskillsAdaptor, InstallContext + +ctx = InstallContext( + configs_dir=Path("/tmp/configs"), + workspace_id="local", + runtime="claude_code", + plugin_root=Path("./my-plugin"), +) +asyncio.run(AgentskillsAdaptor("my-plugin", "claude_code").install(ctx)) +# check /tmp/configs/CLAUDE.md, /tmp/configs/skills/ +``` + +## Publishing + +A plugin is just a directory. Push it to any Git host. Installation via +`POST /plugins/install {git_url}` is on the roadmap — see the platform's +`PLAN.md` under "Install-from-GitHub-URL flow." Until then, plugins are +bundled into the platform by dropping them into `plugins/` at deploy time. + +## Supported runtimes + +As of 2026-Q2: `claude_code`, `deepagents`, `langgraph`, `crewai`, `autogen`, +`openclaw`. See the live list with: + +```bash +curl $PLATFORM_URL/plugins +``` diff --git a/molecule_ai_sdk.egg-info/SOURCES.txt b/molecule_ai_sdk.egg-info/SOURCES.txt new file mode 100644 index 0000000..1960a58 --- /dev/null +++ b/molecule_ai_sdk.egg-info/SOURCES.txt @@ -0,0 +1,30 @@ +README.md +pyproject.toml +molecule_agent/__init__.py +molecule_agent/__main__.py +molecule_agent/a2a_server.py +molecule_agent/client.py +molecule_agent/inbound.py +molecule_ai_sdk.egg-info/PKG-INFO +molecule_ai_sdk.egg-info/SOURCES.txt +molecule_ai_sdk.egg-info/dependency_links.txt +molecule_ai_sdk.egg-info/requires.txt +molecule_ai_sdk.egg-info/top_level.txt +molecule_plugin/__init__.py +molecule_plugin/__main__.py +molecule_plugin/builtins.py +molecule_plugin/channel.py +molecule_plugin/manifest.py +molecule_plugin/org.py +molecule_plugin/protocol.py +molecule_plugin/workspace.py +tests/test_a2a_server.py +tests/test_call_peer_errors.py +tests/test_cli_connect.py +tests/test_inbound.py +tests/test_remote_agent.py +tests/test_retry_backoff.py +tests/test_safe_extract.py +tests/test_sdk.py +tests/test_sha256_verification.py +tests/test_validators.py \ No newline at end of file diff --git a/molecule_ai_sdk.egg-info/dependency_links.txt b/molecule_ai_sdk.egg-info/dependency_links.txt new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/molecule_ai_sdk.egg-info/dependency_links.txt @@ -0,0 +1 @@ + diff --git a/molecule_ai_sdk.egg-info/requires.txt b/molecule_ai_sdk.egg-info/requires.txt new file mode 100644 index 0000000..2bace8a --- /dev/null +++ b/molecule_ai_sdk.egg-info/requires.txt @@ -0,0 +1,5 @@ +pyyaml>=6.0 +requests>=2.31 + +[test] +pytest-asyncio>=0.24 diff --git a/molecule_ai_sdk.egg-info/top_level.txt b/molecule_ai_sdk.egg-info/top_level.txt new file mode 100644 index 0000000..a1a75a3 --- /dev/null +++ b/molecule_ai_sdk.egg-info/top_level.txt @@ -0,0 +1,2 @@ +molecule_agent +molecule_plugin diff --git a/molecule_plugin/__pycache__/__init__.cpython-313.pyc b/molecule_plugin/__pycache__/__init__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..68f12ca4f2e8cf6a954a8618659477f69fb1590c GIT binary patch literal 2458 zcmZuyNpssa6sF`&rYw0$yv142}6gPfIzytN36))FjP%dl*%z>0MXZt1&osP8u1wpL+P?=$r^YaQ0D4cM?Y zVN=WI>vyaz*wSmWe%HDO_pJMH-+BNKP?iN!Hd+hcr{J^GTp{28d)hD>++&@-$4F(D zgkJyD4M?k6CvV?ekXL=za}uE-ZXl%XdG;&3%L8Hu12XycXAWl~v^%V1nw6m@R}h;x zF0hW|Fd!WsNZSqE;1tE}c5JRRuzj!HCcYiGT_z-IcF+JC0pfFDX2_rj{Xn`tBer9Q zs7jE2;4nZPTEIY*pCwnGm%>52T_Q(4cFn)gvt^fqZvqqCJ7?$_+DU>EMB;UDPkU%S zHbHDjMllf#9b`Ym*p7M_lwydz4!K}r+cZBX+a1pqV!M5)39Q5#+L}bA_z<|{9qti! z&X9(o1;3Bc3R}9OJ19+P*^QarLAKay+5U2*J~?PI(f4Gm-m#@kv~`RqL?@U-BsU3C zlf?F6IV`}temnyiZj>q#5M0Rd%(jY7RAtM2i^)_x7KDe=<$>)Hz{(TkNrxjbIti%h+(ue_`zH>r91z|m9UFNr zXm?e(Nb}zDcf0%aq|(@K;MqU1ZD9LJQZbG<6J>brY;<7*d*ew{DX z82Y(#Wo#Sk1w*0AW$YF_dPLf~DEwp?(1Z!s4>?G3vpR?^$gof*3=EAs$W2@jv3@il zY;0d_>mt(6z%*a1gFC~ zEzCzNH>)mM(&W>fgT`S6uT_4G^0A~^Ywb+#_bZK>-sj?Ty>Hf{d}xDURA-X${q<_?Mdf%8J*YJfnkV$d?p{q80T9r1B_m6fPwN|wF!>B!K034#Nk%7?wq{FNr;j5!#4yWUTsc3zyeCK6lf4{az zk4_HJ!use%r-#{M9+qCvbx$W$4G+4m$9|c4TKcN=w6FmgOefq@Fr#2rf%+uFoPyg5 zvI_9yY(P#yUctPAO$Dn8))Xu%xT9c8!IFXv1M=4e* zrIAT#w~rH)Q3_M)W+qI=`h;`JuPCEFoD#=J?7#9R$_(=v`~QDlYY(+wW0!R7D$Zzr zl#7X=w8vAJ1|3Q?m#`SeJ`VP-Qh3e@ zDoN6JLs>Ew%9P^3l$2s~N110ncW_WWhXQI<{U=Tk-cO}csSoLUsp*f;jnt#7mFZOa zgMn~m8mX_Z(k8A9gpUfY){N9QSLxxEk9g(rc>8|ASX_IP{damZoBnkU9;5dE0Om0V A`v3p{ literal 0 HcmV?d00001 diff --git a/molecule_plugin/__pycache__/__main__.cpython-313.pyc b/molecule_plugin/__pycache__/__main__.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b07732792f8b948cc0bbaffdada2e7300db957bd GIT binary patch literal 6264 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 P)Kn6hmU$#JvXT7b;U}NH%ra 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 literal 0 HcmV?d00001 diff --git a/molecule_plugin/__pycache__/channel.cpython-313.pyc b/molecule_plugin/__pycache__/channel.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d5905e49b0ea4aea17b157a343bc0c0965477532 GIT binary patch literal 4868 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 K+q*8qp#K635rHWH literal 0 HcmV?d00001 diff --git a/molecule_plugin/__pycache__/manifest.cpython-313.pyc b/molecule_plugin/__pycache__/manifest.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..79f2dc91a890c9123e608291f3823023dcb5eb24 GIT binary patch literal 13835 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 literal 0 HcmV?d00001 diff --git a/molecule_plugin/__pycache__/org.cpython-313.pyc b/molecule_plugin/__pycache__/org.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..07722178d9b570aecf190f7196d9107aa9fc9122 GIT binary patch literal 8859 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 PgIq1Lqvg9+Rj~gD-W8Q> literal 0 HcmV?d00001 diff --git a/molecule_plugin/__pycache__/protocol.cpython-313.pyc b/molecule_plugin/__pycache__/protocol.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b1ce56098b62f7df6b7bd6526914c960778cc440 GIT binary patch literal 3544 zcmb7H&2QYs6(4fB+;4qYlBLQ`M98+}t?gB6TlugoL#ia#`iv{uNeauLsNLBWD=xVm za-*!!gHRumLk~X0K#n~X^(`oR$f1Y+0X;}nkxBy;QJRx(5;jH9Ti+XUm0dY4QUd$< z=KY5A9_Rhu8*V+5NfNj|{zKgwND=ZC4jPvlC{q28pgbo!VMLd7d0v{6nXI86nUAmt z+?9D{F3O^FDpQ3$Iv<;hv$)XJ`NUk3CFfEsHJ4`TxeUvIJ;vJfIBQ>t_K`uNC;Ew= z9F+rqqoIG+5uzzT(=VZ&D;e=@2GF*Z^l0SF)8|T&Yq1XRhw#_3qxu_0Ae|f(TWQXxX!SzIg}PO z-%VDkwvFMyM6HPW%h6~M+lE=9Ic?I{Sk>{ZG8OYN)}qVG!=C1DI?2`5vth5UYPM?@ zJTco0c4JHo{7qL|U7dA2-?Z&1*YW8GKFs#k%?kB2lhGu+b~W!;8Q?X|Do}8nH|_A9 zvgr%cCjebcvG$6LzEJW()xGjGEz9xYnbF2Ee+f$6Vj z6&{&%YCJv#e#|wS@_1uu-Wk5DA$%aXm6%$Xd^A0iD;K!xZCJML8_!Kqv>Iv!5fG(H2hWWA3?=9eoYUSZ=p`W`8}HqArPTt`c#2DRm!+KeEK<|5?r zJGNO~E0}kAZ|f%I8o)L1=V3V8!3U*k3k04ax;xW+aP%ymNFruNG-T75wW+~2#?ur z3A%HMCrZ>`0G%=(Hw+}2VTipK!JgUdaahA^2eD25^v2)E7XCW6@R#@gHujE~`$FRF zAv27knTJE8w$&E8$%QUd98)G7EM?o+k6o9x8wO7s#xJX;9mK)g4X706`L^Xy z#|1cM7zH;E3Ls7G5e&W4GxsJREj%<9XBOXH{<(2)c41~|a&d-rg9{c#F@Rza#Sn_? zAb5{qU<SbUaaXg0N4hpOgb_)geucjKpl4U3+;O9L6@gX_v?A}wl_XTIt?N8?q1}=U2aChML z_Tsa*_LSQPgTtRGyMyD9=x5fRGJY_0^|R^Sp~)Sk@00AFGI`KH@Ts!fKe~PYBkOZz zG;oG4T9OS7123t57v%R!c0!N#lV2z-swZ_-XexYi#!B&Qif3Am#-n*yQ>2GsqZ4Uq zX`Mz)jh} z=ZK^?18fmd1<%E7{J(ST9xf#I_q*scfhY=`;i2;uI(@B3(eyVeh=3J1Guy>}3^#1I z#VSOGjULItuAnt_`gKV?h7BShd8`5-n6|YReDtV(tpXLoVu<6`vjhtK7sT)&<{5o{ zc40v`^hZCLo?RCEAl_eudZr}c^CM{cciBUD7LO?JS0Iifk|dqTs-*m@gGd*@B5hxg zEB_#UUy$)VGJYH<7lw97?|w($cIH?ma_Sp-NP15?CMfF>FdPSlWl4ZB>Gfj*B7|_* YP2{ex<+zl7cE3*GhEUfD8pLk>2edDBsQ>@~ literal 0 HcmV?d00001 diff --git a/molecule_plugin/__pycache__/workspace.cpython-313.pyc b/molecule_plugin/__pycache__/workspace.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8ff4ce1582d3cf261eff2a0e354c97821d03bd04 GIT binary patch literal 4598 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 literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_a2a_server.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_a2a_server.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d31601547174b403133188613394e2eafa09535 GIT binary patch literal 18501 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 I#>V~s0drL5UH||9 literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_cli_connect.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_cli_connect.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23f9da1618f64de30678bda9c24e0060c7134ac5 GIT binary patch literal 9256 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 literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_inbound.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_inbound.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d7d77acd85bf0bb2e0ec95c115cd0fe86a922ca GIT binary patch literal 69718 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 h+{!tc9i8t90JrwHI=bmG-M1dtgu3R?gG literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_safe_extract.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_safe_extract.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..afac67f4aa2cd640ea5e31ea2c518a84886a4797 GIT binary patch literal 50796 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 K!A2o#^8XL*W_VEm literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_sdk.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_sdk.cpython-313-pytest-9.0.2.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee540f7a0cb3bf57a6951c51cda627242c88b82a GIT binary patch literal 74807 zcmeIb4RjmFl_m<14H86y;E$+($pS_FLE^7S{ZW6GOiR{}shBOu8q*03kq`x&1n35+ zA9|e7ab`?sys>;H-eER#W@%@3mhxoZC_eA(I!<vv1#dfIx~g*4fEsvb!%k z@6Agh&CA65X7+uzs=K-yXcDACId;MpRJ>hXRbAa(_tw3)?!9%Vyxil!@#VMgL?e$l z9DhY8`cc9G=bgVRb~s*lC=S)3IF+JP&XYxIk)Pn=Q^l&p{<=<w{iep>T^iWsH}Z5yak&7hRZmu73zwUE7g@JSE;K`u2xr{ zT%)czxmI0!a-F&kWlGmL)b&r6cOB5%GyZlRGGHB2_ABl+j;AI4c~w7h$|y&z1>|AS zMnE!y>Hv8evjYz0koGvp8~XxL5~4yXHZvPap3UKzrsjW2I9{|{K-fn znebnXtN!Grh<_m7AL$wDkAw#Mhx(#1ztVB4(c|eFiY5G4qRC6~p(HDIC9Xb`7!3DB z{OV9F86AlDe>n1GD(vrx#}Y#W5jEjYpmcw)|3btczR-{R#6A7dSh8s-7ELzLO{t-% z>gPA&&HLlA{%iiH2BU-iXe^No_xFnqHSlszHF|zbNEUEr9Br1UbRijI_~VWTM8hIfS%iHMr?Z{9X|tu2u7Jf{Kv zgDk5#kl02!ErCQm%h(x61U%1YJ<$Y1;8;&2TN>v0r_x{zNZI1SYt59jP_mPfwtz>a zF|AfoLdCM)2M4c(E(}HclV~Sf(jV^$_b0L*9bw%EiFjC5K?0VAK6ZL)Tlonu zyDLE$>i7Gz`Qo1lenlF;tyFkUxUD%yp;{97NvsIsFd3jN)P? z1&L&ZSfZ5Z!1W$M1YhE{mx3|zLHpRH}1?2OdCFZTIed*bB({jV!h@G@b#DQ z&MrG&FYa`C9Wf~=b=i=Tm`icSBf*mPM;wm$6`gSPz6-KSn8=PUTOy)V1xxXy)#uN( z746c9n6j+9M$`gn&OLG_CL;O9T~_6mb~r$)B>jo>zJ-b88?`V!QMSy}gby*H+|2$gdV^s!98tNxdW@IhzHbZm2X3rXvx*Z_c3bW`^cs@W&btr;rkS9Q`Y-kuw?nXOA5JHS=Cs=#zVyd#)H6m{eH%Hh?Qbo zl;FPy|7HC5VvPJJWp%7lSraS4IALQW{#MtOaH5lnM#b2D*V^R%;2~C9B#*P%mjOiFFFIYomr_jG7!(YRLFUWvp1aCQb;}| zEe*TWmd1hJ;j#vj+MbEVdb1^5gvu5rT0V3ur%s$cjRGH**7;d}wiM#t#b{rmM~Dy@ zUc|~RqxpXXz#*qu^f_A`bPy#|occ^w1m-nZ)MYcnGadjf=ue0FmHpFe`W=0aT1UM@ zr#-#kCoUHG9UH)J(6xib8ypv%H;Td3hOXytcfl_|H5COS45+5^4qYOQP=FC;_j|-+!n#s%E`HDi1|_v!$A3o|U<*8dBr& zWVVt&Pbe7=4PX$c*NC_7>x-y2oF5h)JQ#2ew-P@OHlDNk01Q^YQEQ2~Y|r!lgIosK z6##>-MiN8)NwCsHKvd!bh_T-_>@&#^dr%OWdp?YsGFw{pTM?w)s|E4|zdu39+_sI0 z84x%8O+wDlK-@o|fqMZqMy^Jo(eOOK4T8vx5~D-vajjQ-vl66_7M8XS`|A9kVtRmf zKcU5kWe=S`66|;w!yK4V6pi7PoYO=cC?(j?2w#C^@5J-8u_}qAsuJU=K2E22{mCIU zmX$i=u}Gjg>l%25284%=baqFTv=P}-`qt4{U$(3-l0416I}^OJrP@dqgM~h^N=#X{ zDg@E1pGjFg@d2U~DlvEJN=jB!Li4r?cFv)$Ly|4wA0S&M9yhQ&>xRS>8iayIJwgTd zP{HD!)FXN8a%uCnb#wqabPm&DG(5;!i+Z|L(_-1bvrJN9_mwP{*vPD{-<*G@_YDSvO;wRWsG?bjK32emZZHq@poEoPs{B9QgVAn zJ^)}!J}`}Z(=Sa;i44=(lyu z9He$OJZOTATZozfZb?UfR_gGbbp9eifPXDzI2llOw(}Sj=SD4xJZ(vJ?`sp-$~0o+Rhk2yH`90$(eg zuQRw>C@yKrWk;7#oa#9wmFn_7anek^s>#3is9rT{+eqlMs8>mmxsYCxtZm%KUcD;b zsQwO_EN9fR?OjmRVv5T`rNy^2^~Szkq00~|PM6|V%7QM9PcAVjJdL~BN-sgd$Lk|W zFBnjYn#{79QvymTB_i+<-^zz*oNE9B$U8b3VlzoQg>S3U)(hiFOAP zDvceL9`1(3c@RPlwF?O`LAyURb4Fkp*xY}^qjpm%R+na9^(ji`oNsTGsy$SQZlw+) zF;82&)QcjA&vDw!$WQhq2phE-i%(Nq*fb@UHT0#AP`IZjGMG$+2BNX(K)7H194gXO zp7>voj5uc8mDdlZ-TsjyGm`72(=VL9{=lT<|3F?h_E<*Vkdii!gRUY;%bTYq?U#`@ zr{oRdlmk=J=1F;-$V^*LdH!u_^VnnNBKjFBix$!P_)bws0F%;YwH95r&?KS`kU*Sw zz6)Bj7&J*KUIRt@GC?b#$8+Hx>@f6naY3(o--JxG&_$D9&GLlHw7^gRcMFyj`aPvY z)2O*jcrB=}y$&)cG(%Rr9&7_nmv*W{c-zAp%(%>#DiiJg?t!qHjD};M_E?4ihJd4$ zhCw|5U2VP0@d!E+gL*FLB$9vG@w&_Jcoalb#+20OWI}b(aK%vUnOOWvOkWV~yy1Yv zS=88^bw&~-9sB(p!O9NM8o<>-^-%W6EV!mdo{sbY*R&=fQnEExL#Px@kid{2@<9Ay z%D4Ni%M-OJFkwe-S8RUk@-Oa4xb*qz8s~@gCUIhpbsPv9w0u(>j$ON9lI2w5Z7sy< zi^wq1B}S`kgaODaf;d4ipf#9;8lk$x*sE-rgOHDtATy(!Pl0B6E9$GLPoiC76p0Nb zN>#N@O1nNNe_-s{OnL3dvG;wuZ(Pp!cBiD>ue9QwWn==UWN?<2Uz)CqJk!~fv>Vm< zl?>p#n#jzjF-v@p(A2PHWg437uv?i};(I<4zK7GuI(r()mw_8-8Tiwj4^l7VgBgsC zdWBA}Q9^V`9j4?tB>7y$_E{*M&Q)BxHh3u#V~exuYiOa9TKO|1w)nhvQrfq~THx)_ zvBX;N_h3%Vi-7lywJ5&~D<@bMwEJ5cn-`6d$V!Bbo$BZDJnD-`%*=!OyU57ynFX2D z$g@LHC}NovgblNBo?0W-EN2#Wym@Tw+0n~mRbP7U&11h%Y4%iKri9Jyzemt3l>8$k ziQGwg(|r1%{$o@2i{fkj~KohHV<$Yj4I#M^kQE<`iNo@};^ z>5lG}bJ!>q+zxw^ch55Z z2cijBKJ|qzM*AZ+DEMhSXM&h%j)Ki^tr$Nt`rKIfcEyIbR@mZTpo~wr^JKUKF3xa& z3HQilv`GSGj5g=9>*nzY>Q_;RR1yiA>uKrgfw8Np?T6DF4rj_ABwo7t#)^!uIVCj{ z!Zv4Q0;l9=sGrS0sGNf!UR$-19RdUq6#X?+L-9F(#RYs4*J^@5RS33FLd;E}3XaRn(3@ zcDrKB+aon*I6N?Xm7?4ECwWPE#4(jLOuJsFw6DS6Md zWcguvh;UZRGo4LIdr*yE$pFr)iOeOO#TS{E`Sd3rXR90hPY)%Mo(6vy|NF7}zGz6B zEggWt0w&ZsakYJxnJgBM!FHe3XVwok`1%YXj=>W*zIl1PcJ$iVkuQDr&C3hLR&L>& zuei$XhWaPCY2Ta}yKPbmm@&5T4QQ+yQ&J;gY-2_ya7u2RmMp(CT^D(#vni<&)%cYR z;Jlj1T*BDj9E@FOnq`yWK4`>=n+`Y3fx8`eJ0_Jlbk2rK{Gd}8cf#N?VW$NfZ% zJ~qK*-j|=7uGl_yd7|no&rMcrfBTrGDu2N5oWBg*ywLus{{kI}QIBSws#_+doo2+} z{|(5)`%}_>Lj3(1nZPM|Kddy&KUi!K;%j-Pvngpms_`oszVXwE)13-V~a3c)5*y(Z9`H)w<3qVD!NYuU z6c6*rff_FNFnI=>(eBAgSIk;Y*tD~9RkN0>Hnrza zmQlHZ)n`}RSvc*|`ht0LZ*Vp2k;qp%*MDd=d77NBF6ce9QopaVD$jdpg>E^`{DBI2 z5UsX&5V_8-R@Shm6>2==73xnAD^b?QuLMhI?vIb^JVEb2g9=F~`s~;8;alLwldnI2 z*|5Yi)gcBw=YWd8R6Oeg-LwYIjxJh?&N*__t7|R&vG+O=HbeST?p0_NG=a1w)m&N3>tGNeZ%&U0f9|YN)81pG|{2zjB-iuWRE4%#E8|y({ zV+JLSRR^ne+Q|G1x5C$Qk*V<6)jHkN?=&AOY}CT2HT!?s(`-B6E&GyozJT^6g*RWp zIZVX4DOgf)6v{Tuzwnp!6~j!T`xC~>0sHX30{@x+7{0H|&Z98q?%u4Ai=g1(V&zI8 z{`bL(_OD|`5`L$!!ro|^YpeB|#$Q-rZx8w~_wP9Wm&V+$)Guf(ktL+TVc5>--JA4# z=8Y+oH`TWNqWQHkw(6CJ1@&@1e21`UT*!zwEFsaWhC*h?{{Id+p>=HF~mY0pn$rK2G$%8a*MudX1*=xi41Pw;G<(rJdK1 z7Im&?`s#hdXO0aa5LMz*co1G8%)QsY!%yC{{)=k3ZvdJqoO3^E4h%9yx}R)763B@R z3?{F!iY%*9tpm!aG#{N+X)YZu?Tg2I$?@9P;D^&>KLybur{rNbt4dcS7;bn}qIxRP zAC)59soRlcUH$QRA~IY-b}L~&+&=wGbv7*PokR7k3r?qMc(|%Ofv(1SKp0?Ygy_iXM)+QHOzxq)?rYc~5}%rl#RqR@qS@{*xR)cmuV zrQ1HbO*@jT^9u8`Rw>+{dJsvcN+zkp4_KXr;oM8jxBImZsGdO~cnekMI1IyIh+MX> zCT|ommtW=vWbpuke=u_a9^Np^9rTd^KkX9w)X^C3vqHZQ&tcBVxYzKOyhilF&@RR- zjjBy^loLZmJwY$wBqc5+0XT{uB1dtBZjOF)mnZ<5Bed=kg^uKUOTn4DkzqxMJd-iR zJf|A2p>?T^un!lI!+-~I-Uvj-i z#2^}-;rFi0eUW%SPuP5%Me-b1AEQ2;r6fqnIV6D^^$CKzDIsSA^+`&|;*1B^`V2uA zC}G|jPZ30{vdN8ud2oPD<(}MX7*Mv{^1;;iD6b4b{CF(Az#49Ec7!UCSGU?r36#tZ z_8HZ05frCn5DE89w6uLMheNWWgd>&rkIWFI&5_9?XIAHCxVq!fEjNmuEY|S4W ze(mshYi8Nj>GG{3$9~{lcKw;Ow{}{tPs{bNV;Jd}AsgS;iDX*Fa)unQW@S%<2ejVQW8m^emrli)fZTtep{`gq| zqE!>DRTM1%K+PEn#qh{Y8OeCxO*y>@t=`XYdC+^uG|)!hgvQ%=YtV!UM-b@a+@^cjmlj^o1xt$c z#eyY;X0~8SvG!H4q@gJ<^!#G&U8!s=Wow{5rAny|`ZVdiqMJBPc9`x;%v#Q2)+(8# zchXi%_>X9bEXtWK$(P|=i;_3^L0>tfcxUJ1Op0GNeEI~!I}OGmbo5+nhosD;K_)LF zngIecUGs;N{w6J+Ruh*Mn+}kn+@U6aG!fgH^!Fgh>;(jt?bSqhA&zr7o(bi{<#iCT z;saV-YsQ8SSJnB45JuO31u1nqeulRO>zaX@?5Tn5X4-^=M)w!(!nmvS(_zv(;my&z632Iz;r76KKehK1n)s1t6(Toj9Q;pR#f)c1Jg4D;t@5UeUPQu4u! ze3*cT&ha!YpPQDnUxo@C7N;DTlFm^mC9O!>IKu@Br9>A{kwPhHAca!WK-|v+YfaN_ z9@5(5SIy}y>D`;mnNzB(`7T2#j9G3ao5&@Xv zA-Ww}1jv$3MwPPC1q$XS2$A~l(NaL-_)D#GwEzeo^M@cARlk8E&$XQlJVdg(i>N&xqWH;>EowsG#fLrRs` z9p`z}>f&Ir-FF5D1((o$Md0d+H7?HF7FwXg;0LJOCcMthvw}Q0YWUzDyZ3OtLOMD@lNfNO8jCWx6zN-vTv@YyUg`Ct8redEQ&`^2w2h zXQZ;1PQ7qyOd3y)oPy*(Ux5dqIPK z2W5@xFP(Ye%=^B^8#N!jqn04jJ28k}w`{dwJ822=)XH?|gPf7_x|jq~-W7B)QhrfK zYDUTh0iQLjVhKpObbhmmlrJo-B9U_AF1Dn@m{j$?F;Z^SvRUK@K^4yqLgO;s!@jgI z$3YYkZp>S%ARvFRR3qhXQ@AqY&VnRjplJv0EJ%_5o;6|;p^d?Ul8Ka;bQ9*W!w6m& z|BC*cET#k$I;J=Zwxl_alp8&?eWS+q0D2GgJI*U$6UmG0&}-uj%LU)Cq0%sVXa6k( zF;=`9DfcYk?F%)B-aGB>M?uQVJGtn-JQgR}J(k1{F-eH)PzWIOF(d8j2Y56_r_}#M z&?3`tgo?v@y}0w7ZgJe(bv8<8G-9lAi*Rv&iLRTddh=Ut^-rT zzb?Tm#q$*mUTK~i_;xVnptOP_+dI4%bUlY2J1;~cg=+jt z25??YWaewtmJk@<3Gwo68GS=!(5FTwsu>fiZ7pN3xR1faT|;=v!{J<5Y@GcXUff(b zd&q9eGl!s=d)~f_=1mUu^=~FcK%C@)5qHM|`l9|1+?j~L?D)F_dg|N>xc-e~#s?#> zdct2=lo2>Z=3SN_bl!x&TAt}_N~%XSekB7quO>3{@mDBZ)S`T?ICiYSl$=5Wo}J`se%-JjHW+sso*kwHJyeG^$E1F;nPq!YsLvDhStR-MeNNarzN)T= ziqy|qX-hsG5q!Yg zOn|oro-IsAmUfxIr#EkJUVt;W522v5#o*9~R}unR@a-x?EqgY-1D)2*2(Y^ZFz8-G zX|c88tXm8GJhwF8#^z!XosJ__p^(x46J1UCk?>`pgYQZ=TPS2Sh0kgn8=iRVE1#RJ zXnYqe{nt?_U&=Qq#(brGZNmsgG5(6$%n|VkWw?mXCH&fgkENCXx&A*?ON=1VDaEeT z_G20Eaf4EfbiD67_)Q1{Fk(4K%mmC>2%It*U~?O4*i{oVVOUw~XH&4r_G#I$vSyYk z+9@xN%q1dVi=@W%s8}y91czh(|J!-|{j&DLJ=txN&gvT8jnZPL-J{^`{ny!mH)7g~N zfol9p25??YWG>cw(C2p}H_;c>DdM zKCHo-W6veBN5?#%i+Np$_`g84f!IP^EZtUi@Cc~JCuy~tQB*2ywUqB z++}G=*@Y3}_yo$i!)_pILj&AKhPN2ltLNQ63|3cTRL`~M^@yDe$>vq~^CcoZL&@mn zh=#w3xn@{GA$1)kHdZTh%&^?|#cqb3s{?8+?z9H~EfOsl;_i(1$&UfXie;{EqmQp6 ztUngC0P*8I9AAP?A2v~MEfx!2w!5Ll;LMcctS}#oGTP*vW_xyYxpm0+o3ms@&I-mN zF)d@{9Cq`j#lqF7J%84?#B@*FTKBXtU8-5QE|x`^yEA(v{L3E0Os7R?)$Sjzxqs+R z5#$jDs4sbG&I#LAq0Nv!8IOnhifBuB z)BtYo$A5i=TV6KO!Pc!N5EJC)#nb^M6*!ym20u=y|8LOWT+}C@Mx~e`zcdfzcijW> z!(ZwXfc&NR1^L~JjQnMt-*IA9{OZ!N^ahsRz;Esw;LB8NEu6b`7XQ#S$FkMJmD*XU zrFm!DoRhfil9XvBDm2GjzJsPxL)s3!*&+5bo7g4?Lj-!GU8U{tG)%Nzck&G&|oJiU_JU1Gu{6!2HtNjo%;=b za!%sw=OFP{Jw5S(!EiEqA=)2JA`+5XkHKOwQ~6U|Po9q%ULIITf3oO$+P? zxFu&lz;a8Evc%kfDX=ltRA%vMKWL}%v9vSS%(0UQ^Hw|^*VCSOuj8F(M?W`S z`_H$&vGr?#bj6P8iuRkXcdEYOnXG7kuS44$u)Z;Gb3nEz%E)})RIz>jJya>wcq8@c zHS`ISgHX+mFfcQ9R?NJ%GXx;T-M37nEoOiPwu zny!mH)7g}C0@e7H4B)()$ed%kxXkRIt%@O%4iRTVw}GBTCDi1IKa?9M1d-p$Esozp z{e#z{9f%ZC%p!$I=iBbty_{4+Pv`JECOU@@?c5sL%F!~r=g8%VdW{)AH+uS`JrSsc+x?H8IGalfyCTmH z!TuuQ{}f8cWB%60mbM)p*i46e!^tr1lNcVt1+|?8o4_gBO)&H7jV+DM8$ECq2g&Mf z0MFWwJynl}6PLF2MU(B@1O6_oAu-;Xyth2V9#~&%{hf#DwfgsXYXLX6r6xjKz@VB2 z8Ml$t-KU%Eh>>nljc$kH%uYPqukEX<9t1U_p_}*@XbaKHisTAux;*-&6f#G&-l8d)N*E_3C1qQ*E^T;$>KD>4^(cCA zjCwMHo0u%ApUQZ{1~ni{>Ic7xcnB0fkl2z3GctiwGQ|`$|I&0_WSGvT5PQ(470m$7 ztBK5fwq(gRWH!mwRZvm=aYFQcb0WHRmc=aGV9c%-IfgjUdy1$PC>k!e++|MGwly5l zs*@1XZ|qV&>o&$`2&pLO4@d8vZ=IcRl0b61qVBD;i()x4SBF%>>C-lN{Y=K&Z^i4K zH_m2!J5$n5!t0$GnZPM|Cw4P1|FE+G;kA}$I-A0l2R}0FwWf^^(e=z#O66vLSE9!Brc-?Ow90p+&2E{^crAj zD^163H{cM_mXg{CZQC+3fm3qZv}F0E>AJ`>olQw?sK&2k0O!?2WH9fGWMQvCzFIcpYdG7#`E%}@jTD*yaJ3*k+O_t z5EJ`T+PzY*Z^RPLi3+?@S+yYSC-%p{V_WPu_Qlol&cgl}wQZ?Der=4>Ri=B|)-s;2 zU`Y{*Q(3LCKV=J`DPoS$pH0(MTm}2Hrc)*IsSY9e(9Lb-2KmN~S&4!(n74|kGvpk) zWYt{8pJ7UjZ1II~?{L5HBT65DXao9Fe^>N(uvaeB_xSdPHLQ2Fw);+H=&a%@KO zymb17(_iSEamk|tY1i6mX=_^AIw4O=ZIpE>?OHLmBJJ9M$Po2FITP6#Y2*98{o{{MJc+TG@nJ8m{lt3j&&UK$nRblho4%##y4e5CbT)-e zLKccdn9D%jtEH@~+V7HA+}uB6)VAo$Kiz3D59C{l%3isk;)4n;U zTx_o$TNRli)|vc{W(W4dtI!+8J;d6yo`)q+4b%}H;d&0BZy;9l>Ji?}qZo4rZ)vE` zVy>V|^qk5yIvnQ}v}+^BlBLR{hq%>Duvo9P!x1;a@`FDyxaKZWJ>?uAu_eJ`pQBYE zzEawNGPFM5O?bhMu5~(O{LOK*Ap%Bd#f~mwaB>c_UP13G3(arT^5;~+sks&iSee)> zrA{wvy6YxA&-jb_b`}FttfWs0c!nQ(m}~&FP1&${Hrs^FuSN#r{(+%H(mxnZB>c1} z?+;^-uOw%R8>4Z*hUZx2Z~QT-qq3zO;S&`4&(S%&UE6v)?C-f0>3JqTl=NSTCNE*9 zcQui0K+IBX{jSv*u22ReJ^qW~X#WscbLK>I2=|SsNwH})?Pg6Yq*=FKEU-+ac_-@* zVQs!Y5(+WCKHiV#*+Tgx(F8?#09SgAc*?AVz7J+g5^*&d!8Y$v1hU6vPCdVj3XJ8= zR)zQ`%-W{e1Bt#|-q%Vi1MX}Yy{!=Kd!LoHCt_QjT_BSD8A=!-Wn3|Fz~;T4cP8A( zvDzeXuXOgFD4Z;)r`{^Ir3xkRszPMY)gKMVlIqiFKSq@F2WV%+@uSL`FQ5N?-*n}c zbmf*z<+ka{=5%HA&8l=|>&S_j>a}ChboJJeQ#104X?cBGUOz2wNXr}kqkH*`+xM#c zMLAXT;H3M=%<`2Zk9<(QYHaQF>iYER`poLa+tp2@CD?5C)#qP+{?*UD{JHnNH6K*h zj&I3S2S!W(Qm!7|GqY*O^>csF{Th7qYJVy_mNoyx>!@7y$^pcU{YT&$DHiP5;fcKy z+f%D8A!PX_lp4LtL8J&IYdYiEB48|yFZ~eYmP9$RDHS#lEx^qcalX%1)oFO|;l0uU z?hhM`kt%f_3RO$VITW5kSf+ zHKEycDFUk+v(&u9kcHVbs~Fs;Mj}aJX`@c#xdO#p;m$@saa;*PWDG{GWM8Ijpv5p< z8-wZq-pTLMc%!Y$F>|{sU#{SL2poUm_!myhxJpLXL&gHX4*_8O+(gI3?o`X^RNbSK z5@fQH(N!-zdHpz(%c#Hv^zHcDY`!w~blQa(yN$#$_rANuMXnO;5$G)+d4$il=FcxQ z=_@c0UI#O;6rFOMbjFJOW-YRCDTc$PX_r?+%iDxKTR|tq@(p%wb<)nQjA6f`)9T*; z0~DUnl^yoWTVU5qp>1}ZKWAar#hhy&O;evu_oHRD`>Jsld)8CTReImpJYv+cw=TzKtsG!ya$N`17|k zt^Dv0f8WrfW{bfO=BQt@F4nOdzU-=jct2tjfT!b(Ph%)VJr9N0joB2WK2CR>XSCg{ zhj#VF9bq-EUZK8Mu!%2Q(i0v`T;tEfnKa_hxP~%H5R-c^0kUj|+sqoV({Lt8Y|^#gmdHyRXSjgI_?3*Q zCg6#%s2~6opYc>qd)B5sYcrnp)1KP2r*`BaY?PUjR$hPTWiWf#K$CvAq?M!K^$5ha zq&mnmc;5Ag#95jui!%Xaq?I#rbxK-&z2{{_AzsaYx1`mh&^6N8qydV{$h+Pn&eE1M zk&Qxga1=N5I10$!Y&ZKD?RiR!XU?I|EMVv$ZL^hk;!ko8v!so3Ya;R9JYO%5I^$vtR$#-;&^U zjJw#+l7efo%w$F_B0xC@xC2oO6t>c&h_o+l@H&OsHF%vuB@JGuN>dNIm1<>K(BO5% z3Z$ujwi=3g@jBoNau5Ao+i5Sr>(tCL2OCc&_*SE3@H)#Gud~9!>lk(H->?{$%F0C_ zA%bgJ&D|nsN${G`|GyiWiJFl~L={?i;@yv{n#>!@+epX#S58N!W+ zwY|cyl&cBPv_UOffsI(!oeKvy<-RKFv(z+A0bC8Q(kU@TYJ!p^B|}Iw#^(>rj1Tc3 zq^vO3omGk|2$p1+s{ zt0ks0ku4TIY}GI~!RgOW4FjuP!M>Q7lj22F#JCu9Qet6FN*7(s7Ho!P>Tv`4*fGl< zhoTlpVyQ`#w`YJ1=A=-&26IxVq`{o%YnNa&v36-NC(HF`F!k@FRK&<^(ge9!pd!Z0 zn3Hk~b5iJS7|hAS%{`5_@0TLRF!wBH=AMhHh%podeA1+uZMd|d0S=#$bwBIdhElI_6Hfez3GV;cX#aY^NCbCgz4l(xs z%A?4OFUB%k4?9tFHfr7nthTDv4e`NV_r<< z3)I|W66Nem8`Qi|y9PBcRMMd4vJf@BO1X)e&tHt0k6L}P*qMDRC_QmZ@q6V z*9Pl)-y9J~{XB@VA>T0ZBUirp0u}ikqTI8pM>jIFPtzojjKWxGP>sUmAjEc4O{lM+ zh5waW*@k4ELPXJ|v;&&cv9o{NI)3?U`%{%ow9t&Xp(!Ib1H5^JC27<4q_=3d(q^#~ z&4DSZCGu!_T06r9G$vN4MNO<$-#j8J2mr-rof{TkcM7HJ98<#|_OcP9p zsju8%jdUmUYQpF(22cL@*`SN9ks9_kv_@(et9h@BSowbS|=ThV2xBv4aVEk-?g2+RIE(##@`B-(RYY{ zOMka)jnsHD`|n;Jl=0nt=WiI_-ShE3is0UtLeF?3G%sBR)`wl1OZ6*L}4n5GEb(bMEk3qz^oCG}Ojp?^y=M46Z& z*s9s8iDT*7otgEmA79yEEm_+qa;)uBBr1^cJxuEbEKKRi-aaAD$ll&K6WJ&<#}x40 zyeXiNbf5@Ah6N^AH6*H4Rpi>JDN0TGYu|QxGS$8OuPNut`Y8J*P)$R&kZoDzIrZIxhW-WCm~`} zM&1l?0tzN1X|lM`ez&CUDH$skMh@U9swMK$#u+Z4F@7austI@k3MNYUfIpe+@^ ztH2^%hqnw9HOPGGu$FA>iNj>y^E|Vf zgh8drY7(Z9Y<&bVZisy`SxsK0(;-Yf!xbje$(9yWI8B`}+XayE{XLijkjZ1##X6Ta z^Ja?%TkwBpfytLOAwM{HP4kP{t3FNr{&z@bSLzuykGjbzMf~bdMhAsyXF~la=v*5A z6Q4%HS9QwPjh!DK%9J&X9R0uq^9i{6tB?P2&&0;B^`$Bs5v+%%;l_*%wO-rJ7M7$< zL3nOaOde?GFzXsW1nr?|So^`vKtIC;G{Xg*p^z&Be&1p%PA{WR=*b>GX_nALwh zh-7r%^ zSy9yt;MRN!$6FQ$sXEvc{@;=NIyn}8B;L?$*Q+8^Fb-R%3{zN?H_7wH;<8{%uywT+ zQxTHabAid+P(JAdN|0bU2bgNxDuVKBgA|t(s%0op3zig251b`N;@ksZIMPrFIH$wmBpFDY9Af4Fnp+5=S$IS7>Id9nDj;u3`DX_lm+RXnCfyDXAIN z_>~Ocyqd_IgP^?42#VqTOr%9A60y&n-5@*sFx>MI_rKkHvugD6Sk=qVO;^;9U7cw8%JY*I^>1Ty+OJbrtb}2Xu)zhkd>36( zzlIL{HFaVH?duVPTT|OQGu|`S$fEndfjwzI>NqKaGgv}od>`RJiW&YB6ES!kqsxrS zSFM-~%qBFqpQcGds&n`mPl(VCnDG!n))90PXH{Sm6U>P+YW5ZFDZc20hcPY16h`GE zOjT#)F!&x+Q5Jw-L;{}`qwnHAiCXlJWAxE?&%WaveSX}TuBe@^XdS1;|m zifa5y25??YWG+q7w#EVZ@s2)mnB8Jb(m9yjo4b979jZ$hoGb?TQvgh;zDY;*E)3z^ z!z^GGAOl-+$N)(p8X4F_;EQNGL0T3q+JO4IfU~wC!>zj)6`a~XB;4DI);J+J{a*6V zYjgH6I(XCl&XI4FPgWd!50Q)8sXz0c;cd5{pR0>1*{uGYIyHh$nFvDu<^ZR^gJ{I3 zQ_^W72&XeLfm8D7Y02_S({+(&I-8PCqZ+@G0i0J8nM(xW*Oef&%|Q_K4K--1o|bl! z~Ocyqd^dLib-+bT>u&$(#ShUS4)HKWSdr%-;dPH1q!wOn$ahyJKNYx7F8a zwF@J8i51BYy<2nh$mq4PBQJk;x}s@(+eG+{hRKSicWV}kIP8VRLgdC!>9$x$WySiFq0tQ+UkiJ`dh>y z5Uy&buH43Tmz59V;csZYWiY{m93ljx8ii*ZqT%qTU?xoe5{;D+N%|2Q#A?ApqG3-< z>(kQuNoj*{s9u|P!4|0*ivc&0fB0h?cQsJNEsiBTG&X^pp|?&j*B(Dk5YZ#PV18b| zidFrx_%jXs)dot8CQQ|g!b-L@6zYxlAiAUnaVCe72vCVQL`2TA?h8XvEM~_NEJ9>< zb%+O=Y~;)M6c|&DTu~8cGFv9HC`KjAy6cPRt~gsDerZOm$OIMhUH&@`1@#v-~)v zpit^F+0t<0TC67;R})m^bCkSF3GKV9{$onMO364Se?kduf2qDr$@eHpQ!+_OmJ%9= z>R(fGhmxOD@;@l~2TDrlnPf^TDOo|udP-_32~g5P$$m->QgW0M+Kh{B=)ZMuthbdcxO5~CYLjAolWT~ArW6`tffwZ{^JuL z7>M^G5Y-{|FK`t+4vKWqsaZz+85SNJ8RO;nma{n zoDVtg6g!HR|Ac{e+l!rB?s_HXp1VE`s=wIAkS+6A$Ae7!t$w}v3pAU657CVoy;;nbRMb2G!J>_^JzvK-343~HR zzs+uE`P~(z&NX*y%AJ9`{u1Z9yVY*zs=F&(&bqsmrOr)vYf7E9cQ=-xPu0b!i~FIs UNFQbCgDgG#x871`fN@vF#MJ({qODo-=L7>F%W0DoY^c#pyWvaHe}23_f%?eY)rS z?_26sQ9_bUob)-lh`;W=@4x%@|Ns5(y|;Wm4+rzbuir}iaR|;32 zL;j9{9AI|WpD;g6mppacDaR(=OJ2~xNr48g@ShZvN(t{2FW0fyy@=gs#=fxE9x5C1+d1xF zG9B-gqv=E{DW>B}S`kmCWKoIBXX0|Rl8D7c>A=nnn>LGs{X@NpqzLcC$wUte(BknN z?TagMJz)G?T<%Gbvo9{59O~~E<tL0XA|i@7D`V!mXPB;>6Cnar6TsEknLpJGZ0NCP9oP$Vl)|J z$Xd=tIj#(*k};)46p=;o`0;^M&uQ%&qCS~8mmZSi;-H*5gCZ)Ps5p3@O5d#Xqz2ObiiT43)Q=>T0V>2^Sx(7%Tzbe& z=gx^*CiD=Gv2LLCnne11ksz(>TIU=jk<@BIuRHNXDt6wQzhbG0s|KR|=%fQE=wS4G ze<~Uac|7}fKGwW$gScuij@C-{qPs@Zgk;oeVqma8K7c->b@d-!_@dbh5(+9a8ap3q z@m!~272?&>Xfm17P?b)&9gjuRefYKSOrFP&`$)7m(Q^d-BV<#{y5a+=bbMzoBH!Jg z08}fBwOCJX6my(D%=ud~e4po@;A9?Ckxk-dyJW-kkCz>9?HJN#`*PC$i(o4 zgUMzLh#vG_t?Q@zqG@p;F_7p{^l_+FDaK#kSQSy_gQ-L^P2F6MVw^E_V?3Y*l4%-8 z+Vs*BO^Q(k-776(%AwgnM2{Yfw|IJZOAS#4VS3_kiLgA+t>wa8zxi1rmx6n@5mt0#0vtTA3Xw=6nMg+>YDKO_TMW+@B&d`D zT;Qf3**@aG)@J!j49(s zFSm{#&aBvy5w_f01hWMWBj`*;FbWVw%@r@C#5)mQvJqSc5(7oEcV7QjnCsL5(Kdek z+*3Gje^jA9%bHNFv6RjF;SmH?mH?n=tD646{|Ek&^s`St^YrM6Y+%XQl5AjEMrgmX z2jJfFp~|%;dJLAC%2&ZX&OdHb>}xs2R>2)8;kY5x%V2rf_L%L6o8wB+Y>GW;OY+Nr zVc1V{GW8L8IY3D7brnN)Z82(iN+}mi%gRGO+2Z z$rnAN&M(+sNxl)-lo2-ld?K((aRBL}ztNS~AI-+xhp#ggwu^dgfiY++^iG;*C>~~d zwIZT))O@P5r#~K**)S_?N|}be8nm<^!`%sAr49fE61>m)pYcx#^;w~QQfQcNXtWF~ zYo@4dr8E(K36}X3W&4*C@O2=y^K)gK`7b`LNV!Leprhnhv`=m zE@|YB?KRx!-OkP)Ys7ku@wXb_Td=q}B^z6u9Fkpj_Bui?b*ZJAB7LCa`r|Fz`cqgL zl(v?A(bMs+=-KOs5L1uY5^#{cf~tk42uzm2-0GmW6HWTDXgV6Qu{luQ3`B*3>64y} z;GEhtht$p4oTdc@1A-c`UVProMwm>M*co!L1XSkHb7Ao=im|S_Z2k5t_UcJ&|Y{l=O)qL?4M< z;{7nHO2DyDejJq_bt)zsO#mmk>17lTLSru7B z({!HS(8ok85y0jjG&YNk#=Kk$kT>yYHM)MTSv1>SqKLF5aC&LWWKf)5wB&iuz4I%L zHkMZ!N=#M4C!i z_DAWymqe97tOHkuPpobRQ@FL4o7Gwft+73NQB zB2_R5MAc3HjFTvwNYx-?J0hUu*(exN)Gc$anZlqSLaGW8C#a>0nyHGV*@~rO%0$KL zH|rXw>YCoDYZ@QAd~|Bl-t4Bmnbv)o=KT|O2QrlhZrHiXHLS7GyI7l1{yQ(Zw63-n z4w)L9bzyl6*|q`znc1mhU()T&-!0P`E^i~Sod7L#Dn`GB>Ci{N4Dkgg(@2qb5NIbr zl$S;hdD+0%2b8=U{)DP50{ApHy`X-=TR&Y<{n?J&4x6v>w!r%u@3?HfgS-~SQJ@)% znJYR-oRch)pP&(qu7Nmc;FxM3lKWNH>9bL}7ZaOCNoobASw*I36afI#Br`fmsn6wk zB&F`RpMo3&uq=d&vcjTKWprRtXhI*JstILlLK8J>p7D;j?l^4jB{w;MJA%)BkiW?> z*uVwrNB2zxLKz{XjYYG=B5JC3wr;M5Wu~!+PRxfve6Hidwmtl29&4GcQ?>8kdlW<( z^_NQ;DI?PelaB%9%_pk8H=b7gmL3WBal)dh2Zak%Jp0kld~|g0*v4#N{rC!ijIjQJ z=G8%R6!|G6Cr2n@n%B_^S{pb9Q%YJ5Sn@|6J%pE^!F^-9vw;ocn*lPy29`l|U*aGb zt^|p(5?&Jw>zU{I(m)`c) zI9K1^z&khGf!{_}!7LtX3)4{dMf>r$s$qGa>!#&|8G}qi_vDBF<}pobB}T=QVA1-- zT=R+$|1dTioOoD?_Qtnv^+28@GJal@=(Olu-Kq`i)-{PAY1G)+c&u?N6F7Y=#PEBV z97Eg=3D)U&L~}(*AP3r|=X3<3Ba(2fB8L{O77TF@^`{X`3(=yBK{Sa~B$Y%!k}Iy# zC0UT@g*+i%tJQXtRI3+8(|B@m%ctHiB`k5R$c;KdrGiSwvJr&hPg1`jf&TdWH+ehZt8Q)9JS@>Uz7hU0srS{x zeH@`KIW+p-oT6EOVLTyv{slG@GDNj?zWHszbp8n>q0|8U6Oj#zUTFJ#+ZZT^b>r0l z8Sgr+4;HRG@3u@B4Q%rHFr`WzJ68nqS2xYO2sGpW7R6>M!;a7Iz=~8sD^kV!j8|Wg z%;^T$WM`zJ3l>^Eb*fdPKniJAcO(KCUt9)DvvuAXG{b(Ha!Eso(Ptxvw3;o<6^g;% zqMCUgbAl#wXom|FRvCU&K5FIhi0_J@W74@T?gzsvXWwxfjq_ z_<}3*`}#_7gv0o*x>6@jVdEl47+xw$0J1KsHU1d{lRrX$)*y6qngE#?OzX`MZ{`gv zc>v!p5Dsf&#`w9{W2JF#z!K!HC0m)6Z^9a`WpYmvZ8n=S&vfc^JjwEK$)S2l9;ysR zd*YEqO!XSF^av4xZiX4b+^v@A>p;jUQ?tp`Dr!kzR3T1Prk+&eUu&HOo2tS0n%o&O5Y!hiXny za>o+E-`a{U{#4CVwHWPKEt^3*cUi}tUJF=3bziJnykwsd&ymBEoRaGhpR}`ITM_~V zY=7E2urhWylP-wa>|rO(@LFs}xK`U*K3NjBcM)S-V1VuDA}L&fY2>VL@tjDmgD`a5ge#61p@|}y# zkRgiP5y;j^vMjmiU(P@5?IH@jz!>c|P)qX3a4krfDn{Q`8zBd3&{|Ce!Qc$r`pq^B z*C1RCg@Z5A+|10_%C*vhb-WQjdOwA((?b(GrG<8PZ8Yq;UumIHf5|e*o-7ZSh0AH= zBrC!dT_lnyFv-errKNqV!c_*<8T$hWMoLlCh$R#WDGH1=)T2D|luM&HcDa$pteBN^#;h_hrG^$qGnS8Jb@xsq zqn31b8GgB66v{fStlNdt7OneM`UPZmGs4wVaO*^bc2) zjCiYz(v3MNR)J5b)@c`rs zM526(u?N1UF<0Yuc-_O-U=w`-_dy5{Xcd-Sv;xbJQtLd7fJvLS(0SIXc)53Ky%CI@y$wZGon@f;4dP#j1tcvJx2Q@v#rIm zip8lIdr&A?W-?VZ`oMEqD06;;a;)ji&n9G0b+QJ|8>Cv9Py zRXWjS4MCw`jQMISq$N?r08xAqtYeK~z8TmK?hN<5Q{;{dcQrk8uj zj=9d($)*_0820{nQZ3Qdu`mxX9?a9zHq|y zcTBARU&&8n^VE`bR6YUOj+NCbjpQa2`4u43q{1Zp|MV$tx^B_Pq3={L8rlCtZ_^LG zYi~PvU)3F#!?%p}H2J>+H*fBtE&^hJzlC1I=FFqE9I0Ss@gevA4WOvD(`Q*MdL!!m zr?9O*I&dNuZBvgtkOnlO`yP_KMXV&)xl51y-gd1NAEb=96G`km^!LYO@2)`d|3EBx zrI7z8eB?g@_&$9yl0Ec$8s{f3hVSqZT~%rMs=@OQg%r<6bPHshWZPtT!2+*UQv_yJ0Ro{y~xc|Jzl!XzOLIaE6k32Y#+iNHglM%8mxMhA|hq07S<>AwEN z3AP8MRvDan1Y%vNT50UE{2Z0x^8nbGVQil2j13J8(mo9qcP!+tc#S(n(Hfs*85D&BQCjTL#QizL$B&3*WZ`b4_ z4Xoy7Buvyt-opU>ZOTI<=8T_T;BL4$Px-|oS@)7Dp*brwXIc(S3J0g%WfwcL?uIF0 zbyiqCzI{^I@-w0S`@(LZ`)gmUAM3kZmtFD5#DZ-Z@AeyZTa9O=6rUD|FZ*BeLzwn# z$7edecxLqUM9u2Uv8?xzDetbVch`h>&n>%cf#+wQif2NfU4xm}U46sDxhtlGx~xz) zx^evIt4Fe8*Q6lbc5&sarx!F%FIYQWv*c!pquev%!tCa*dCT82{;~1Ym9C7p{rjHa zGb=v3iXy7NEpUOdXHR|R)Mxug?9;x=XPwhf& zTHROc#`jMwX}uQQbkm2xckGAQCCu2$V8e1@27wXYKLE$HWr3P+~z4IIW=| zmVgNCf#-^USGh7nAy?&6#RJck@UC)YhC;3?EUjL=W<5q4vtpJSm{MhnlL=;gQk7I4 z_O0WY%inE^9xZV#E83oZBQE1t7t?sQ^Milc>k8EjAKWSCAAjhH4$%n*Ceb)waCQQx zHW;H;?EFKE{4BCCT%$=aPDEq*5|?4O67K=)Pa>BfQ9X$y&V}gwj3#)&h7FNrN98Y2 zM2lyL$dHA|FA`Sp=*}aL?d{sTN8J5r=h3~Lq<UYzgHOKfHx#%T|NlgheMo zL2fd#bA1S6CBh-9)AKPgp)ePSRu+*=v^Aq{E;;2tft^Us_42E_tyTU8Yvye`IN=`<3{u$Z+oWQpTe47B1dQjfwX#lk>LOTA8p6f{s3`XU+e2qR% z5%>-PmB4oiya@mu4w^@`{GK9PKFy~3jCN)uoBVf#@+AT+%^#EPrvO$0Ym@vl@?qqs zMrEyEr_elJKv`)dm8R}*royO0)?E}s^fRCzn2E&c#Eg1)b{cE$u~7k(bC9}#=JFKM zTn8tG4x+gZW!;OXgf&@VO{S@BQrH2a>wCiHo1mudGm8H?O%J@H~#S}CodozJ;rc<+ACC{a%XExud`Ck+EjvcU~SX?H?_<$9|aIxt1G?D(R zP7}$rObUDN71EG+%uZbM4Kxc0XmDPT>wuUB8$AwuW2TF+3JkWRs8cc{*(C>U#b5;n z&yAJaX{^EbZhE|jSWA8(u?oMCSk2Rp_twDugzlXeHIe(wV)@Q9vtm3k8%D277wmh6 z+aJTUNQcUz5a1g}&%kS9S0884NI-6!r+b`uV#bt;i2)o?OF)|k$N$*6Apbr3!EoK? z*5;nRD2_=%4kq@e&f?4@P6di!&oR|I*#^O|7l+T9bws68ZSQ@LM&+)51c_sxo=x4< zCsmimbVDS;jsmKlT;2_(N48`Ta=r*pn;-R~d&G0IdNAfjeWqm6fw|9*bC1n|F{peU znYzIJL}>f5uj1J!Kl9{Qwq}|SPWU>$;}yX+wM}}r66bXY8hD()@?M08C%vurMc6Ru zZMiSP#!2s54I$&}xKlxCUG;U`y@T{-wkd0o?J>`;R{LwEp50FSYnwg0tL@)d;@Q2@ z{*6}8Zd=LgPS5U&lGm#}yO))`zS6UMQ%Rn-lpEpML^OtJCx0Tsq+~y2OWLttUUVXY z{u(NdOfg+FgDg)vXkub}`q-T;G}xEbe7x`Rf_T_mS0Fh!V%Tq>0X$Z%q^bsG6L^2V5mTqu*B$c46s z0%7d2l%zPeSvRB!zzAG{?fnZnx$Dm91X$uS*`>UcO{T}lH^^N(NZm7%AFOL2^`F9? zW^5{?z7AGyq1gsrDVTaQ>_Z#;Kck#r<;?nE}R# z1@xX7oJY?L8gUuFTF*?9n0rIP)I z2ix2Z(GrTaRl!0+cMH(5d3LIwEv=Ttvy<&Lc0Z|cXkLx6V)5hL@jqY$flVqmMDRNQ zvl09ciDjW5XmC9n^Vl3n?&a5jpz`akx8oNa*YG}yL8JQ|vLqXro6`e(l6)~~a2V_WhVu?=~yR(4prfGsn00qdEpTg$U9mq&-v2@iG4>|EFkK`YT9 z$`b&Lq`+>tyJos!`OC?dlH=ithK*AV+p`VZCmMESgoVU><%HnlsY#*j2W890`X6y)UYW~-RcH*e?XnykVS1rVU8L&l-yivA5h+*R|g8E#-vc(l90L-_JBh9V`H_Qqp;Zn?L}THJ@%4?Lh(Lu z0jgPkBX@HWHk+Y93qafRf#=GkHRhEoGZb>=ll%`nSEhFDymDoRLazK4v9DM#z~RK$ zH0j`3F-^Kj3h2USP{UGL*sIexzIh0nO?t@~8K7}WK-aiI*ZdLd(Yfstw^aV?9&K=s zbKcZ3`{um*jv0#e=zp8rC%=L{8b`S*hxb^NO~rvB+*Or~W9x)eN)ySR{-GEIUAX-# zf&0NyXK`(hcK=o}N*#o@fYGb%53sG2MvYLX3wWC4_(_kk^O2C{cz^s%6!&-y3v^RM zOZr@TxU?_c-=7k30;NCJsqLXK+Ft%gij_r8RID28Ng;es+N56P8-#F+z-@qiq)d}a z_A;Utdl;tVOUoIfp1(=R9RwIz{pV!+7J=MG##{+(e<6X*_D6CFux*MZMEN%o_%WqI zG_!n%z|RQ$6M#bGMLzkfZAxrov~RK9EJ)y311ZKP7t>WaDW?X^s+p5YCOa`=#G$p( z9HL%IwDaR2>n?CV6Ar(XM;>Qdj!p{UB03@vlerhYRonQ=;mfsGIZIb;F!GpZN8@YLs@GDA(5Eqw8b@l}^UlwG}JVo`f0xO2L! z;T7-ru`9l8^WF(@UnaQ!hSR>-e~Yu%20&gfTzs>{?h}!-B`aTX{RiQe+ga_olNv`=mZx!^J)xxonRf3;Nuf&Ej0{x>1)&jfauPR(+aJh7#r<7D%ln*TLnKM~nE z6pPEm$h5RsQA{UGKu;Apc(v8UGA;1dH)C+^(XK0D4Fo{J>wgo%u1sKy>C`M&$rCx( zakBYN&HtLPi}IR7vA9f(@l#d|!^NW4(?t4L!X}bwnG|;2yBR}NKI0mi0Ighug=2th ztk76F2FVFIDN&{sCS~f7T&bgBCn(dC#+tBphm(=!m+&;y42n6 zF%XNZkleFg=29ujU4%{9t&ulIm*zs5GBG1vMm?FKuwJ^mXTvsSq>@LMUzSLvk~dtU zQ&2*8g%P_YuHy1mQ>DN{LHR&E#Ua0RvzlLE);tvPQy+Q{HUB%7nh!kinm6gndDXlb z3N;_F)K>9!dS7ZDcm4&VZcNr;T=b!BIUPT~^Z0Sm+>C+T_h|NMM2kR+ zJxSDLs(ZPVz-w?~Q!hG;**A+(y_zy{WFT=a9)sR_j>2KY&0Hy$(gMmwb+R_la$Q9k z{t@NBnrt-y*rcQcMym>t;RME8!KEY4@6@arKQK|VZNxjh z7+3c#8y(67mQ4xz-y6cRk&l`#&2lx*FPn4W!{|@}GMtFx-er`Q1GbD_hUMKYqn3%S z=;D~0jOpNOp6-KHOF@9J$)aD-E6lvF-z(^Q^6ue>AEjM{^@0J$BcyC2 zU?;#frctFd9<*`5u40KGOEg(VaucoD`PJ>S%dGDcTtc!+J5pqF>mq$QZ~J@ygztd1 zKW=P)ALOTe2d?=J+-1Y~4?R0e?5~x0c2>=>>D+-j;$LcPI0kkt&v7o(T!lq$HbogJh5kB zw&T@CK1^{;E)~&8FZT;En<>D|BXV+~8gtl&%^He`9BI}=-}BCuDejq9uFO!#6$F3} zysk{rc3!zMLm^jX-LuuKIRa+IGzm?q+!T9ONR<|`=W?UPEOD(c{Bpl&&thUv+R|lW z&+d?cE13tbE4cl(11L+Oupd_%)NIr)geW$yYYAhc+1D_-XCBRgFkkH0zqG&@ zf4IZ|rAP+Dfi61VSYX1zu9gBXIN97`ZeW9LFz1;gXiU0%V5aSzIm{vE1qrym;6cnG zWi*F`c^u2vx6E*T#II+Od(RK##*%n%i&G66tvs*sYKCI7NZkXUMT%dxkSj~^8P^Pj zT-8~|b8+ln!C7R#?Z`rHq~WgEg~N~RiN^;)#U;UV>8}`Ws3$JswC9QbI5C`b zjxk@-j2jO$l}ZsqSi5D3KcVtHM?<_?LMrCq_aIV6>`bKWC7U6$?i}_<*PdA0v)1^` z)bxvqm^H2P8|YR!sq%Fq@P=`oF)c@%?>boYnoArm)qGczr&^YbpEc#Lnhd(uLO_yq z7>v|u=r0s%*Z&zM_#Q;js#A_8dvVP>ot~7#6dRpW43!t~c}xzjy0pr-DA_Yf^_M8v zOhRgv$2G=OK4QLc*|9BtQho?6p^&y7sNVvk5yP#FDWpor-Tc(v>>>(wG!w!EiYOL| z#i0~Cfa~-X+;@yq1LxHb%uXQBGs-6^qn9zMY69!B1*5y4Yru_eWy{Cy*|Ig@_XPj5 z-ef(BxVSp&uAdTCWrbDa4LFVmW&5{kS6ynleCAb8_Mwi6)rT@Qhcnej z-kpm5O+l9`Ls5Rus}2nW_Dl)---NJ-Daz-3@aZafLN=>=X7inz|21I`Nn>*;7MF=Z zs_{7t!^NV9qC9;;`mZ`nB+~+KoTMzTx%lB1YDacX`>IA)jFpYq$67PBtFpdTQ{L9B zxApRwE72>`1zN#U%6^r$ZXg>QL!iE zJ^U?)1}Y9udG)^u@8L|v9@D8=u9D|U(=(gz)cmh`504906pPEmK+0AW)5#LhQ$-HG zr$BGDCq*`9+*_G<(Oqa%F}>uD~NbaD^Ci z6wE7EW+>#Ua_(v_vts5>Usjo?FRP`R2X^|B6n)w0OUxj(GmdzZUt_%0%6of@RBMbO zV3c$f#n3n*EfoXX%Dw#xjr9OKUA@@k**wy($M?NFTWFNOBI`lwKwTH$$@7(M9=9N3gg<@H>NHGMIqY0 zQ*cWgUZLuZ%6P^F4~eBtiePcD(}Q>Wpgk1VUm8rwG29ZZ@o@hat$Eio%-8|OI`PAI zJyFxi*t@%)0nFhspvCKEflmcX)Gx- z71c?PDJd#HIOCD$0$n1FCnMo^0Yj#5PiX4&?07S)L%d@ai_f_@a$ zrF@NXSU(XqgTBYbF^98maY|^)3QgnEq_CcJg68IxQ?}2v?3xsIgZaX)Mp?}pH9IGQ zyRd!MzIUQ}-#46B*1x!IT)5<&Sh#7TX7g*#kB*6u(Vb@`nS^Wimust(77_t zIL<3qW+>#U+#WfoSRINmfXKc)yZg)75VhjG_&xZ0>2^zwB$ z>znIIMTu+l@@n+*1r+|*{Tz3vV!pD}S@AxS*Ux9g&fRjIYm4IXRv4{6Yn-|JuxE?Y z+@6){^wYjI(n6^|T%-5W+IjR+lQ}o?srORjc5FX-Y$g6zzSBbY zvzNTVGn{7+Q!9*Xz|~B;0zWo@ptd6tbu0Gcwc&I~V+=sc3m7w+x;|ZTd3^%_UWpny zah;@)wAmxDizOqe)5A_8Mw?apx{Wb;GYHUOLDvv$?wr>KkL)Fi-v_Wy_LDV0pqxMj zK&ZN46Ng>CDQ}_g4-=RxYcNNyK)=S)a&VV%1ymjKWdcViQIkoK_mlGgf!VilgPT(_V7ea(?qcO7rgQMfBv@5O7nM?If`FY zDPoFw%Jx*%Q`HvA-;Rw7(EXt69Z+_0;{6Vqhzg8B5hk6pDM*@_F3{^PD7xWg-L4|^ zei+<=B(Qfpa9>JSpddjwak0GzFLt;s=a5aU^02$#hHuxdjIFiW!?h zg^>CV;{%H2#>;Y3YRQc$*b0}Md->X30(AyCJUospt(5EmT-1zOEuXNzyMZNc~GV!1&W3RHus2 zD#@~NS*}!gzogutI@ho_Obk~HE0I(uE$lWtxUQn~uhH{OuBpi=NioGO^gokIHzHof#Wbl#sb1$UD!VrtWwL~BHT-hFD5*&w zS|~NTlZ7a>0R9K@zYPD&lNI;7S`F`+{Pt`YqXB2Ru7wnWgoiOQSlayNM>i9@eOnR*b!G`a|izqJ`&b9~oCFyA$C z$!;9zb*u91iZl7uZk*C!M@;bq4BqNQg~JyL>^Pw@l%)4Njf*dfzIT%NHj#}qfAzp( z8nQ$D!?RaLW_wCdd++3%JaKMdE|E3^rtsG^Luk+ z2gUK<04xt}Xt(Y^jwGlTv*(eEJg{+x9@t?0;yt{rF~d_7YU+KeW8<}rNvh93rn;yC zC_V?#YEw7|0t)6dE|#R=dEI8|CA0sb_x)1*R8jr>MhXT4FEM)+~A9 z>CZns)|0JSH{J!12^M*wmNL&OWf?5m8_D!OvgLJTc0-UsrQvO2duLw%K#FAeTUrEp zFJa>4t^8ggm*9r(67_wXLM;8EgaD*1QR`q-f2@Wj#LC8O@*tJb_G`!D_~l&x^~{{fYgMl;G;Td&Q*?QnMD`S?fh zD{mvPoj@A_+E>!H=N}~-oAcYrMw6YUlFWC>al}e}f?Yd@2bCI^Up(}-gRg3Q$HiAI z(r{1VJ6mmvOa&Cwfe0}b=*wjcF7@0ms|Hod5S0+`;o3^d7Tx3slykKUzMx$6+^282 z5N2+~*~fkvWi#Ka`zaMr@9s4VFP0WB()@_D_l?}N&P>L`)YqwZ6;d@%qc!A@16U{& zyyj>LFCRxZTJ4NCpWm_ZzV&arJidi**Ydu4^k0Kg8Ke|mpcqF1R2O@7S&=_M4m%vf z0gbB>4eFkqdR5&f3p6b2ms5fhV0T^OX#njdELilbF$*5YVwYp$B?1i%mfQ`REgEa6 z&=b;lr$Bou3-1}^Kb6JaV8Vsfe?s|wmB8BszCqwNKxm;Rh^MZgUDxwhWczCZe@WnP z2>dO9-zShEkR|X2f#U=|O@OD`$(`bzgrBNEy~(mDUnQ)Z>JAg!e~0{30^cR@CP1jh zqPjyQg2s@#wM&Rl!}9mZ^DP1_gFhhK4*^t-4+N{FI&sZ7uGM5M_6&Xh5rH2QxI^Hl z0M@HCA7(=Pyc;yvTi%Z%qCk60o8~8rFnrR46H9V1Rcw(aADcsNbV}Hn=W;scaqD`{siB(PLj;G_v<|9Y(mJubg=K)JvzvYbP3T zf%wKdfqNf+a=WW;a|Eh6_NbHpj-!&i0B$yM2F2 z1KCR4T-1glOjT^lR$w2Z4RE5OjXW#bCIe)-7QkIYd4E}v%JjmbP#a96J#_D~% za|er#Sytorda`Jlp)8=}Tks>ZTHuF0G_IT3L?7~KkMo|S&z~f~Y;1-iYT# z8mgE3@S}Pnk&{EXnj;>G$aeA&jK}-fgs3ivXpacAXzK%Rc4?90>MK!&Ad}H@QvzcW7JuaSE-BH|#vm-?RmJ$2*N2 zzw~Du_gma2{om!>-{nfb$JKt1tNtFh^hccUyIkOo!_M38RBq!p-sAvoJk4`9;nNMD zXt-r_^R>6^oGo~RY&TYM_FXTcqBPAtj3(S$tE}`%Tf7WK*(Q^aDaL7?C51F*QTi3}uOn z#LjN+B4d4t6U4Byx3{5l$(po-HSIfWWaaiC8+(Bf91b%YzC4%Ug53bS#sN87QsTAm z7P#-P?yl~hX>v%dDcg5!4r}V&)iwP;>#x6Vmz4NjxW50^?f#WPm+S8-VO(x4BHjLL z$>n;{rMj3)l~ng}>6n|j0~Gfh_b{1%dyf^wk$0?+`Sg+^R)iAyxc`{K6g{t)74zC9 ztOVcQNk8MD#jK>0M`Dz!dLArvcYZ0sDv5kl= z|EswP!wvor$)lI0gO}!6chq@WzcC`-S4z(WPPBn;dm%0Vv zZuNeId(^E6_n!9zn}$12N8*Wi;9QIa5*H!?wexsgJn(dkJsBSi_ePpx?0i%2g>W<) z837DD5w}qgcJR-XuKO~`D8e8Ay|-E zq4u0SdE(URBb}kc4<799KJrlL^b;qKsF_N$;8aid>7x%LZ-suJNJzhNs5cfp*MB}! zol|hGe;{JX#$ZE<$i=~da3YdfBWjDM5rs6gi{bugul^46H`$BO<8n#2yAgTO)#Eya z_d5GJBU+r2v&&qrT33&>O>bp<2VCbdHQhl^#{V?yPed??%ZZG9C46xpQxp%Mi-h`y zE)E9W85whVAtPgk!*RMxAdorKG|2id;c1!@7YCc-eNQ&fvou|d4Mci}1|kiVGk7I& zAr@^)(9g)jkoh|`4qnM9A?>zwL$(b4uE2ksf@fVbvhQ0bzH#FFoiBBNuY06DT~$9R z2XCXu)oXqBB4qHHxr%YU=sF|HdI04Oip!plc#cF!oyB>78Vr}($`2$j4iOY3H%>r#t)JnfR|f4s8Yy-lyH zDrbB~ol_iV87b|%*0oK~*p2VL4Ys=!+v`%Q)@AIbj11>^od(j$Sr0g5#T(yABdd|4}|#B7KI4+ zP!E~XgZ$P&+D90RvCOg%sKLc>A{4m{R2t>ze5`=g(PJod8*Qkq*2FezqFqa9y==E8 zcE$;!1N>t2vuCRKGnpv*LU?fS3fqSwy#22DI|!b2{YoyI@s+=@H{}b=R8)6n)FPg?FsD$OFPMJDBr z31zd$OxcrK{*>G?a@ktNNTIRl5xtKe5|u<`LhfKycnTXvEkp*#sI|afc8qGg?Svtt zZVT=dP#E>7QtWV#%yDN=EMkRx)g60E^$;nGU3H>Rv6p&^2m{7mix%`07%hQ!e-5l6 zu& zqa?g*-p6s2CY?9tFid#YY~?sQvlT{Fn76jaco*{4l#QB1c{!$4)FRd2qiA?H_U%~(P5xJ%E?v>y3?p4#q=AufC4sNjKt&N^AZ2ozy(t$Z9MGY;STKv zt@;gGn}^FRq_7qJQ#E{-a5~5i(&!5H9$7O|tc8MB3fd@Wr-0B-rU1kw679>B8Winp zEH)4uWF1svJAz;ZCu{5w)wa;K7Dhqg}f7*=d zHLPuCi(?GAgqsjNC)_tMUnC@I0+5ras0wBnNXAhFQa!67FfJ3K3CKNBZhrNM)~0yW z_alf}5VI_3#t}W|klZ{Z+GNEIv?PcDi8^L$M^c#E8pO?;ua)_Hd20$Xs21obUbcu4 z=IETo2tgW+XVXyb;6|X;!fpnt?fTSzE*9GrICD14{5Cd?el?&J>GlCcHo5}*7hmRj z5QHKMVWdYoh5YP`Fvlg=i{60iVRWvb)p=>V=bSX=9xm>Wa^XDi#KDIj>K>EW!>9|% z#NF7Oks`X(uR(3mp7W6?7;v^Pvn30F&xZR#B=I!v(YXA5jiT;W^mls|f)4=9$m$$Eu-|0*RGd7-D*Lz?FQyXBukzFzX?H3Y)`hQQgyMH|%@hvJFA*+?MF5l0|) z_N$TJL^nH&x1IIUdrvH2Ai$x7okKjcH49XrmJMmm9Iyrf?QQ&EI@UOJ{q!{{S+;q! z=8fQ3aH_2B`sq(tKZ@B`Dd2EEK(QzVF$CFwx@y+Dv&*R7L`@t)b?bz@-3qFQ-aef! zg&=>3K=n{sq3EOnDckl*QMt&oq$cGdsFgrrU*cySj6}%Fbo3 zN2R#C2|p8P2WV)l!bvng>3$eOBhibf8`K5M7d@zN(DJC~3@Hux)gvfktka;>oHy{_ zg&I@{?WdfnyAWv&`f1#et3l1y7<={waXhCrcmw53o>u1b<*g~GyIQRC2HrD5)U~vB z7VTzHF%GuVqR`UpTjtO4*X>!X*~dcM((He3vya8krP=@7W*)CM=^lfq$okN0M!J~G@wH{~T>2_7R&_#9?qSj1 zf$`ge&f+8iYvSU;>z(6ICCeJdE2hd?uN$&rWtEi0_&LkSck#SFeT{8zH~R)g!Ty-W zlg-OA;uJ|$7AGREjkMu4d8Fm)@XL>U`pFj(%Et%2690a!=0 z=HzR|ia$)xOsG z84rjSS@RC)01e3e8Mpo@F;a8&%F748{q-N|6EvonYo1&^qRAWc&?{&wlq`Z9|DyRYq-*wC3)j@;bP`Et#7jy``hwW0Ib&ZKhW{nCSPL;G+rDIX+}=3rW(=%jLR zTDE;sR4(!?sY&@DnrS6z#B*BSln=gN+At=kOB<4M1Kp${tx$AQX_%I6pA?mgJWFa) zZa_1wB#n4Z%bRk;`=xu{Or%TqB;`GHlRasLqLa#=Y1#HkQMt&oq$cG(Xr`5<5zlFP zQ{MA_Y0DU3PmTCmTB4cNm04Tv!o{F7BtgJ(un7@yeYT5U%K@bJjvFi zyp?XUHLXx|QrS8!+de5O7kQS{q`Vc)w30O9IW3X-$t}fI+$C{I`6tyUcE~n-CDwyK zmF5;X8$HHal(SO#u0+j(yI?sARo{YaS;*qX6#MR#sOhuZ(^-TOqIBMxrm$1=S&EuA zmcy^H9E?^JGet1IIDejn2QRR%Ar0+o0AH+zf{h4lZ_vMh?HCT&OSR5O^uLtHNKG&R>{Kz{%vPY8g5yBcrfb9{TRE|u` zwoi)6MV=)!DIY;Itt5?jPD^Bda?2yI#w*o_XTus_2YH%RQH3R=d|2aOWR2(L)_4Ur zYrMh*;|3W&2EUxGNb*>Pn5~^L3-OfvGL%?kf3ZLeMphx_eFQEudgj)j!oE=`$-rG( zS~-r+W{u~|TU*!x<*g}}5Y-}KjRzIsqFCb9my}nj6+Y zK_dmE4Q4wKQ^ zt^B1i4g2QoK#U0k+65f63vHmiaI&8VXchsqeQMEy5YW8=?V`K@dpDr% z7oZLE;za@NlI~A^Fs;|EY)^A8BqN1&ek9}Ti<}D&4J6_)a5wf1#4UhNdJ`wWH>_KE zc{5dNp}>^%92SqA@r1VAMArYtP{4I)xM2icK7#-FH3SB3*p({3Z`^aED*4z~lA*K7 zM|+b!eW|+0gnaH-N?>GVTG^76n@7*`AVmhF`X?~!}?u;=siSbDM8^_i`S=gPWZ)h4K(DlZ7^NG34*cBH80QyG-ocrL#DWVUu3 zS#E34eHhR*y15;nn-=hT+`1i~=S-RLXqHjsks6Fq=|&}z>Rb9Hj9E0lu@EQ{#*8iY zF9GwOqHacJn5+xIm^56eo97$$iZCr?^x8nHx`nEd-J{J8ALf&+6PX!*UnDXJ1IB0~ z9xUQ*EQW`qAj-yC9h64~hGQ~QDZUed)wacEBHs}w5=p8l&CW%WWa2}EgE5xCb_HFc ziqlqv1hy^3Lr+FyPe<7pT0M&Y_}?Oc*^9C=DK}26ZA>YR)3W}#DK}o-i##o3f>NSP zy;-uUE5uiS+hyz|o^#Yh>V(Q88S%u*F z_q4W~{Q$oo`!fo-?uKwu#(nbP4@hT|DPj@W^TnbASBAY!*pCy#R-wp11bUx~nWD2$ zo+M&VMxtCJ1WQ3VaRuv71)BNyaM6~4{+DrI=*J$yqFzSpJun;06bv$K4N43bi`{~K zkxLry=IM-F0v-#{h-xXIVP(n%_ZABG_QGO2Q)1@y^|Opm-;Wu`zQx`Pkv{A|jAsf5 z2ZqkmmLrt*5A-n%_0OrxO%!aVU^f1b{g6r>1;0`*_z^>=Z3p@r)cgwm<1Wdfve}jL zt@};YikVflBM&E6wtiUPT30i(cHPW|tuys)Gxu$s+0uSv&3nDc1E*3oYBF$org`^` zM5^|oWX;1ffyU&9rkUFM(fdX=Bm*rUE%R4Ye&{J)Q~FV1d6EB)cNx?_^{(QYFDy5R zi4YeNF^(i(My?%68q^j`j}o-Jc4K3D|M+DZ<7OEfWAB3n?C3sOm&3kFpHbx$iTqiY z(+(Yh63AxIZ0(3hOwP=BGVl?ee67sq%Ue_EgGp<~xkTB*7n-AU<_m?6*chF~*x1|c ztgt#?8yxz2mbL^~G@b?= z07}0!TLL(_4&mimJa}bcbU&B&tdIPt3vDo1r88s*yjI>!LTA{DC`%w=P>>) zM!f!%clETqIVEo%`PziM%?g!E_VzB9^Nv~)9qHPQf9{h&P|R7FeIX1OaAl*NW^2cF z29uH-t-owgIV_XC{UU-T(UrNtQj^SyF`d(({!geIqMS~E$^Hu!#1Leg%`X#>X7 zx(YoU@=BXs2;FLVqnCtrbr}TtQsh)YgqPLoM)xAvKP*2bOzZI^`epKr*l)ig*4g7B zD2??P5ZCt;8@DQ8&uCBUf$B=WV}8}+hb`JvlZSNVa4kmFtIr5HKIO=7+VBU7;bz~J z<~WQPG_``eHJ*a+S~puck4UrvzJQplYflT*wd%T_0$qDrc&6I8k7X1P^0P0DLhJ)K z@Q}_WA5qsY%`?r{qR;b&rFp(5^Bh>3=X)~GHB0k+Pv*IHX`b)NJa1f@=X)~Go0jJJ zp3L)oOY?kB=6UndJl~6XhG#aPS{LilWx^lCjvDe*A0$b&KK7bk^7E+NBO7J#vX-#P zXtT+TMX<#QKCUi6W)vHl)i0*ZxJ8#43)TD8tv!XB%ouy`6uBzNx@=y_ij2AIducv1 z_n3m2Yk16$g?Hf@)FO>KOSgVQ3jKo4U86pCC2Et}+++AP`$xyQv-&kNrFvSv$+{qg z`&6HyOA&s}TGUpHU$gm3^t1UjBR^(7{F6_!BKR_UU2R*!Q1nwQx`f}pG|%^Bp0_Q{ z^F5j8`lWfk7xQe}jn<)?F3~z;#)mbDFm2>wwDR`>Q5W_{R8XipHDd=Tizxc(pfAg~ zi2aPp-lpI>1wTiS@xc*#ghj&x8R<&K&&{B?tMZHoYn}{d%dVhT>nE%Af1=jXux898 z^#1+U^~&r+g`f*(;%!B=Db(MTWr_muNv3OW%CuQu$)bGN>+=cv}V zs8)q(4y74L?HyjOZ`8NA%*SRoHoU6Qu$9_nb{QDxk0*v#HwxpaoU&Tom@2y<5IYx$ zCm0-m#)nrMv$i+Eh9UtmfFU+8yuz>n5&i?}$X=}O(+XodyV%kP2cFy>*5bbt=B}7N zvVzrSrI74pw`;zrx1)ZQ;Rw_)plu=FaBg-4Ex0SsR^3-9oXGKXyUmqn3w1@_KewB1 zOzVWbTAgXYQm0w2)$v)>Y|64HBv`8L66cHC`}z7Ms6ava{X`0SN~@1dTtxHX{NqqCa`&? zrfw!sGt%<%rJ2B{k1C2_{kGh-E-+KyK2x)Kbme$QvVK=GuzRMqZnSb_4H|r;6rfHy z)q&OA#*ua7-ejQTBd-U!bt_;u=Uq*9bL(I?x5pLOHvag;hJ9&e|IH2ij1BPnXaoHI znUad{Jn`HUFC_jn^laCR5=_c%qmQN(*yHG*n{r!H32Mm+OI%by=IEm$m9nKoc3N(m zQR=W)e6%BF+4GIv-btlS+YUZqiHoh{$Q*^YaDB%(Hj-OXA{!gYXOvB_wH__VGPO=B zn}kudhznb4SYMA8h!hO1Eh&-B?X0Vl@`jg}r<4uTvi`X#Z@9WkOHG(jQH;Eomy1-& zmJ-=%dBcpdJ}K9aY)&cl)3W}#Dc2{J^;&Ym5*HPaIRX#qdi9hoC9>0U{fx2^_TeL! zvdqJi%0^)bF5*_R?~zL)1>c(cgwN)tRxj^jl%9ZcRN$B|8%6UhlnTsWLW<~UwNy#?G)T2dk#o+cM{ zTt*-|1qE!QpbyT4c{0eIt+ zTQ#oY0}|ib`;NOh7O?xh0Ikw2NB+QVC!J50X_gEOYbOTHgqtRCZWdS&f4s!?0KEUv37i^paB=zYX6y`+&cY`i`i-s<+sq+VTJ+%E)q?s7g#eWj{ zKQq*^%7pYR0e()5p&h_R0BE-7rlKVJJD`krFlGzN*mu2Z{9v+d%V>D2tm%4{Bg$a^ zNKfzR0cWkiR}Ob)zeBtKO!uRSvcf;M!gr+Vj!nqNe>Eop*!Ol-x^!Ps-bV-k!W~5? z6&wm-`=qE`SrE;+sKnMkMwp!9J9B zbbF$ei@!bmiHb^yA*O-Nz)H$S&6?>Ps?xoyx@F?!vwe>+HB z9;VP;%M$J z?1y9O8znzR>tEnMUJVlYtP6UdnPuxoJju#UGs{+dR48vM_|PSLOD2?Bd~Yha?UIWN zdCrGEms0X!5z2V%qawMu;OhZph&RQF>_-lD>feXhciZ=B;9zc*_0 zu5cUP#~<`+a>+M#+6s*JqJWQzx8b8g*Vdxq!dZ&MfOt6%J~Bqa$HlYw-Ew_t2pJ@M z_hhqx$SC%7fdRnwJcGZFN|qyC1dPOL4cO)G*#BSIJt>~g!p`Kw0mkl0t5*$^8FI8{ zH?7m{P(N4+Uk;1BdvaFKyQDv#b0?+dcQ*?f4fdN_JCOY(fheuYYkpaezT0_C^Sk@A zRd3>)mR;|{IcqVzw<2PsB7CbN7^XiiY)7(V-FH2QDU(AaNT zJJOm~Hq(B~qwl~u=h38mlsJN;X@#Pb%F$`r_DNB>$g`v-<)dh(m822RX^G4^;Pub5 z!~o(4pesNwU4U6SUTL8)OUEn8S`XN@C1|~oL%TW*96)OUeAkxwUOQ8GK{<`F8CZf- zc(b)5OqmqgXblSQ%?pWQ9`e>S>9%pa(q{#;I9`e9amI5leA$^ZKY(J3P!G?*nov*l zF#DqEb~;xHd!I{<v>l###=+cpo72>I2mx(&t{v$bJu{b?>pk(MR5RVho-MxCdDWB04KTZk)$3SOH#b zk^thD5O8=LJ$7SrY9ol>F#^bY;1hO10ND)RZZ?2iqKWw7766coKodDYE;=k$3*SM3 z{J)LRK|eLl!NvcqwpfW$JbE)->0f{bB*B z+8BYQwX{bcbeH zJNg~Ex^42m`r1+LNch$MR{-dI{m22(gT>mJz4TKv(#SLVQRlnvJf@wplaU4;bxTAL zNyIfgnJ#yJ8nzsu_YbHWA434orM~hP_NRQc&mNqSz2AE18xMWI>ZSGHTR&5=W>gth zlXW{&zFjlE$`8Gs8tAM&m4$a)9ZJ2y zdnnk8AWo!}V;2LztjonOaahR%Y4V*4D>2NEsNp*ZG&Hj><*Ug;Go!0-DDSDs{g0#q zr_vSbgnXJjDiK~u%E1xFgA|!0>z}k7hHy z&{*_{-ba|IBq9@Xa1O!$H9V-*@u#^srHU8Z`1zq2cjrhUWO2hU^Oeq8%mUkE0^>ZF zz6IKGW?oFG#u%FbKF~D_>m%3_W0a(Z&utALl=HPRpD%As0j^|Tz+HiQ&Qus9u(Wmt zb^*f1v*}KbXfdmxdw5k79Z_%@W+Ct@-eiTp#pFMRmk~!1=!-?-0qo}q@Bz%pk7x&p z8xlI_M|AnzLH76rvtyAx4qR^^4=2kujY@A6jTKFmwOns^ls$rejR%p@e7=l`lSXENlnTJ&`c{yBc9U|nYrwP&>#FQhu?hcgDT$0fYlIIKsdw*L4E3IO0gyeHm{HjMX+f_>Mu+jHEha2yyb<{K zzA`8DZpo#OypaR!y6_6dS7FTBnsn=Hr$?o$PrqFA!{85sQ)L@pJM9R%hL=&!70h#8 znpM%QvPA`LXOj)l@S(DesLj{UzQsY8WQ83m-x@*0U#Ogrs|<=wpxiokI$heDlv@du zu~bdbNu_mKwtZ4mF7hm?Nx2oxw30O9IW3X71j_g=IR9>vct=okB+_3NP-g4#>aozG z!f{?tzzw+|Jcmo*LK^V}jM!1fS4*Xi(6@T_yRbU6^58!{8vw4u?lUU@e!dQWmuM+| ze*Kz-Oa4*;;IMn!BD(yA^+-h`HrOx_xfB^NwDWV)RJ*|!=Q5whsT=2UP{$ze#euk% z65uVPz(FI&W(P~Vb(X`u*!}2~*2ZQ9&guzyg%vpOnV!se2kDyxcW$};Z4C9rrSr;W zu`D|y=FAWpNu;HGpbu_iWBvOT^?>K-q1#_$#vd|Xy05!M^2fF7SpD_$rE*-F~u$+w84*b zVeD{^%yqSc72jf@b78~GG)HheIa+8feAQ>m=P1mdHN6@X*_(6R-#JEOrZdsX(ee(OT=$LxoYbK$tn4eCaf(K z*r7{-;gsGgfJ3yQB>@T3u6Y4_!CeA-AqRG!4cHgH5Nra;y#n?k3ov~iz-}y+6!4`I z(=q*L3+yF2u#GzKR*XQ z#Rh)GUjkZN{5gYPiJ-NmYT4q@TG;HY0AOWZ#)|Z*m01NyMty2|?B$*!&U2Z&vp~Bn zvqj`D>%!`|ANxLWVCdt|S$M9>1-%Ef?wkh=_xKD>U+`MA?rgSlMx>$@;Ptz{aXtDCk4>^SE{Mi09i zp2}i>91$hqSHnqJb1-gf%!I!(bTgEI-?1R|%iWdzm|~sOphWWv){eU^h+oqD&!OK4 zV{8vvV>!EydhMW|PEu@;0tfDiSI=@57AJ<>;HcSzg}oyD+Wa!b83=p6SqPA+GItc))FMuR{5ArlSd8BsQG$U4$zmew zD6vX?aF#D8Q$B%!Rs#W`kcxQe=$ z@stC@shj74;WXCWG#T#@P*FYMr0W=%W;bJ7a?{N7a_wdaMXmbj;c@Bpu4GjkoSu>3 z*Ope=5xpkyAjb(>yYObFMJB10$b;iEBZUHVrj@|)SyItkB7RL04Mb#0-Z=-#DCa1H zc8uCIJ)Q=|C3bxSv>kVOW0_sfwYlpfJ&ug|;+ONzQPs;W?h0%ccMEqCW8TFPftWVT z25{Oy+idMD7z#nzXbsRVv^<$(D~nl8p8hRJAYV;^1XQ06+Fm-`-C_l2n&X&#IikCs z*{t9s=y427IHjAjDeM4VeVm)!A17NfZ884vL3+X z%?*#N6LZXt5HREbkan^(*STsy9vTcMF0cntnUt*Ym(aTgJzR}>?a@^0;dEnXvI^cW zj}!FJt}{g6tKmUP!RxPoZpz2`&J;5TMU&J@R7sgB6reM$ByDMl_?frw1W$L9c@ zj(M@cRwFXfwpjEk!jNo^6%6kzOsy%g`Y?G}7q>O{a$9rj3Wm?ZkU3Ja9H!R1iz5{> zsgyyxYyf7qc4VP*TZ8gh{XIFhve2_U{ag0I>W356If6l8p7hx!K+ z{n0qLQOK+c4PGJTTchTwzdsgjWD)JOi6W7eDb(}$Dl3i@h{vLtLP9|U{b%*TXx(s$ zJyUiOJ9vACu-ioc$+(FG;dadv93eJFx*d@*7Oow~Y`&^p^k!B;3? z6kMj@I~2S~0Wl|Rgn}^&{)U2gDEI{hzog)|6nsFz?LN-3G_&*`|&?8CG`>tcZcGdoa%k@pypD4d}t^9je$$xh#AIpW3`(qb^->6RXl?)W{@t~9BOCSdkj;tSykbBr4l}$M2R}ZXsyAQ(7&x z+-Y`8`)t*lq~M)C$s;|8rXFekt#Yqaa;w}e9h0cl9tyg6^e_+UW`)xJJ5?TO%dKL! zbP#D-YP(Y^V+08H-zt@GLzHOsDU_w^TcsG`tzrqAi*NZP=^=z3Y0qs`J0S6y`M(D( B Date: Thu, 30 Apr 2026 13:09:38 -0700 Subject: [PATCH 3/3] chore: gitignore Python build artifacts and untrack accidentally-committed caches The previous commit (87a4cfc) used `git add -A` and pulled in __pycache__/ and *.egg-info/ files because .gitignore didn't exclude them. Untrack those, and extend .gitignore so future `git add -A` is safe. This is a no-op for production code; only repo hygiene. --- .gitignore | 9 + .../__pycache__/__init__.cpython-313.pyc | Bin 2439 -> 0 bytes .../__pycache__/__main__.cpython-313.pyc | Bin 12545 -> 0 bytes .../__pycache__/a2a_server.cpython-313.pyc | Bin 11030 -> 0 bytes .../__pycache__/client.cpython-313.pyc | Bin 52208 -> 0 bytes .../__pycache__/inbound.cpython-313.pyc | Bin 14535 -> 0 bytes molecule_ai_sdk.egg-info/PKG-INFO | 159 ------------------ molecule_ai_sdk.egg-info/SOURCES.txt | 30 ---- molecule_ai_sdk.egg-info/dependency_links.txt | 1 - molecule_ai_sdk.egg-info/requires.txt | 5 - molecule_ai_sdk.egg-info/top_level.txt | 2 - .../__pycache__/__init__.cpython-313.pyc | Bin 2458 -> 0 bytes .../__pycache__/__main__.cpython-313.pyc | Bin 6264 -> 0 bytes .../__pycache__/builtins.cpython-313.pyc | Bin 12801 -> 0 bytes .../__pycache__/channel.cpython-313.pyc | Bin 4868 -> 0 bytes .../__pycache__/manifest.cpython-313.pyc | Bin 13835 -> 0 bytes .../__pycache__/org.cpython-313.pyc | Bin 8859 -> 0 bytes .../__pycache__/protocol.cpython-313.pyc | Bin 3544 -> 0 bytes .../__pycache__/workspace.cpython-313.pyc | Bin 4598 -> 0 bytes .../conftest.cpython-313-pytest-9.0.2.pyc | Bin 4648 -> 0 bytes ...st_a2a_server.cpython-313-pytest-9.0.2.pyc | Bin 18501 -> 0 bytes ...l_peer_errors.cpython-313-pytest-9.0.2.pyc | Bin 30147 -> 0 bytes ...t_cli_connect.cpython-313-pytest-9.0.2.pyc | Bin 9256 -> 0 bytes .../test_inbound.cpython-313-pytest-9.0.2.pyc | Bin 69718 -> 0 bytes ..._remote_agent.cpython-313-pytest-9.0.2.pyc | Bin 132083 -> 0 bytes ...retry_backoff.cpython-313-pytest-9.0.2.pyc | Bin 44160 -> 0 bytes ..._safe_extract.cpython-313-pytest-9.0.2.pyc | Bin 50796 -> 0 bytes .../test_sdk.cpython-313-pytest-9.0.2.pyc | Bin 74807 -> 0 bytes ..._verification.cpython-313-pytest-9.0.2.pyc | Bin 40149 -> 0 bytes ...st_validators.cpython-313-pytest-9.0.2.pyc | Bin 50515 -> 0 bytes 30 files changed, 9 insertions(+), 197 deletions(-) delete mode 100644 molecule_agent/__pycache__/__init__.cpython-313.pyc delete mode 100644 molecule_agent/__pycache__/__main__.cpython-313.pyc delete mode 100644 molecule_agent/__pycache__/a2a_server.cpython-313.pyc delete mode 100644 molecule_agent/__pycache__/client.cpython-313.pyc delete mode 100644 molecule_agent/__pycache__/inbound.cpython-313.pyc delete mode 100644 molecule_ai_sdk.egg-info/PKG-INFO delete mode 100644 molecule_ai_sdk.egg-info/SOURCES.txt delete mode 100644 molecule_ai_sdk.egg-info/dependency_links.txt delete mode 100644 molecule_ai_sdk.egg-info/requires.txt delete mode 100644 molecule_ai_sdk.egg-info/top_level.txt delete mode 100644 molecule_plugin/__pycache__/__init__.cpython-313.pyc delete mode 100644 molecule_plugin/__pycache__/__main__.cpython-313.pyc delete mode 100644 molecule_plugin/__pycache__/builtins.cpython-313.pyc delete mode 100644 molecule_plugin/__pycache__/channel.cpython-313.pyc delete mode 100644 molecule_plugin/__pycache__/manifest.cpython-313.pyc delete mode 100644 molecule_plugin/__pycache__/org.cpython-313.pyc delete mode 100644 molecule_plugin/__pycache__/protocol.cpython-313.pyc delete mode 100644 molecule_plugin/__pycache__/workspace.cpython-313.pyc delete mode 100644 tests/__pycache__/conftest.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_a2a_server.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_call_peer_errors.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_cli_connect.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_inbound.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_remote_agent.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_retry_backoff.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_safe_extract.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_sdk.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_sha256_verification.cpython-313-pytest-9.0.2.pyc delete mode 100644 tests/__pycache__/test_validators.cpython-313-pytest-9.0.2.pyc diff --git a/.gitignore b/.gitignore index 2af45b5..8a0fcf1 100644 --- a/.gitignore +++ b/.gitignore @@ -19,3 +19,12 @@ # Workspace auth tokens .auth-token .auth_token + +# Python build artifacts — never commit; regenerated by interpreter / pip. +__pycache__/ +*.py[cod] +*.egg-info/ +.pytest_cache/ +.ruff_cache/ +build/ +dist/ diff --git a/molecule_agent/__pycache__/__init__.cpython-313.pyc b/molecule_agent/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index 3ddc6c2d826f1c62acc8bac8f61fedecb8589533..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2439 zcmZuzTW=dx5MDbsXPs+rNC=^W`#>CQuM?8AL`_lD6g8W)ggVd%gx1Hqq)`}cG4$FyPm zsUL<{ad1;OKckypjh2B%tI#U$73?Awnb8_+jqi=w<2at(PwY+DlQ?Nl;gns%l0A*n z+4|(3X_v8V&)|$bi?j9|&e`)gZ!h42y@-qU6}*!9P3>K^ui-UjSVpV#MFFq3rt!v+ zSuH2GCJp0Z*btI$$WL&bYK&k4k&!uGALB`w#*)Yw+o{)@wI?6$hOJE;2 z8@HJo1u+jr6fzaDc00%+ImvEDwBI&ALTtu@k}Htmw+Kr$19+*V%)^!vm^rsF1sg>c1N*2tDvvA}OKGP19s_ zWxz*8AFx3LafFIJ&KR<-33AUDWCuIk?4E7C{eCHnsH2W*>j-bFvcBGg+iT5c9acZ- z)Yn$LwK~7GvQb}K+t^rNU!yn8W~DaTJfxVDpubh=DHY32%c6#2efX*YXFP~~Xb^iY z?abgiE=Oux3q?ccR^TXiWYIgb{wZ@RnOI4lA(9TW? zP*o_bB==lo27;0gFXia+kU`L)#NEbz{*r}it5~ZQK z`XJgM2&6`JsH;v9-5!M_5%GjPCV-?|?e>pWW5{gl&Sgs8wHmr*PS&z^n;_{ESaYM< z)Qt^HQL=b!Nh{otspQbjszmCRJL;B4 z)VhK9X^-$nA!unN{9WM#$(v5?ARGI9-Um{kWs>}Ki>VIv4ymX|*>=FyzHgLUQgaeg zi2k791QpKWh@7bSBJ5=3c>0G|>5TsVPbT)r( zk#e|@&gJV5NLhWrbmoAnINCgOkjUQfiE_QJze|aN|G=Ba3CbI%v?*yrUsVHVwVBgq zMwO1L_<9LzlIH~D4-9#k_ zj)P-*gUMGp$%rm=1|gjs=*s}W1)ePWRNmlAM`yq;aAv?pIMb5j1Y8i745EfX%%P{N zbo6h=Iawp!v0@Y_)HzE9u|>*K*CS;OC#$9H$ZY)6$(F^5`$f zU3{N{Y7)s$$-EdV6bk@RdJ$FJU7U^nwchJkU7`p<-10q_V4&Y Tx%hPIMa7uE@lzS!qZqFNFQx?y diff --git a/molecule_agent/__pycache__/__main__.cpython-313.pyc b/molecule_agent/__pycache__/__main__.cpython-313.pyc deleted file mode 100644 index 2f958131af59181427991360c60f2b4679188764..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12545 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 mj(a>OJd5?+4Dnt^Db~Eu_uUZR+y4TqA~GNV diff --git a/molecule_agent/__pycache__/client.cpython-313.pyc b/molecule_agent/__pycache__/client.cpython-313.pyc deleted file mode 100644 index 2622dade1218b8c3983bb8a9295080fd2a2b1014..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52208 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 diff --git a/molecule_ai_sdk.egg-info/PKG-INFO b/molecule_ai_sdk.egg-info/PKG-INFO deleted file mode 100644 index 55501cb..0000000 --- a/molecule_ai_sdk.egg-info/PKG-INFO +++ /dev/null @@ -1,159 +0,0 @@ -Metadata-Version: 2.4 -Name: molecule-ai-sdk -Version: 0.2.0 -Summary: Molecule AI SDK — build plugins (molecule_plugin) AND remote agents that join a Molecule AI org from another machine (molecule_agent). -Author: Molecule AI -License: MIT -Project-URL: Homepage, https://github.com/Molecule-AI/molecule-sdk-python -Project-URL: Repository, https://github.com/Molecule-AI/molecule-sdk-python -Project-URL: Documentation, https://github.com/Molecule-AI/molecule-sdk-python#readme -Keywords: agents,ai,multi-agent,a2a,plugins,saas,remote-agent -Classifier: Development Status :: 4 - Beta -Classifier: Intended Audience :: Developers -Classifier: License :: OSI Approved :: MIT License -Classifier: Programming Language :: Python :: 3 -Classifier: Programming Language :: Python :: 3.11 -Classifier: Programming Language :: Python :: 3.12 -Classifier: Programming Language :: Python :: 3.13 -Requires-Python: >=3.11 -Description-Content-Type: text/markdown -Requires-Dist: pyyaml>=6.0 -Requires-Dist: requests>=2.31 -Provides-Extra: test -Requires-Dist: pytest-asyncio>=0.24; extra == "test" - -# molecule_plugin — Python SDK for building Molecule AI plugins - -A Molecule AI plugin is a directory that bundles rules, skills, and per-runtime -install adaptors. Any plugin that conforms to this contract is installable -on any Molecule AI workspace whose runtime the plugin supports. - -## Quick start - -Copy `template/` to a new directory and edit: - -``` -my-plugin/ -├── plugin.yaml # name, version, runtimes, description -├── rules/my-rule.md # optional — appended to CLAUDE.md at install -├── skills/my-skill/ -│ ├── SKILL.md # instructions injected into the system prompt -│ └── tools/do_thing.py # optional LangChain @tool functions -└── adapters/ - ├── claude_code.py # one-liner: `from molecule_plugin import AgentskillsAdaptor as Adaptor` - └── deepagents.py # same -``` - -Validate: - -```python -from molecule_plugin import validate_manifest -errors = validate_manifest("my-plugin/plugin.yaml") -assert not errors, errors -``` - -## CLI - -The SDK ships a CLI for validating Molecule AI artifacts before publishing: - -```bash -python -m molecule_plugin validate plugin my-plugin/ -python -m molecule_plugin validate workspace workspace-configs-templates/claude-code-default/ -python -m molecule_plugin validate org org-templates/molecule-dev/ -python -m molecule_plugin validate channel channels.yaml -python -m molecule_plugin validate my-plugin/ # kind defaults to 'plugin' -``` - -Exit code is 0 when valid, 1 when any errors are found — suitable for CI. -Add `-q` / `--quiet` to suppress success lines and emit only errors. - -Programmatic equivalents: - -```python -from molecule_plugin import ( - validate_plugin, - validate_workspace_template, - validate_org_template, - validate_channel_file, - validate_channel_config, -) -``` - -## Per-runtime adaptors — when to write a custom one - -The default `AgentskillsAdaptor` handles the common shape: rules go into -the runtime's memory file (CLAUDE.md), skill dirs go into `/configs/skills/`. -That covers most plugins. - -Write a custom adaptor when you need to: - -- **Register runtime tools dynamically** — call `ctx.register_tool(name, fn)`. -- **Register DeepAgents sub-agents** — call `ctx.register_subagent(name, spec)`. -- **Write to a non-standard memory file** — call `ctx.append_to_memory(filename, content)`. - -Minimum custom adaptor: - -```python -# adapters/deepagents.py -from molecule_plugin import InstallContext, InstallResult - -class Adaptor: - def __init__(self, plugin_name: str, runtime: str): - self.plugin_name, self.runtime = plugin_name, runtime - - async def install(self, ctx: InstallContext) -> InstallResult: - ctx.register_subagent("my-agent", {"prompt": "...", "tools": [...]}) - return InstallResult(plugin_name=self.plugin_name, runtime=self.runtime, source="plugin") - - async def uninstall(self, ctx: InstallContext) -> None: - pass -``` - -## Resolution order (understood by the platform) - -For `(plugin_name, runtime)`: - -1. **Platform registry** — `workspace-template/plugins_registry//.py` - (curated; set by the Molecule AI team for quality-assured plugins). -2. **Plugin-shipped** — `/adapters/.py` (what this SDK helps you build). -3. **Raw-drop fallback** — copies plugin files into `/configs/plugins//` - and surfaces a warning; no tools are wired. - -You generally ship for path #2. If your plugin becomes popular enough to be -promoted to "default," the Molecule AI team PRs a copy of your adaptor into -the platform registry (path #1) so it survives upstream breakage. - -## Testing locally - -The SDK ships `AgentskillsAdaptor` as a standalone, unit-testable class: - -```python -import asyncio -from pathlib import Path -from molecule_plugin import AgentskillsAdaptor, InstallContext - -ctx = InstallContext( - configs_dir=Path("/tmp/configs"), - workspace_id="local", - runtime="claude_code", - plugin_root=Path("./my-plugin"), -) -asyncio.run(AgentskillsAdaptor("my-plugin", "claude_code").install(ctx)) -# check /tmp/configs/CLAUDE.md, /tmp/configs/skills/ -``` - -## Publishing - -A plugin is just a directory. Push it to any Git host. Installation via -`POST /plugins/install {git_url}` is on the roadmap — see the platform's -`PLAN.md` under "Install-from-GitHub-URL flow." Until then, plugins are -bundled into the platform by dropping them into `plugins/` at deploy time. - -## Supported runtimes - -As of 2026-Q2: `claude_code`, `deepagents`, `langgraph`, `crewai`, `autogen`, -`openclaw`. See the live list with: - -```bash -curl $PLATFORM_URL/plugins -``` diff --git a/molecule_ai_sdk.egg-info/SOURCES.txt b/molecule_ai_sdk.egg-info/SOURCES.txt deleted file mode 100644 index 1960a58..0000000 --- a/molecule_ai_sdk.egg-info/SOURCES.txt +++ /dev/null @@ -1,30 +0,0 @@ -README.md -pyproject.toml -molecule_agent/__init__.py -molecule_agent/__main__.py -molecule_agent/a2a_server.py -molecule_agent/client.py -molecule_agent/inbound.py -molecule_ai_sdk.egg-info/PKG-INFO -molecule_ai_sdk.egg-info/SOURCES.txt -molecule_ai_sdk.egg-info/dependency_links.txt -molecule_ai_sdk.egg-info/requires.txt -molecule_ai_sdk.egg-info/top_level.txt -molecule_plugin/__init__.py -molecule_plugin/__main__.py -molecule_plugin/builtins.py -molecule_plugin/channel.py -molecule_plugin/manifest.py -molecule_plugin/org.py -molecule_plugin/protocol.py -molecule_plugin/workspace.py -tests/test_a2a_server.py -tests/test_call_peer_errors.py -tests/test_cli_connect.py -tests/test_inbound.py -tests/test_remote_agent.py -tests/test_retry_backoff.py -tests/test_safe_extract.py -tests/test_sdk.py -tests/test_sha256_verification.py -tests/test_validators.py \ No newline at end of file diff --git a/molecule_ai_sdk.egg-info/dependency_links.txt b/molecule_ai_sdk.egg-info/dependency_links.txt deleted file mode 100644 index 8b13789..0000000 --- a/molecule_ai_sdk.egg-info/dependency_links.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/molecule_ai_sdk.egg-info/requires.txt b/molecule_ai_sdk.egg-info/requires.txt deleted file mode 100644 index 2bace8a..0000000 --- a/molecule_ai_sdk.egg-info/requires.txt +++ /dev/null @@ -1,5 +0,0 @@ -pyyaml>=6.0 -requests>=2.31 - -[test] -pytest-asyncio>=0.24 diff --git a/molecule_ai_sdk.egg-info/top_level.txt b/molecule_ai_sdk.egg-info/top_level.txt deleted file mode 100644 index a1a75a3..0000000 --- a/molecule_ai_sdk.egg-info/top_level.txt +++ /dev/null @@ -1,2 +0,0 @@ -molecule_agent -molecule_plugin diff --git a/molecule_plugin/__pycache__/__init__.cpython-313.pyc b/molecule_plugin/__pycache__/__init__.cpython-313.pyc deleted file mode 100644 index 68f12ca4f2e8cf6a954a8618659477f69fb1590c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2458 zcmZuyNpssa6sF`&rYw0$yv142}6gPfIzytN36))FjP%dl*%z>0MXZt1&osP8u1wpL+P?=$r^YaQ0D4cM?Y zVN=WI>vyaz*wSmWe%HDO_pJMH-+BNKP?iN!Hd+hcr{J^GTp{28d)hD>++&@-$4F(D zgkJyD4M?k6CvV?ekXL=za}uE-ZXl%XdG;&3%L8Hu12XycXAWl~v^%V1nw6m@R}h;x zF0hW|Fd!WsNZSqE;1tE}c5JRRuzj!HCcYiGT_z-IcF+JC0pfFDX2_rj{Xn`tBer9Q zs7jE2;4nZPTEIY*pCwnGm%>52T_Q(4cFn)gvt^fqZvqqCJ7?$_+DU>EMB;UDPkU%S zHbHDjMllf#9b`Ym*p7M_lwydz4!K}r+cZBX+a1pqV!M5)39Q5#+L}bA_z<|{9qti! z&X9(o1;3Bc3R}9OJ19+P*^QarLAKay+5U2*J~?PI(f4Gm-m#@kv~`RqL?@U-BsU3C zlf?F6IV`}temnyiZj>q#5M0Rd%(jY7RAtM2i^)_x7KDe=<$>)Hz{(TkNrxjbIti%h+(ue_`zH>r91z|m9UFNr zXm?e(Nb}zDcf0%aq|(@K;MqU1ZD9LJQZbG<6J>brY;<7*d*ew{DX z82Y(#Wo#Sk1w*0AW$YF_dPLf~DEwp?(1Z!s4>?G3vpR?^$gof*3=EAs$W2@jv3@il zY;0d_>mt(6z%*a1gFC~ zEzCzNH>)mM(&W>fgT`S6uT_4G^0A~^Ywb+#_bZK>-sj?Ty>Hf{d}xDURA-X${q<_?Mdf%8J*YJfnkV$d?p{q80T9r1B_m6fPwN|wF!>B!K034#Nk%7?wq{FNr;j5!#4yWUTsc3zyeCK6lf4{az zk4_HJ!use%r-#{M9+qCvbx$W$4G+4m$9|c4TKcN=w6FmgOefq@Fr#2rf%+uFoPyg5 zvI_9yY(P#yUctPAO$Dn8))Xu%xT9c8!IFXv1M=4e* zrIAT#w~rH)Q3_M)W+qI=`h;`JuPCEFoD#=J?7#9R$_(=v`~QDlYY(+wW0!R7D$Zzr zl#7X=w8vAJ1|3Q?m#`SeJ`VP-Qh3e@ zDoN6JLs>Ew%9P^3l$2s~N110ncW_WWhXQI<{U=Tk-cO}csSoLUsp*f;jnt#7mFZOa zgMn~m8mX_Z(k8A9gpUfY){N9QSLxxEk9g(rc>8|ASX_IP{damZoBnkU9;5dE0Om0V A`v3p{ diff --git a/molecule_plugin/__pycache__/__main__.cpython-313.pyc b/molecule_plugin/__pycache__/__main__.cpython-313.pyc deleted file mode 100644 index b07732792f8b948cc0bbaffdada2e7300db957bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6264 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 P)Kn6hmU$#JvXT7b;U}NH%ra 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 diff --git a/molecule_plugin/__pycache__/channel.cpython-313.pyc b/molecule_plugin/__pycache__/channel.cpython-313.pyc deleted file mode 100644 index d5905e49b0ea4aea17b157a343bc0c0965477532..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4868 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 K+q*8qp#K635rHWH diff --git a/molecule_plugin/__pycache__/manifest.cpython-313.pyc b/molecule_plugin/__pycache__/manifest.cpython-313.pyc deleted file mode 100644 index 79f2dc91a890c9123e608291f3823023dcb5eb24..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13835 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 diff --git a/molecule_plugin/__pycache__/org.cpython-313.pyc b/molecule_plugin/__pycache__/org.cpython-313.pyc deleted file mode 100644 index 07722178d9b570aecf190f7196d9107aa9fc9122..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8859 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 PgIq1Lqvg9+Rj~gD-W8Q> diff --git a/molecule_plugin/__pycache__/protocol.cpython-313.pyc b/molecule_plugin/__pycache__/protocol.cpython-313.pyc deleted file mode 100644 index b1ce56098b62f7df6b7bd6526914c960778cc440..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3544 zcmb7H&2QYs6(4fB+;4qYlBLQ`M98+}t?gB6TlugoL#ia#`iv{uNeauLsNLBWD=xVm za-*!!gHRumLk~X0K#n~X^(`oR$f1Y+0X;}nkxBy;QJRx(5;jH9Ti+XUm0dY4QUd$< z=KY5A9_Rhu8*V+5NfNj|{zKgwND=ZC4jPvlC{q28pgbo!VMLd7d0v{6nXI86nUAmt z+?9D{F3O^FDpQ3$Iv<;hv$)XJ`NUk3CFfEsHJ4`TxeUvIJ;vJfIBQ>t_K`uNC;Ew= z9F+rqqoIG+5uzzT(=VZ&D;e=@2GF*Z^l0SF)8|T&Yq1XRhw#_3qxu_0Ae|f(TWQXxX!SzIg}PO z-%VDkwvFMyM6HPW%h6~M+lE=9Ic?I{Sk>{ZG8OYN)}qVG!=C1DI?2`5vth5UYPM?@ zJTco0c4JHo{7qL|U7dA2-?Z&1*YW8GKFs#k%?kB2lhGu+b~W!;8Q?X|Do}8nH|_A9 zvgr%cCjebcvG$6LzEJW()xGjGEz9xYnbF2Ee+f$6Vj z6&{&%YCJv#e#|wS@_1uu-Wk5DA$%aXm6%$Xd^A0iD;K!xZCJML8_!Kqv>Iv!5fG(H2hWWA3?=9eoYUSZ=p`W`8}HqArPTt`c#2DRm!+KeEK<|5?r zJGNO~E0}kAZ|f%I8o)L1=V3V8!3U*k3k04ax;xW+aP%ymNFruNG-T75wW+~2#?ur z3A%HMCrZ>`0G%=(Hw+}2VTipK!JgUdaahA^2eD25^v2)E7XCW6@R#@gHujE~`$FRF zAv27knTJE8w$&E8$%QUd98)G7EM?o+k6o9x8wO7s#xJX;9mK)g4X706`L^Xy z#|1cM7zH;E3Ls7G5e&W4GxsJREj%<9XBOXH{<(2)c41~|a&d-rg9{c#F@Rza#Sn_? zAb5{qU<SbUaaXg0N4hpOgb_)geucjKpl4U3+;O9L6@gX_v?A}wl_XTIt?N8?q1}=U2aChML z_Tsa*_LSQPgTtRGyMyD9=x5fRGJY_0^|R^Sp~)Sk@00AFGI`KH@Ts!fKe~PYBkOZz zG;oG4T9OS7123t57v%R!c0!N#lV2z-swZ_-XexYi#!B&Qif3Am#-n*yQ>2GsqZ4Uq zX`Mz)jh} z=ZK^?18fmd1<%E7{J(ST9xf#I_q*scfhY=`;i2;uI(@B3(eyVeh=3J1Guy>}3^#1I z#VSOGjULItuAnt_`gKV?h7BShd8`5-n6|YReDtV(tpXLoVu<6`vjhtK7sT)&<{5o{ zc40v`^hZCLo?RCEAl_eudZr}c^CM{cciBUD7LO?JS0Iifk|dqTs-*m@gGd*@B5hxg zEB_#UUy$)VGJYH<7lw97?|w($cIH?ma_Sp-NP15?CMfF>FdPSlWl4ZB>Gfj*B7|_* YP2{ex<+zl7cE3*GhEUfD8pLk>2edDBsQ>@~ diff --git a/molecule_plugin/__pycache__/workspace.cpython-313.pyc b/molecule_plugin/__pycache__/workspace.cpython-313.pyc deleted file mode 100644 index 8ff4ce1582d3cf261eff2a0e354c97821d03bd04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4598 zcmcInOKcm*8J^`XU%MnNQ4(#-ku-kD4jqY#6Td3S0{lu7$x{7OfqEHZ^u@8lv!a*Fs2NwuX7s$crr8(qMGzT{U3KBFbV&N8TgC2ZSA{Q;vOaEDN zDf$Hz0=fXXGqeBv^Ue4FGxN=QI4mM~uK#9TrCSjChE?3hTQ6|ym!R+wN+ODqT+%ba zjeDpEvob%yj|)_A%EE+q+(&&***oE<{+YlobO0rNi`*fu?uiCxgl%XSO8UD|GH}RK zZ#`6hAu1-NWUw1u5U4bSlHwa24b6MwA!P>`o>w$At5^obIrv>P=%QIrGGs7g=s9)X z9JENjpeYtHhemZJPsWDo9}>$-UQ3ALalC(jvlDiW_wUE5i4~kxDanBEWo#`F%>2M0 zd7Lo{DlxIDTLu{EZ(6OcFNdmuSfe+nMR2@dK za9-8bd@+v|adx%^-s~*Sl8mNMRiAeNDDynzoE*XHT9vo;r0pkUb~@7&MXr6mmf;&Z~M8%*Nn&6rwgZ zJDU(6u>6U0wxsB~VJVCR6RJT-7X@fFSw%RjSPN5Qez3HC8A>iHs_h4$22gDWi~`ZY z@}eEo6n%c4Duo4G%o0*?B4OGRd@N>(oPjue->5+5LDU+l>%91Sg5R{QrHJyos!on!IGKx#{>43Mur3W(~PbMd%&(Vm;{<27!bHQjpQNu zix7Jtq$Lc^bWYg3X;E9qsT#5Ud19J?|JP_L?zaQ7%$9{L+oCMj0}SPmEWcY+w8ob$ zvYb41>C4L#qeXZIqM z;-(u>Z8SQsbYo*gD9sYec~TyClS_J<8(U)(41V^YUX%{F*3-_W>(=V;T?lZ6A8lhb z7nke*7}rDy`yxg!BArjSyZuspI_j2P98LSp&dBR}axv6rl=O9=SBHU7?_0?cm}?f; zed`b-#~o1tgp-gJo8r-*@Px6+OQv3*XQVzn{d{Sa;B|{FH7dD9|?D}Dt zp2pWRc#614b$`k~2cTNA$p3%HqAgFd!Pdq9HmdSlV8{Q|c()B9*Rvi-1?GP6$V>w1 zZZ}4*m75b;*i<%^neDD8mqGk2Y*E)j52k{1sYj3n)6coc(!Fl!U^CyFC}D+d3S~!n zr|UHpba71Ya@#iE&&V2x&Cb?6i|xgaJ$|IT4C`Om6h1yBJZogr(}$9RE*uy3G~PKb zhmP@mD96P+ixq&;I4(hVZD@k02oexA)5I!LroeOzBGFpLpgt^oae;tL17+iiK_&$+ z5=|Rq+K*%t__V^L3!J(juS7U@!6LXBJ3i(do=|EOS|xO9`@zmzE`X?wdu)N7@3z08CQI8~&kgkm>PsbBb{Nw>ptTfe*c~gfy%n>` zxQ-2-DZpWD3zkY~oPWUf*$1%2qX+DiEcLMFruBgV{L%o1NxnRS=M4+nk%niGQB1R! zTz%W9H#e%g&3sDBOTN-(^f1>r{M(28DK&V0&kc||x*_*bXDQTl`Wr9b_?Z zgq$tHl|To%q-TgNWYvsi^Yg^Aqsi3Sv#(E|JAF!?PEDPAZSr)|_L&B?NY)luhS)sZ zJZx_cTw6f-a)HoJ7&b22LIKn)0CQwDs8feex!zc>*gUzEfxaxVPF!sd&Cq`6PC*19 zlj#rKd??$9>>aM+mzxp{=2E{_(PLl%2NW{jhj_1`wFv6pxAMwgqp=%3mFV7;iJBB! zm3k^t&#Kf{k@{+Z$kp(b@O9(U%e7PF7=6_X4liwsc(%uL*)TcE7#rEFLYWH z(Uz{O7p`2mvAr7Ez4F7q_#@Yj+}m}q+HtTk$r0R16 zj`@HZU=j&_rMX+@8H!je_tjsi*?W=F)r7pJA(vMxf z-ie3lHf9C4rCbq?54br|w#V60^HxbrDzFwmTX&i|=eVVD))a*MY>DV5v8Xe+bBkds zh+V1RWN2KK>US4s?FB~bm$ET>3e4EPYEHx78qaauw;qWT{<#ftyZ?c9{uyoi21(zF zDAxC#C*bw1^J2_XM$xry}!ijr;l+p+V(DNbT8mhCl3*EmgMFH0KOjggr)V8AYDMxrgoG^Jcp zNvt%0hYd@MwP*)4TV6KgF?m|Hm-S&kU~jXRbIY@#u7v^6V{4 zi7wElVpOWn#AzI6_-T16K@*H7Oed#WXbZ!|>DH+>+E(XH(G>8;rrW1FXoo`jNSbI; zKhfgHB7qFFb15}D6bknIt+i@$Ke@yotCMK=YxvrU5%=#(r;m_ z3mcy4ddiA*%_~vURSYMmc*<+cnUJRBeFbc+dI}!Q&}lF zSiuNd3fXqQkR!U(C`^RNg8?X%`Oh%t#5IBi=1vvnP^S2P%KwK+g;ktISouzy73XjF?(elH3BG%3WM zzqPo=qpmM;RM2EiK%9zNLK7Jl)4)eS(@8&h)>t!VO}7Z*nooM+pz`7KmSe3Ow&HrA z^Ni&%buTZYVwjRccDVLTRtSV-5FG`C=4$5vxkVOIc4KluvAJ-tFlN_XijaB!Bp3Qr z4yXzlBlEl;H)rv7dL!K*Fi&`uKV3PwKo!y`|+%O05(armFzzBSE;Ykz4v3e($)8Iywbb( zS2ymYKjc42)_{d%8)|_8;!J_K#Vt_8EWBTQ1_^~M0lr3CgI7DeTwJQqPJlkowA0=s z8V_mA1}L%O91uq+PTJ2u(s@%3(s}0ePJe8aMt&LX0#aT0|q$oWsp?vpanO z*5ac@Uww&IawKxBesz;uB`QB-eFkHSo>3N9%&F19mQv_>ejMp%C@oMmLh;&k0Dy~Y zl=|gU)UaGrhfvl7m+|*BDdNRx6*u@k08mPz?O|eIJ27zEeUM21BRNp%=zrKTxZN>$ zr*wDjVdms^=H%A!J6i`%J?NO&N={S-lHAYqr}E4e%*&X}%;{AA$)8~38K2Cka&VQX z<#@CMh!l0jxcsQ=QMR(&owKsuA`FKi_UQY{2auf{(-)};DG>Y}M{x1|;re@Zd=Lm~ z9R1QU)=ltBS=ZMKIZTeapValsCBv@IwCVbaMP1Lf9MdVlbWGQCg{-dAF5I;b!5#p9 zx6bruWp%^zsCBUf-mmNT2)i%yGa5%`1ei8l4ZzRH-}z%ziR|82*|n$A)l*S3)r2e@ zc--Ar72sVJNmp+*hL}X!I;wHRWYTenaaEH;gX zqww!ygl&??iO#K_;qAom7C-!Qyhy;qM8Ore$YR~A2?-0L!!5#m@IZ-;Xi<$HjFUyRJl}kvLNz8a|(a4&*mGhI~0=-0SUuH~t)}T2*-cXAltBU|WD8hAU z3;^J$E&3*ara%<4tfEnjt>ZX}`rjnqh@`FW=WCnqewEl==}uR=4_CVSZ@;(Isa87n zRZ_iA6Jk=V5>XHXO~azbQ`aI_`v6GI1@QpnAUlD0{oOv8!BZ@~C-c?uONV;8be zL#erHK`d`5g_WR@aJ|ySpn)m5rUJzkGJ?5ES;Nq1VrJPY6T6Ur-+)F2e3&&Lu%1Z6xzPr#fnF!f-gn6=#&p78L|*7vI65yJ6~c1;lIWsQESgSE73n*$ zwJ!#);q&Mjz8F+tR^WUdE$O0EXtA(l^Qd3H>%}V~bs1P)tVhsFb&z;6xZ|#EY1i#H z@AiB#xYd8^OKBpw>`rZCPKI*8)qV-c&YTRE!qV}=6JD*8oKpxXL2WLcDXu!w!sPe@ zA=sCmhf1(8ir+;JX1zXsu8g)E}F*`r0~xmN6hBGB{j;YlV3 z9S<}(tQTl>sO99&81p#=I$!91u0VTh=9r(bdg~{52BsQkdZ#~t;j$S3o8(_ZWA{7%(Eq#szYV>; zogDmd^0R|?_)1&qlk2xH|N7cjz5DN+y?^lwZ@YK)FR9t50#Q$5!XLQ3bob!hzWeR> zkK8}7HSpGh*5g~!ab`AFmS^Yz*j-JsJJ2-X^fUs7q5Ska2(XDSw>C#9yHmipA9)4= zsM3y&-a{(e=saR*wV;DSJ;0IJ6;mu1bO?cp;JXM|SVF(F98t{b>Gi%ohK znSX@fFaj)d!OgH4r&#(J!200+0>Dl3G?Emg>TYsslG{AHl|1o)pLi^!Y7tHts6~m` zUPTOgCB!7?fgYzis{$fGgRUvYP>Hm6RpShW4oaye7@9(7s2Lb0ujOgvxo zHi}T$m_hxPrtfjqo%mv~-fs=N!Qhty*0ls-6s!NZ5L^!%mB3uhCiJDZgJ$|2ngtf9 z@WjQ4s75)Cdm7<6{#%)F`~OSGPsvXbk4WDm(({Py|C+S?n+!iob#s&4Q-ZKMP9oCH my+7UymgX{`|40ff&1Ik$4(V}DtkVH|mOj9Z|BnD*7WzLG`%sMl diff --git a/tests/__pycache__/test_a2a_server.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_a2a_server.cpython-313-pytest-9.0.2.pyc deleted file mode 100644 index 0d31601547174b403133188613394e2eafa09535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18501 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 I#>V~s0drL5UH||9 diff --git a/tests/__pycache__/test_cli_connect.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_cli_connect.cpython-313-pytest-9.0.2.pyc deleted file mode 100644 index 23f9da1618f64de30678bda9c24e0060c7134ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9256 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 diff --git a/tests/__pycache__/test_inbound.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_inbound.cpython-313-pytest-9.0.2.pyc deleted file mode 100644 index 0d7d77acd85bf0bb2e0ec95c115cd0fe86a922ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 69718 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 h+{!tc9i8t90JrwHI=bmG-M1dtgu3R?gG diff --git a/tests/__pycache__/test_safe_extract.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_safe_extract.cpython-313-pytest-9.0.2.pyc deleted file mode 100644 index afac67f4aa2cd640ea5e31ea2c518a84886a4797..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 50796 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 K!A2o#^8XL*W_VEm diff --git a/tests/__pycache__/test_sdk.cpython-313-pytest-9.0.2.pyc b/tests/__pycache__/test_sdk.cpython-313-pytest-9.0.2.pyc deleted file mode 100644 index ee540f7a0cb3bf57a6951c51cda627242c88b82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74807 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 B