molecule-ai-workspace-runtime/molecule_runtime
Hongming Wang 4aa0d9f110 fix(adapter-loader): fall back to any BaseAdapter subclass
ADAPTER_MODULE resolution required the imported module to export a
class literally named `Adapter`. The claude-code, langgraph, and
openclaw adapter-template repos (3 of 4 currently in production) don't
ship that alias — they export ClaudeCodeAdapter / LangGraphAdapter /
OpenClawAdapter directly. Only hermes has the `Adapter = HermesAdapter`
shim at the bottom of adapter.py.

Consequence in prod: every fresh claude-code / langgraph / openclaw
workspace crashed at runtime startup with
"module 'adapter' has no attribute 'Adapter'", even with a2a-sdk
correctly pinned <1.0. Provisioning looked successful from CP's side
(EC2 ran) but the agent never registered because the process never
reached A2A bootstrap.

Fix: if `Adapter` is absent from the imported module, scan the module
for any attribute that is a proper BaseAdapter subclass (excluding
BaseAdapter itself — regression guard in tests). The explicit alias
remains the preferred contract; this is purely additive tolerance.

Bump to 0.1.4 and publish to PyPI via the existing v* tag trigger.

6 new tests cover: explicit alias, subclass-fallback, non-adapter-noise
ignored, empty module → error, missing module → error, re-exported
BaseAdapter → not selected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-20 16:59:12 -07:00
..
adapters fix(adapter-loader): fall back to any BaseAdapter subclass 2026-04-20 16:59:12 -07:00
builtin_tools Merge pull request #28 from Molecule-AI/fix/908-add-namespace-param-commit-memory 2026-04-20 23:18:45 +00:00
plugins_registry fix(plugins_registry/builtins): strip API keys from plugin setup.sh env 2026-04-20 22:52:13 +00:00
policies feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
skill_loader feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
__init__.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
a2a_cli.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
a2a_client.py fix: MCP server path resolution + absolute imports (2nd half of #507) 2026-04-16 13:28:57 -07:00
a2a_executor.py fix: switch top-level from adapters import to absolute imports (#1) 2026-04-16 07:53:03 -07:00
a2a_mcp_server.py fix(builtin_tools/audit): fail-secure RBAC — read-only default when config unavailable 2026-04-20 22:47:38 +00:00
a2a_tools.py fix: MCP server path resolution + absolute imports (2nd half of #507) 2026-04-16 13:28:57 -07:00
agent.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
claude_sdk_executor.py fix: gate session resume on file existence (closes #488) 2026-04-16 11:12:03 -07:00
cli_executor.py fix(cli_executor + sandbox): CWE-78 auth helper + subprocess warning 2026-04-20 23:05:57 +00:00
config.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
consolidation.py fix: MCP server path resolution + absolute imports (2nd half of #507) 2026-04-16 13:28:57 -07:00
coordinator.py fix: switch top-level from adapters import to absolute imports (#1) 2026-04-16 07:53:03 -07:00
events.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
executor_helpers.py fix: MCP server path resolution + absolute imports (2nd half of #507) 2026-04-16 13:28:57 -07:00
heartbeat.py fix: MCP server path resolution + absolute imports (2nd half of #507) 2026-04-16 13:28:57 -07:00
initial_prompt.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
main.py fix(builtin_tools/audit): fail-secure RBAC — read-only default when config unavailable 2026-04-20 22:47:38 +00:00
molecule_ai_status.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
platform_auth.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
plugins.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
preflight.py fix: gate session resume on file existence (closes #488) 2026-04-16 11:12:03 -07:00
prompt.py fix: switch top-level from adapters import to absolute imports (#1) 2026-04-16 07:53:03 -07:00
transcript_auth.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00
watcher.py feat: initial release of molecule-ai-workspace-runtime 0.1.0 2026-04-16 04:26:06 -07:00