harn-vm 0.10.103

Async bytecode virtual machine for the Harn programming language
Documentation
# Exact routes contributed from a downstream project's `harn.toml`
# `[capabilities]` section.
#
# A project override only applies to processes started inside that project, so
# these facts reached one repo's own runs and nobody else's. Worse for the
# contributor: their shipped catalog projection was generated *with* the
# override while their users' runtimes resolved *without* it, so the two halves
# of one tool-format decision disagreed and a steer had to paper over the gap.
# Provider and model capability is Harn's to own; moving the rules here gives
# every scope one answer.
#
# This fragment sorts first in 20-providers/ on purpose, so each exact route
# below is seen before the family wildcards (`qwen/*`,
# `accounts/fireworks/models/*`) that would otherwise claim it.
#
# Every rule here is `extends = true`, and that is load-bearing rather than
# stylistic. Lookup is first-match-wins: a non-extends rule wins outright and
# silently drops every field it does not restate. These routes already have
# rules elsewhere in the matrix carrying facts a contributed row has no reason
# to know about — `provider_route_denylist` routing around a broken upstream is
# the one that caught us, and it is invisible in the generated catalog because
# it is not projected there. Contributed facts should layer onto what is
# already known, never replace it.


# Qwen3.6 Plus on DashScope. Native tools, server-side reasoning left on with
# per-stage auto-reasoning disabled, and `/no_think` as the disable directive.
[[provider.dashscope]]
model_match = "qwen3.6-plus"
extends = true
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
vision_supported = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"

# Qwen3.6 35B A3B on OpenRouter. Same shape as the DashScope Plus row, minus
# chat-template kwargs, which this route does not honor.
[[provider.openrouter]]
model_match = "qwen/qwen3.6-35b-a3b"
extends = true
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
vision_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"

# Qwen3.6 Plus on OpenRouter, including the dated/suffixed variants. This one
# extends rather than replaces: the `qwen/*` family row already carries facts
# this route needs (prompt caching among them), and restating only the fields
# below keeps the rest resolving from there.
[[provider.openrouter]]
model_match = "qwen/qwen3.6-plus*"
extends = true
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
reasoning_none_supported = true
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
vision_supported = true
server_parser = "none"
honors_chat_template_kwargs = false
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"

# Qwen3.6 Plus served by Fireworks under its own account-scoped id.
[[provider.fireworks]]
model_match = "accounts/fireworks/models/qwen3p6-plus"
extends = true
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
vision_supported = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"

# Qwen3.6 Plus on Together, which publishes the upstream capitalized id.
[[provider.together]]
model_match = "Qwen/Qwen3.6-Plus"
extends = true
native_tools = true
preferred_tool_format = "native"
structured_output = "native"
thinking_modes = ["enabled"]
auto_reasoning_overrides = { agent = "off", verify = "off", code = "off" }
preserve_thinking = true
vision_supported = true
server_parser = "none"
honors_chat_template_kwargs = true
recommended_endpoint = "/v1/chat/completions"
text_tool_wire_format_supported = true
thinking_disable_directive = "/no_think"
prefers_xml_scaffolding = false
prefers_markdown_scaffolding = true
structured_output_mode = "delimited"
supports_assistant_prefill = false
prefers_role_developer = false
prefers_xml_tools = false
thinking_block_style = "inline"