|
3 | 3 | import json |
4 | 4 | import math |
5 | 5 | import re |
| 6 | +from inspect import Parameter, signature |
6 | 7 | from pathlib import Path |
7 | 8 |
|
8 | 9 | import pytest |
|
20 | 21 | from benchmarks.tooling.command_runner import ToolCommandResult, ToolCommandStatus |
21 | 22 | from pydantic import ValidationError |
22 | 23 |
|
| 24 | +from jacobian.adapters.mcp.tools import capability_invoke |
23 | 25 | from jacobian.contracts.combinatorics import CyclicDifferenceSetExtensionRequest |
24 | 26 | from jacobian.contracts.matrix_operations import MatrixDeterminantRequest |
25 | 27 | from jacobian.contracts.number_theory import IntegerPairRequest |
@@ -179,7 +181,12 @@ def test_codex_skill_keeps_bounded_stable_direct_run_contracts() -> None: |
179 | 181 | assert polynomial in skill |
180 | 182 | extension_payload = '{"base_elements":["1","2","4","8","13"],"target_order":7}' |
181 | 183 | assert extension_payload in skill |
182 | | - assert '"input":<JSON>' in skill |
| 184 | + run_parameters = signature(capability_invoke).parameters |
| 185 | + assert tuple(run_parameters) == ("capability_id", "payload", "ctx") |
| 186 | + assert run_parameters["ctx"].kind is Parameter.KEYWORD_ONLY |
| 187 | + direct_envelope = f'{{"capability_id":"<id>","{tuple(run_parameters)[1]}":<JSON>}}' |
| 188 | + assert direct_envelope in skill |
| 189 | + assert '{"capability_id":"<id>","input":<JSON>}' not in skill |
183 | 190 | assert "No discovery for stable producers" in skill |
184 | 191 | assert "never with `capability_id`" in skill |
185 | 192 | assert '"candidate":<producer output.result>' in skill |
|
0 commit comments