harn-vm 0.10.16

Async bytecode virtual machine for the Harn programming language
Documentation
# ---------- Moonshot AI — direct Kimi K2 (OpenAI-compatible /v1) -------------
# Moonshot's first-party API serves the Kimi K2 family with reliable native
# tool calls, an inline thinking mode, prompt caching, and multimodal input.
# K2.7 Code additionally accepts video. Catalog keys are `moonshot/<wire>`
# (e.g. `moonshot/kimi-k2.6`), so the patterns match the `*kimi*` substring
# to cover both the prefixed catalog key and the bare wire id.

[[provider.moonshot]]
model_match = "*kimi-k2.7-code*"
native_tools = true
preferred_tool_format = "json"
tool_mode_parity = "native_unreliable"
tool_mode_parity_notes = "2026-06-20 Harn agent-loop smoke after parser fix: forced native/off emitted no dispatchable tool_calls and claimed the tool was unavailable. Harn JSON tools completed the loop; text tools also pass after fixing text-mode history projection."
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
video_supported = true
prompt_caching = true
allowed_tool_choice_modes = ["auto", "none"]
requires_tool_result_adjacency = true
temperature_supported = false
top_p_supported = false
frequency_penalty_supported = false
presence_penalty_supported = false
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"

[[provider.moonshot]]
model_match = "*kimi*"
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
vision = true
vision_supported = true
prompt_caching = true
requires_tool_result_adjacency = true
allowed_tool_choice_modes = ["auto", "none"]
# Every Kimi model pins these sampling fields to a single server-side value and
# rejects any other with HTTP 400 ("invalid temperature: only 1 is allowed for
# this model" / "invalid top_p: only 0.95 is allowed"); confirmed by live probe
# on kimi-k2.5, k2.6, k2.7-code, and k2.7-code-highspeed (2026-07-14). Gating
# them here strips the fields so the server default (the sole allowed value)
# applies. The more specific k2.7-code rule sets these too; rules are
# first-match, so this general rule is what covers k2.5/k2.6. The non-kimi
# moonshot-v1-* models accept both and are correctly not matched here.
temperature_supported = false
top_p_supported = false
text_tool_wire_format_supported = true
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "native_json"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"