decisions: pplx-decider v1.1/v1.2 locally, with image and control flags

Merged
SI
3d ago
+752-113

Brings the pplx deciders to wally decisions --local and lets the CLI drive the SDK's new decision controls.

  • Consumes kit cpp-desktop-v0.20.40 (IDL 1.6.0, plugin API 14) and builds the Apple MLX host from the SDK commit that kit came from (c0cc8eb). The SDK side is RunanywhereAI/runanywhere-sdks#993.
  • decisions --local now takes --image, and adds --grouping joint|per-question, --max-length, --max-pixels and --min-pixels. They are local only: a cloud run that sets one is refused. A model that cannot honour one refuses the call and names it.
  • Catalog: pplx-decider-4b (pplx-decider-flash-v1.2, BF16, text and images), served from the runanywhere HF mirror and pinned to the upload commit, with a SHA-256 for every weight file.
  • scripts/test/e2e-modalities.sh gains opt-in decision cases (WALLY_E2E_DECISION, WALLY_E2E_DECISION_IMAGE).

Fixes on the way: the shipped 0.8.10 cannot load mlx-pplx-decider-27b-4bit (its MLX host predates the decider runtime); this build answers with it.

Tested on this Mac against the released kit: ctest 6/6, clippy, fmt, test ledger, versions, bindings and agents-sync checks. End to end with both pplx models: text, image, the controls and the refusals, 5/5. models pull pplx-decider-4b from the mirror into an empty home, then scoring with it, passes.

Known: the Apple MLX job resolves SDK Apple binaries for 0.20.40, and no SDK 0.20.40 release has been published, so that job may fail on the binary download.


Summary by cubic

Ships as wally 0.8.12: brings the pplx deciders to wally decisions --local, adds image scoring and the SDK's decision controls to the CLI, and fixes the 0.8.10 build, which could not load mlx-pplx-decider-27b-4bit because its MLX host predates the decider runtime.

  • --image now works locally, and --grouping joint|per-question, --max-length, --max-pixels and --min-pixels are local-only; setting one in a cloud run is refused, and a model that cannot honor one refuses the call naming it.
  • Adds pplx-decider-4b (pplx-decider-flash-v1.2, BF16, text and images) to the catalog, served from the runanywhere HF mirror and pinned to the upload commit, with a SHA-256 for every weight file.
  • Consumes kit cpp-desktop-v0.20.40 (IDL 1.6.0, plugin API 14), whose windows-arm64 kit now carries llama.cpp, and builds the Apple MLX host from a fork branch carrying the v0.20.40 Apple binaries and their checksums (siddhesh/kit-0.20.40-swift), with resolved Swift packages mlx-swift-lm 3.31.11 and mlx-audio-swift 0.1.9.
  • models now runs the downloaded sibling build of a merged decision row when the named build is not on disk, instead of refusing offline runs like decisions --local; where the catalog hides the other build (MLX builds off Apple), no sibling is expected.
  • models rm can now remove a model whose catalog entry was renamed or dropped but that still shows in models list.
  • The Anthropic and Codex translators now drop null-valued fields from tool schemas, so MCP tools declaring optional parameters as "default": null no longer break MLX chat templates.
  • The Homebrew formula descriptions (stable and beta) now cover both local runs and the RunAnywhere account.
  • scripts/test/e2e-modalities.sh gains opt-in decision cases (WALLY_E2E_DECISION, WALLY_E2E_DECISION_IMAGE).

Known limitations

  • The Apple MLX job resolves the v0.20.40 Apple binaries from a fork branch, not a published release, so it depends on that branch staying up.

Summary by CodeRabbit

  • New Features
    • Added the Pplx Decider 4B v1.2 model for local decision-making with text and images.
    • Local decision requests now support images and options for grouping, response length, and image-pixel limits.
    • Added CLI options and help text for configuring these controls, including accepted values and defaults.
  • Bug Fixes
    • Local image requests are no longer rejected as cloud-only. Invalid option combinations and limits are reported with validation errors.