hongming-pc2 37affa7ae7
Secret scan / Scan diff for credential-shaped strings (pull_request) Successful in 5s
CI / Template validation (static) (pull_request) Successful in 6s
CI / Template validation (static) (push) Successful in 7s
CI / Adapter unit tests (pull_request) Failing after 8s
CI / Adapter unit tests (push) Failing after 9s
verify-providers-projection / Regenerate projection, fail on drift, assert registry ⊆ template (pull_request) Successful in 15s
CI / T4 tier-4 conformance (live) (push) Successful in 1m42s
CI / T4 tier-4 conformance (live) (pull_request) Successful in 1m44s
CI / Template validation (runtime) (push) Successful in 2m14s
CI / Template validation (runtime) (pull_request) Successful in 2m16s
CI / validate (pull_request) Successful in 1s
CI / validate (push) Successful in 1s
fix(executor): surface the CLI stream error instead of the swallowed-stderr placeholder
When the `claude` CLI errors mid-stream, claude-agent-sdk throws a bare
`Exception("Command failed with exit code 1 …")` whose only text is the
useless `Check stderr output for details` placeholder — but the *actual*
failure reason (model 404, rate limit, auth) arrived a moment earlier as a
stream-json `ResultMessage(is_error=True)` carrying `result` text and
`api_error_status`. That was thrown away.

`_run_query` now captures `ResultMessage(is_error=True)` detail (and, as a
fallback, the trailing `AssistantMessage` text) and re-attaches it to the
raised exception as `_molecule_stream_detail`. `_format_process_error`
surfaces it as `cli_stream_error=…`; when present, skips the
`_probe_claude_cli_error` re-probe (#160) — the probe can't replay the
failing `--model` / `--system-prompt` argv so it may succeed and mislead.
The probe stays as last resort when nothing was salvaged.

(Branch rebased onto current main; main now carries an equivalent
ResultMessage → _ResultError path, so this commit adds the regression-test
suite and aligns the stub list with current executor_helpers imports.)

Tests: tests/test_executor_error_detail.py — 6 cases. Stub pattern mirrors
test_runtime_wedge_mirror.py.

Refs internal#226 follow-up #5.
2026-06-14 15:55:56 +00:00

template-claude-code-default

Molecule AI workspace template for the claude-code-default runtime.

Usage

In Molecule AI canvas

Select this template when creating a new workspace — it appears in the template picker automatically.

From a URL (community install)

Paste this URL when creating a workspace:

github://Molecule-AI/template-claude-code-default

Files

  • config.yaml — workspace configuration (runtime, model, skills, etc.)
  • system-prompt.md — agent system prompt (if present)

Auth paths

Path Env var(s) Where to get the key
OAuth (Claude Code subscription) CLAUDE_CODE_OAUTH_TOKEN claude login
Anthropic API (direct) ANTHROPIC_API_KEY console.anthropic.com
Third-party Anthropic-compat (e.g. Xiaomi MiMo pay-as-you-go) ANTHROPIC_API_KEY (provider's key) provider console
Xiaomi MiMo Token Plan ANTHROPIC_API_KEY (Token Plan key), ANTHROPIC_BASE_URL (Token Plan endpoint) token-plan dashboard

For third-party providers, entrypoint.sh rewrites ANTHROPIC_BASE_URL based on the selected MODEL so the claude CLI routes there. Currently auto-routes mimo-* models to https://api.xiaomimimo.com/anthropic (pay-as-you-go). Token Plan users should set ANTHROPIC_BASE_URL=https://token-plan-sgp.xiaomimimo.com/anthropic as a workspace or org-level secret — the shell mapping is the fallback and operator-set values always win. Other Token Plan endpoints (e.g. token-plan-hk.xiaomimimo.com) can be used by setting the secret explicitly.

Schema version

template_schema_version: 1 — compatible with Molecule AI platform v1.x.

License

Business Source License 1.1 — © Molecule AI.

S
Description
No description provided
Readme 7.4 MiB
Languages
Python 87.6%
Shell 10.2%
Dockerfile 2.2%