Manifest + the *Config models (incl. the transport
config TaiMCPConfig) + the filter-predicate signatures.
The impl methods that build the derived lookup maps and run the include/exclude
filtering (model_post_init + the private _build_*/_should_include
helpers) are logic and stay with the impl — only the field shape, the model
validators, and the public predicate/query signatures are the contract.
AgentsConfig
tai42_contract.manifest.AgentsConfig
ApiToolsConfig
tai42_contract.manifest.ApiToolsConfig
title and is deliberately NOT
a BaseConfig subclass. include/exclude name operations to project
or suppress; expose_destructive gates destructive-flagged operations; the
extensions map (from the mixin) attaches extension combos to projected
operations. Unlike BaseConfig, a name appearing in BOTH include and
exclude is a loud validation error — this stricter rule is unique to this
config and is never retrofitted onto other configs.
Attributes
BaseConfig
tai42_contract.manifest.BaseConfig
ExtensionElement
tai42_contract.manifest.ExtensionElement
ExtensionsConfigMixin
tai42_contract.manifest.ExtensionsConfigMixin
extensions attachment map, mixed into the config kinds
that support clip-on extensions (ToolsConfig and TaiMCPConfig).
extensions maps a tool base-name to the extension combo(s) attached to
it, applied AFTER selection and independent of include/exclude. The
stored shape is always tool -> list-of-combos
(dict[str, list[list[ExtensionElement]]]) so resolution reads ONE shape
regardless of how the YAML was written; each combo element is an extension
name or a {"name", "config"} mapping binding author config to it. The
normalizing validator wraps a flat combo and rejects malformed input loudly.
Attributes
Members
normalize_extensions
tai42_contract.manifest.ExtensionsConfigMixin.normalize_extensions
normalize_dict_values above).
A flat combo value is a single combo and is wrapped
({weather: [chain]} -> {"weather": [["chain"]]}); a list-of-combos
value is kept as multiple combos. A combo element is an extension name or
a {"name", "config"} mapping (author-bound config). This enforces
SHAPE only: it does NOT check that the extension names are registered
(ExtensionRegistry’s job) or that the tool is selected
(missing_tools’ job).
Parameters
MCPConfig
tai42_contract.manifest.MCPConfig
Members
normalize_args
tai42_contract.manifest.MCPConfig.normalize_args
normalize_dict_values
tai42_contract.manifest.MCPConfig.normalize_dict_values
Manifest
tai42_contract.manifest.Manifest
Members
should_include_tool
tai42_contract.manifest.Manifest.should_include_tool
name from module survives the include/exclude
filter (and record the decision on the matching config).
Parameters
should_include_agent
tai42_contract.manifest.Manifest.should_include_agent
should_include_mcp_tool
tai42_contract.manifest.Manifest.should_include_mcp_tool
replace_mcp
tai42_contract.manifest.Manifest.replace_mcp
live_manifest
tai42_contract.manifest.Manifest.live_manifest
tools/agents/mcp reflect the live
(post-filter) config maps.
find_title
tai42_contract.manifest.Manifest.find_title
TaiMCPConfig
tai42_contract.manifest.TaiMCPConfig
ToolsConfig
tai42_contract.manifest.ToolsConfig

