πŸŽ‰ Anna AI CLI v0.1.28 & v0.1.29 β€” System Prompt Passthrough & Structured Output Emulation

Hey Anna app developers! :waving_hand:

We’ve just shipped two fresh releases of the Anna AI CLI, and both are all about making your local dev experience match production even more closely. Update now and enjoy! :rocket:

npm i -g @anna-ai/cli@latest
# or
pnpm add -g @anna-ai/cli@latest

:sparkles: v0.1.28 β€” agent.session.create now passes through your System Prompt

:new_button: New Features

  • :brain: System prompt support in the local harness! When your app calls agent.session.create with a systemPrompt (or system_prompt), the dev harness now forwards it to the minted agent session β€” exactly like the production host does.
  • :repeat_button: Dev/prod parity, one step closer. Previously, system prompts were silently dropped in local dev mode, so your agent behaved differently locally vs. in production. Not anymore! What you test locally is what you ship. :100:

:light_bulb: Why you’ll love it

If your app gives its agent a personality, domain knowledge, or strict instructions via system prompt, you can now fully rehearse that behavior locally with anna dev β€” no deploy needed to verify your prompt engineering. :performing_arts:


:sparkles: v0.1.29 β€” Structured Output (responseFormat) emulation in the Executa sampling bridge

This one is a big quality-of-life win for Executa plugin authors! :hammer_and_wrench:

:new_button: New Features

  • :triangular_ruler: Full responseFormat support in the local sampling bridge. Your Executa plugin can now exercise the complete structured output flow (json_object / json_schema) locally β€” no real model required.
  • :white_check_mark: Platform-faithful validation. The bridge replicates the exact production limits, so you catch invalid requests early with a clean -32004 error:
    • type ∈ {json_object, json_schema}
    • json_schema.name must match ^[a-zA-Z0-9_-]{1,64}$
    • schema ≀ 32KB, depth ≀ 8, nodes ≀ 512
    • onUnsupported ∈ {error, json_object, text}
  • :level_slider: New flag: --sampling-unsupported-format. Simulate a model that doesn’t support json_schema and watch all three fallback branches in action:
    • onUnsupported: "error" (default) β†’ rejects with -32010 :cross_mark:
    • onUnsupported: "json_object" β†’ gracefully downgrades to JSON mode :down_arrow:
    • onUnsupported: "text" β†’ drops the constraint and returns plain text :memo:
  • :magnifying_glass_tilted_left: Honest result metadata. Every sampling response with a responseFormat request now includes _meta.responseFormat with {requested, applied, structuredValid, downgraded} β€” so your plugin always knows exactly what happened.
  • :bridge_at_night: Real-mode passthrough. Running the bridge in real mode? The negotiated response_format is forwarded to the platform’s completion endpoint, best-effort.

:light_bulb: Why you’ll love it

Structured output has three possible outcomes (applied / downgraded / rejected), and until now you could only test them against a live deployment. With v0.1.29 you can rehearse all three branches offline, deterministically, in your test suite. We even added 9 new test cases to prove it (183/183 green :white_check_mark:).


:puzzle_piece: Compatibility Notes

  • :green_circle: Both releases are CLI-only and fully additive β€” no changes to the wire protocol, dispatcher, schemas, or runtime. PINNED_RUNTIME_VERSION stays at 0.2.0a9.
  • :green_circle: No matrix / host-side upgrade required. Just update the CLI and go!

:open_mailbox_with_raised_flag: Feedback Welcome!

Tried the new structured output emulation? Building an agent with custom system prompts? We’d love to hear how it goes β€” drop your feedback, questions, or wild ideas below. Happy building! :purple_heart::sparkles: