Schemas
Structured outputs keep planner interactions predictable. Schema files live in src/schemas/ and are passed directly to llama.cpp during inference. The Bash layer still normalizes and validates outputs to guard against malformed responses.
Available schemas
planner_plan.schema.json: base template for the tool-plan array. At runtimeplanner_build_plan_schemainjects per-tool argument schemas and emits tuple variants that requirefinal_answeras the terminal step. Non-terminal steps can only use non-final_answertools, and the maximum plan length followsPLANNER_MAX_PLAN_STEPS.intent.schema.json: intent classification payload (intents,rationale) used to filter tools and decide whether to run pre-planner web search.pre_planner_search_terms.schema.json: array of one to three concise search terms (5–80 characters each) used for pre-planning web lookups.executor_action.schema.json: template for dynamically generated per-tool schemas used during the executor loop. Tool names and argument shapes are injected at runtime before calls tollama.cpp.final_answer_evaluation.schema.json: evaluator output withevaluation_type(FINAL/REPLAN),reasoning, andoutputfields emitted by the final-answer evaluation helper.
Free-form text arguments always appear under args.input in planner payloads, keeping prompt templates and registry-driven schemas aligned on the same canonical field name.