molecule-core/workspace
Molecule AI Core-BE 93b7d9a88a
All checks were successful
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 8s
sop-tier-check / tier-check (pull_request) Manual override — infra#241 duplicate runner fails immediately. PR only adds comment + tests to a2a_tools.py. core-qa APPROVED.
audit-force-merge / audit (pull_request) Successful in 2s
fix(a2a_tools): add comment + test coverage for string-form error handling in delegate_task
Staging branch bea89ce4 introduced duplicate dead code after a `return`
in the delegate_task error-handling block — the first occurrence was the
correct fix (adding isinstance(err, str)), but the second occurrence (now
unreachable) made the block fragile. Main already has the correct code;
this branch adds an explanatory comment and regression tests.

The non-tool delegate_task() in a2a_tools.py uses httpx.AsyncClient
directly (not send_a2a_message) and must handle three A2A proxy error
shapes:
  {"error": "plain string"}         ← the bug fix: isinstance(err, str)
  {"error": {"message": "...", ...}} ← pre-existing path
  {"error": {"nested": "object"}}    ← falls through to str(err)

Adds TestDelegateTaskDirect:
  test_string_form_error_returns_error_message  — regression for AttributeError
  test_dict_form_error_returns_error_message    — pre-existing path still works
  test_success_returns_result_text               — happy path still works

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-11 05:51:48 +00:00
..
adapters
builtin_tools fix(a2a_tools): add comment + test coverage for string-form error handling in delegate_task 2026-05-11 05:51:48 +00:00
lib
molecule_audit
platform_tools
plugins_registry
policies
scripts feat(workspace): add static .github-token fallback to git credential helper 2026-05-10 02:17:22 +00:00
skill_loader
tests fix(a2a_tools): add comment + test coverage for string-form error handling in delegate_task 2026-05-11 05:51:48 +00:00
_sanitize_a2a.py fix(security): OFFSEC-003 — boundary-marker escape + shared sanitizer 2026-05-11 02:16:09 +00:00
.coveragerc
a2a_cli.py
a2a_client.py fix(a2a): SSOT response parser — handle poll-mode queued envelope (#2967) 2026-05-05 17:21:28 -07:00
a2a_executor.py [core-be-agent] fix(#354): wire delegation-results consumer into a2a executor 2026-05-11 02:49:32 +00:00
a2a_mcp_server.py
a2a_response.py fix(workspace): push-mode Queued returns delivery_mode="push" (not silent default "poll") 2026-05-11 02:47:21 +00:00
a2a_tools_delegation.py fix(security): OFFSEC-003 — boundary-marker escape + shared sanitizer 2026-05-11 02:16:09 +00:00
a2a_tools_inbox.py
a2a_tools_memory.py
a2a_tools_messaging.py
a2a_tools_rbac.py
a2a_tools.py
adapter_base.py
agent.py
agents_md.py
boot_routes.py
build-all.sh docs(workspace-runtime): migrate github.com refs at source so mirror inherits Gitea links (internal#41) 2026-05-07 00:48:04 -07:00
card_helpers.py
config.py fix(runtime): MODEL_PROVIDER env is misnamed — accept MODEL/MOLECULE_MODEL, deprecate the legacy name 2026-05-10 02:38:14 -07:00
configs_dir.py
consolidation.py
coordinator.py
Dockerfile ci(docker): pin base image digests in all Dockerfiles 2026-05-09 23:56:39 +00:00
entrypoint.sh fix(workspace): set git user.name/email from $GITEA_USER at boot 2026-05-09 12:52:17 -07:00
event_log.py
events.py
executor_helpers.py
heartbeat.py
inbox_uploads.py
inbox.py
initial_prompt.py
internal_chat_uploads.py
internal_file_read.py
main.py tech-debt: rename molecule-monorepo-net -> molecule-core-net 2026-05-09 20:51:48 +00:00
mcp_cli.py feat(mcp): add molecule-mcp doctor onboarding diagnostic 2026-05-05 15:44:36 -07:00
mcp_doctor.py fix(mcp-doctor): heartbeat (idempotent) instead of register (UPSERT) 2026-05-05 16:11:08 -07:00
mcp_heartbeat.py
mcp_inbox_pollers.py
mcp_workspace_resolver.py mcp: surface specific TOKEN_FILE errors + link follow-ups (#2934) 2026-05-05 15:07:15 -07:00
molecule_ai_status.py
not_configured_handler.py
platform_auth.py
platform_inbound_auth.py
plugins.py
preflight.py
prompt.py
pytest.ini
rebuild-runtime-images.sh
requirements.txt
runtime_wedge.py
secret_redactor.py
shared_runtime.py
smoke_mode.py
transcript_auth.py
watcher.py