Skip to content

feat(types): Plugin Batch 1 / ADR-043 explainability fields on MCP responses (v6.8.0)#159

Merged
saurabhjain1592 merged 4 commits intomainfrom
feat/cat-b-mcp-explainability-fields
Apr 25, 2026
Merged

feat(types): Plugin Batch 1 / ADR-043 explainability fields on MCP responses (v6.8.0)#159
saurabhjain1592 merged 4 commits intomainfrom
feat/cat-b-mcp-explainability-fields

Conversation

@saurabhjain1592
Copy link
Copy Markdown
Member

Summary

Minor release — pure Cat B field-additions. Surfaces the 8 Plugin Batch 1 / ADR-042 / ADR-043 fields the agent has emitted since v7.1.0. All optional with None defaults; no breaking changes.

Coordinated cycle

Same field set across all 4 SDKs, same release day: TypeScript v6.1.0 / Python v6.8.0 (this) / Go v5.8.0 / Java v6.1.0.

Added

MCPCheckInputResponse gains 5 optional fields (decision_id, risk_level, policy_matches: list[ExplainPolicy] | None, override_available, override_existing_id).

MCPCheckOutputResponse gains 3 optional fields (decision_id, policy_matches: list[ExplainPolicy] | None, redacted_message).

ExplainPolicy re-exported from axonflow.types (was only in axonflow.decisions before). Python's snake_case convention naturally aligns wire-shape and SDK types — no separate model needed.

Held back

client.explain_decision(decision_id) is feature work — see axonflow-enterprise#1716.

Test plan

  • pytest suite passes (31 type tests + 7 wire-shape tests)
  • wire-shape gate clean against current spec

…sponses (v6.8.0)

Surfaces fields the AxonFlow agent has emitted since v7.1.0 that
axonflow.types didn't declare. Pure Cat B field-additions — all
optional, no new methods, no breaking changes. Documented in OpenAPI
via platform v7.4.3 (axonflow-enterprise#1714); SDK catches up here.

Coordinated cycle: TypeScript v6.1.0 / Go v5.8.0 / Java v6.1.0 ship
same day with the same field set.

MCPCheckInputResponse gains 5 optional Plugin Batch 1 fields
(decision_id, risk_level, policy_matches, override_available,
override_existing_id).

MCPCheckOutputResponse gains 3 optional fields (decision_id,
policy_matches, redacted_message — text-redaction counterpart to
redacted_data).

ExplainPolicy re-exported from axonflow.types (it was only in
axonflow.decisions before). Python's snake_case convention naturally
aligns wire-shape and SDK types — no separate model needed.

ExplainDecision tool surface (client.explain_decision +
ExplainRule + DecisionExplanation full type surface) is feature
work tracked separately in axonflow-enterprise#1716 — not this
release's scope.

31 tests pass; wire-shape gate clean.
@saurabhjain1592 saurabhjain1592 added the spec-pin-bump Authorizes a change to openapi_specs_sha in the wire-shape baseline label Apr 25, 2026
Self-review caught: axonflow.types re-exports ExplainPolicy from
axonflow.decisions, but axonflow/__init__.py didn't include it in
the public surface. from axonflow import ExplainPolicy would fail
without this — and that's the conventional public import path now
that policy_matches: list[ExplainPolicy] | None lives on the MCP
response types. Added to both the import block and __all__ for
parity with the other three SDKs which all export ExplainPolicy
publicly.
@saurabhjain1592 saurabhjain1592 force-pushed the feat/cat-b-mcp-explainability-fields branch from f849d10 to 82c0d99 Compare April 25, 2026 18:38
@saurabhjain1592 saurabhjain1592 merged commit b806666 into main Apr 25, 2026
13 checks passed
@saurabhjain1592 saurabhjain1592 deleted the feat/cat-b-mcp-explainability-fields branch April 25, 2026 19:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

spec-pin-bump Authorizes a change to openapi_specs_sha in the wire-shape baseline

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant