Setup Status
setup_statusDiagnose an AnkusDrive installation by checking FreeCAD and solver components, reporting found/missing status with exact fix or install hints, and optionally verifying solver image authenticity.
Instructions
The machine-readable form of ankusdrive doctor — resolve FreeCAD and every
solver family and report, per item, found/missing with the exact fix. Call this
when the user asks to set up, diagnose, or finish installing AnkusDrive, then walk
them through the per-item fix/install_hint commands for their platform.
Read-only and side-effect-free: nothing is executed or installed and no
environment is mutated (verify_freecad_boot=True additionally boots FreeCAD
once, time-boxed, purely to read back its version — leave it False unless the
user doubts the install actually runs).
verify_image=True additionally checks, OVER THE NETWORK, that the solver
container's image was signed by this repository — use it when the user asks
whether the solvers they are running are authentic. It adds
container_image.verification = {status, reason, repo, workflow,
allowed_by_config, self_declared}, where status is:
• verified — provenance names this repository's image workflow;
• unsigned — no attestation: an image the user built themselves (common and
legitimate), one published before signing existed, or no network/gh. Relay
it as expected-for-a-custom-image, and mention
ANKUSDRIVE_ALLOW_UNVERIFIED_IMAGE=1 silences it;
• mismatch — an attestation exists but names a DIFFERENT repository. Say so
plainly: that is an image claiming to be ours. No setting silences it;
• unavailable — the check could not run (reason says why). Never report
this as authentic.
self_declared is what the image says about itself and is never evidence —
only the signature is.
Returns {platform: {system, machine}, freecad: {available, path, source,
version?, fix?}, install: {kind, source} (venv | pipx | uv_tool | uvx | mcpb —
the install every fix string is written for), toolsets: {enabled, disabled:
{family: {label, tools, enable}}} (tool families switched off in this install and
exactly how to switch each on), run_script: {allowed, enable?} (whether the
run_script tool may execute agent-written code here), solvers: {available, unwired, prepared_case_only, solvers:
{name: {..., install_hint | wire_hint}}, families: {family: {solvers, available,
unwired, prepared_case_only, any_available}}, extras}} —
families[*].any_available is what gates each *_submit family, and every
unavailable item carries its own fix string. A solver under
prepared_case_only resolves but no AnkusDrive tool can build it a case, so it
does not make its family available (SU2/cfd — issue #237).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| verify_image | No | ||
| verify_freecad_boot | No |