document_symbols_cache_v23-06-25.pkl•489 kB
��      }�(�src/Server.php-False�� ebb5be6d481c8e630771874e6dfcd3e1�]�(}�(�name��$apiUrl��kind�K
�range�}�(�start�}�(�line�K�	character�Ku�end�}�(hKh
Kuu�selectionRange�}�(h
}�(hKh
Kuh}�(hKh
Kuu�location�}�(�uri��@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php��range�h	�absolutePath��9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php��relativePath��src/Server.php�u�children�]��parent�Nu}�(h�	$hasToken�hK
h}�(h
}�(hKh
Kuh}�(hKh
K
uuh}�(h
}�(hKh
Kuh}�(hKh
K
uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh"h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$hasClientId�hK
h}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh.h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$isOfflineMode�hK
h}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh:h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$openfga�hK
h}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhFh�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$authentication�hK
h}�(h
}�(hK%h
Kuh}�(hK%h
Kuuh}�(h
}�(hK%h
Kuh}�(hK%h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhRh�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$authentication�hK
h}�(h
}�(hK(h
Kuh}�(hK(h
Kuuh}�(h
}�(hK(h
Kuh}�(hK(h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh^h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$authentication�hK
h}�(h
}�(hK.h
Kuh}�(hK.h
Kuuh}�(h
}�(hK.h
Kuh}�(hK.h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhjh�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�	$finalUrl�hK
h}�(h
}�(hK7h
Kuh}�(hK7h
Kuuh}�(h
}�(hK7h
Kuh}�(hK7h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhvh�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$openfga�hK
h}�(h
}�(hK9h
Kuh}�(hK9h
Kuuh}�(h
}�(hK9h
Kuh}�(hK9h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�Closure�hKh}�(h
}�(hK@h
K7uh}�(hKBh
K
uuh}�(h
}�(hK@h
K7uh}�(hKBh
K
uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�Closure�hKh}�(h
}�(hKBh
Kuh}�(hKDh
K
uuh}�(h
}�(hKBh
Kuh}�(hKDh
K
uu�children�]�}�(h�$error�hK
h}�(h
}�(hKBh
K)uh}�(hKBh
K5uuh}�(h
}�(hKBh
K/uh}�(hKBh
K5uuhh�h}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�uah}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuhNuh�}�(h�$connectionError�hK
h}�(h
}�(hKEh
Kuh}�(hKEh
K+uuh}�(h
}�(hKEh
Kuh}�(hKEh
K+uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�
$container�hK
h}�(h
}�(hKPh
Kuh}�(hKPh
Kuuh}�(h
}�(hKPh
Kuh}�(hKPh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$server�hK
h}�(h
}�(hKSh
Kuh}�(hKSh
Kuuh}�(h
}�(hKSh
Kuh}�(hKSh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�
$startTime�hK
h}�(h
}�(hKbh
Kuh}�(hKbh
Kuuh}�(h
}�(hKbh
Kuh}�(hKbh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�	$docIndex�hK
h}�(h
}�(hKch
Kuh}�(hKch
Kuuh}�(h
}�(hKch
Kuh}�(hKch
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$endTime�hK
h}�(h
}�(hKeh
Kuh}�(hKeh
Kuuh}�(h
}�(hKeh
Kuh}�(hKeh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�	$loadTime�hK
h}�(h
}�(hKfh
Kuh}�(hKfh
Kuuh}�(h
}�(hKfh
Kuh}�(hKfh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hh�h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$sdks�hK
h}�(h
}�(hKih
Kuh}�(hKih
K
uuh}�(h
}�(hKih
Kuh}�(hKih
K
uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�	$sdkCount�hK
h}�(h
}�(hKjh
Kuh}�(hKjh
Kuuh}�(h
}�(hKjh
Kuh}�(hKjh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$sdk�hK
h}�(h
}�(hKoh
Kuh}�(hKoh
Kuuh}�(h
}�(hKoh
Kuh}�(hKoh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�	$overview�hK
h}�(h
}�(hKph
Kuh}�(hKph
Kuuh}�(h
}�(hKph
Kuh}�(hKph
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj+  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$classCount�hK
h}�(h
}�(hKsh
Kuh}�(hKsh
Kuuh}�(h
}�(hKsh
Kuh}�(hKsh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj7  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�
$sectionCount�hK
h}�(h
}�(hKth
Kuh}�(hKth
Kuuh}�(h
}�(hKth
Kuh}�(hKth
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hjC  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$chunkCount�hK
h}�(h
}�(hKuh
Kuh}�(hKuh
Kuuh}�(h
}�(hKuh
Kuh}�(hKuh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hjO  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$generalDoc�hK
h}�(h
}�(hK{h
K-uh}�(hK{h
K8uuh}�(h
}�(hK{h
K-uh}�(hK{h
K8uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj[  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�	$overview�hK
h}�(h
}�(hK|h
Kuh}�(hK|h
Kuuh}�(h
}�(hK|h
Kuh}�(hK|h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hjg  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�
$sectionCount�hK
h}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h
}�(hKh
Kuh}�(hKh
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hjs  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�$chunkCount�hK
h}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�	$docError�hK
h}�(h
}�(hK�h
Kuh}�(hK�h
K uuh}�(h
}�(hK�h
Kuh}�(hK�h
K uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�
$transport�hK
h}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�Closure�hKh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh�]�}�(h�
$exception�hK
h}�(h
}�(hK�h
K+uh}�(hK�h
K?uuh}�(h
}�(hK�h
K5uh}�(hK�h
K?uuhj�  h}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�uah}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuhNuj�  }�(h�Closure�hKh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh�]�(}�(h�	$severity�hK
h}�(h
}�(hK�h
K'uh}�(hK�h
K0uuh}�(h
}�(hK�h
K'uh}�(hK�h
K0uuhj�  h}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�u}�(h�$message�hK
h}�(h
}�(hK�h
K2uh}�(hK�h
K:uuh}�(h
}�(hK�h
K2uh}�(hK�h
K:uuhj�  h}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�u}�(h�$file�hK
h}�(h
}�(hK�h
K<uh}�(hK�h
KAuuh}�(h
}�(hK�h
K<uh}�(hK�h
KAuuhj�  h}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�u}�(h�$line�hK
h}�(h
}�(hK�h
KCuh}�(hK�h
KHuuh}�(h
}�(hK�h
KCuh}�(hK�h
KHuuhj�  h}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�ueh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuhNuj�  j�  j�  j�  }�(h�Closure�hKh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh�]�}�(h�$error�hK
h}�(h
}�(hK�h
Kuh}�(hK�h
Kuuh}�(h
}�(hK�h
Kuh}�(hK�h
Kuuhj�  h}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj   h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�uah}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj�  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuhNuj�  }�(h�Closure�hKh}�(h
}�(hK�h
Kuh}�(hMh
K	uuh}�(h
}�(hK�h
Kuh}�(hMh
K	uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�Closure�hKh}�(h
}�(hMh
Kuh}�(hM	h
K	uuh}�(h
}�(hMh
Kuh}�(hM	h
K	uuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNu}�(h�
$throwable�hK
h}�(h
}�(hM
h
Kuh}�(hM
h
Kuuh}�(h
}�(hM
h
Kuh}�(hM
h
Kuuh}�(h�@file:///Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hj'  h�9/Users/evan/Developer/evansims/openfga-mcp/src/Server.php�hhuh]�hNue]�(hh h,h8hDhPh\hhhth�h�h�h�h�h�h�h�h�h�j  j  j  j)  j5  jA  jM  jY  je  jq  j}  j�  j�  j�  j�  j�  j
  j  j%  e�����!src/Tools/AbstractTools.php-False�� 4d5fecbff19731d705c618b9f8b2be70�]�(}�(�name��OpenFGA\MCP\Tools��kind�K�range�}�(�start�}�(�line�K�	character�K u�end�}�(j?  Kj@  Kuu�selectionRange�}�(j=  }�(j?  Kj@  K
ujA  }�(j?  Kj@  Kuuh}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj<  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�h�src/Tools/AbstractTools.php�uh]�hNu}�(j8  �
AbstractTools�j:  Kj;  }�(j=  }�(j?  K	j@  K ujA  }�(j?  KXj@  KuujC  }�(j=  }�(j?  K	j@  KujA  }�(j?  K	j@  K%uu�children�]�(}�(j8  �checkOfflineMode�j:  Kj;  }�(j=  }�(j?  Kj@  KujA  }�(j?  Kj@  KuujC  }�(j=  }�(j?  Kj@  KujA  }�(j?  Kj@  K'uujT  ]�}�(j8  �
$operation�j:  K
j;  }�(j=  }�(j?  Kj@  K(ujA  }�(j?  Kj@  K9uujC  }�(j=  }�(j?  Kj@  K/ujA  }�(j?  Kj@  K9uuhjV  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hja  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uh]�uahjL  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjX  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uu}�(j8  �checkRestrictedMode�j:  Kj;  }�(j=  }�(j?  Kj@  KujA  }�(j?  K8j@  KuujC  }�(j=  }�(j?  K!j@  KujA  }�(j?  K!j@  K*uujT  ]�(}�(j8  �$storeId�j:  K
j;  }�(j=  }�(j?  K!j@  K+ujA  }�(j?  K!j@  KBuujC  }�(j=  }�(j?  K!j@  K3ujA  }�(j?  K!j@  K;uuhjn  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjy  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uh]�u}�(j8  �$modelId�j:  K
j;  }�(j=  }�(j?  K!j@  KDujA  }�(j?  K!j@  K[uujC  }�(j=  }�(j?  K!j@  KLujA  }�(j?  K!j@  KTuuhjn  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj�  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uh]�u}�(j8  �$restrictedStore�j:  K
j;  }�(j=  }�(j?  K(j@  KujA  }�(j?  K(j@  KuujC  }�(j=  }�(j?  K(j@  KujA  }�(j?  K(j@  Kuuhjn  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj�  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uh]�u}�(j8  �$restrictedModel�j:  K
j;  }�(j=  }�(j?  K0j@  KujA  }�(j?  K0j@  KuujC  }�(j=  }�(j?  K0j@  KujA  }�(j?  K0j@  Kuuhjn  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj�  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uh]�uehjL  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjp  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uu}�(j8  �checkRestrictedModeForWrites�j:  Kj;  }�(j=  }�(j?  K:j@  KujA  }�(j?  KGj@  KuujC  }�(j=  }�(j?  K@j@  KujA  }�(j?  K@j@  K3uujT  ]�}�(j8  �
$operation�j:  K
j;  }�(j=  }�(j?  K@j@  K4ujA  }�(j?  K@j@  KEuujC  }�(j=  }�(j?  K@j@  K;ujA  }�(j?  K@j@  KEuuhj�  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj�  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uh]�uahjL  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj�  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uu}�(j8  �checkWritePermission�j:  Kj;  }�(j=  }�(j?  KIj@  KujA  }�(j?  KWj@  KuujC  }�(j=  }�(j?  KOj@  KujA  }�(j?  KOj@  K+uujT  ]�}�(j8  �
$operation�j:  K
j;  }�(j=  }�(j?  KOj@  K,ujA  }�(j?  KOj@  K=uujC  }�(j=  }�(j?  KOj@  K3ujA  }�(j?  KOj@  K=uuhj�  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj�  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uh]�uahjL  h}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hj�  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uueh}�(h�Mfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjN  h�F/Users/evan/Developer/evansims/openfga-mcp/src/Tools/AbstractTools.php�hjJ  uhNujV  j_  jn  jw  j�  j�  j�  j�  j�  j�  j�  e]�(j7  jL  e�����%src/Tools/DocumentationTools.php-True�� c176f7802346eaf296bf7181e6d1c4ef�]�(}�(�name��OpenFGA\MCP\Tools��kind�K�range�}�(�start�}�(�line�K�	character�K u�end�}�(j�  Kj�  Kuu�selectionRange�}�(j�  }�(j�  Kj�  K
uj�  }�(j�  Kj�  Kuu�location�}�(�uri��Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php��range�j�  �absolutePath��K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php��relativePath�� src/Tools/DocumentationTools.php�u�body��namespace OpenFGA\MCP\Tools;��children�]��parent�Nu}�(j�  �DocumentationTools�j�  Kj�  }�(j�  }�(j�  Kj�  K uj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  Kj�  Kuj�  }�(j�  Kj�  K'uu�children�]�(}�(j�  �$client��detail��
(promoted)�j�  Kj�  }�(j�  }�(j�  Kj�  Kuj�  }�(j�  Kj�  K'uuj�  }�(j�  }�(j�  Kj�  K uj�  }�(j�  Kj�  K'uuj   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  � private ClientInterface $client,�j�  ]�u}�(j�  �__construct�j�  K	j�  }�(j�  }�(j�  Kj�  Kuj�  }�(j�  Kj�  Kuuj�  }�(j�  }�(j�  Kj�  Kuj�  }�(j�  Kj�  Kuuj	  ]�}�(j�  �$client�j�  K
j�  }�(j�  }�(j�  Kj�  Kuj�  }�(j�  Kj�  K'uuj�  }�(j�  }�(j�  Kj�  K uj�  }�(j�  Kj�  K'uuj   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j%  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  � private ClientInterface $client,�j�  ]�uaj   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  ��public function __construct(
        /** @phpstan-ignore property.onlyWritten */
        private ClientInterface $client,
    ) {
    }�u}�(j�  �findSimilarDocumentation�j�  Kj�  }�(j�  }�(j�  Kj�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K(j�  Kuj�  }�(j�  K(j�  K,uuj	  ]�(}�(j�  �$content�j�  K
j�  }�(j�  }�(j�  K)j�  Kuj�  }�(j�  K)j�  Kuuj�  }�(j�  }�(j�  K)j�  Kuj�  }�(j�  K)j�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j?  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �string $content,�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  K*j�  Kuj�  }�(j�  K*j�  Kuuj�  }�(j�  }�(j�  K*j�  Kuj�  }�(j�  K*j�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jL  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $sdk = null,�j�  ]�u}�(j�  �$similarity_threshold�j�  K
j�  }�(j�  }�(j�  K+j�  Kuj�  }�(j�  K+j�  K)uuj�  }�(j�  }�(j�  K+j�  Kuj�  }�(j�  K+j�  K#uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jY  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �"float $similarity_threshold = 0.5,�j�  ]�u}�(j�  �$limit�j�  K
j�  }�(j�  }�(j�  K,j�  Kuj�  }�(j�  K,j�  Kuuj�  }�(j�  }�(j�  K,j�  Kuj�  }�(j�  K,j�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jf  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �int $limit = 5,�j�  ]�u}�(j�  �
$validSdks�j�  K
j�  }�(j�  }�(j�  K:j�  Kuj�  }�(j�  K:j�  Kuuj�  }�(j�  }�(j�  K:j�  Kuj�  }�(j�  K:j�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  js  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �N$validSdks = ['php', 'go', 'python', 'java', 'dotnet', 'js', 'laravel', null];�j�  ]�u}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  K@j�  Kuj�  }�(j�  K@j�  Kuuj�  }�(j�  }�(j�  K@j�  Kuj�  }�(j�  K@j�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �4$index = DocumentationIndexSingleton::getInstance();�j�  ]�u}�(j�  �	$keyTerms�j�  K
j�  }�(j�  }�(j�  KGj�  Kuj�  }�(j�  KGj�  Kuuj�  }�(j�  }�(j�  KGj�  Kuj�  }�(j�  KGj�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �-$keyTerms = $this->extractKeyTerms($content);�j�  ]�u}�(j�  �$similarChunks�j�  K
j�  }�(j�  }�(j�  KOj�  Kuj�  }�(j�  KOj�  Kuuj�  }�(j�  }�(j�  KOj�  Kuj�  }�(j�  KOj�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$similarChunks = [];�j�  ]�u}�(j�  �$keyTerm�j�  K
j�  }�(j�  }�(j�  KQj�  Kuj�  }�(j�  KQj�  K&uuj�  }�(j�  }�(j�  KQj�  Kuj�  }�(j�  KQj�  K&uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$keyTerm) {�j�  ]�u}�(j�  �$chunks�j�  K
j�  }�(j�  }�(j�  KRj�  Kuj�  }�(j�  KRj�  Kuuj�  }�(j�  }�(j�  KRj�  Kuj�  }�(j�  KRj�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �;$chunks = $index->searchChunks($keyTerm, $sdk, $limit * 2);�j�  ]�u}�(j�  �$chunk�j�  K
j�  }�(j�  }�(j�  KTj�  K uj�  }�(j�  KTj�  K&uuj�  }�(j�  }�(j�  KTj�  K uj�  }�(j�  KTj�  K&uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �	$chunk) {�j�  ]�u}�(j�  �
$chunkContent�j�  K
j�  }�(j�  }�(j�  KWj�  Kuj�  }�(j�  KWj�  Kuuj�  }�(j�  }�(j�  KWj�  Kuj�  }�(j�  KWj�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �C$chunkContent = $this->getChunkContent($chunk['chunk_id'], $index);�j�  ]�u}�(j�  �$similarity�j�  K
j�  }�(j�  }�(j�  KXj�  Kuj�  }�(j�  KXj�  Kuuj�  }�(j�  }�(j�  KXj�  Kuj�  }�(j�  KXj�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �B$similarity = $this->calculateSimilarity($content, $chunkContent);�j�  ]�u}�(j�  �$chunkWithSimilarity�j�  K
j�  }�(j�  }�(j�  K\j�  Kuj�  }�(j�  K\j�  K(uuj�  }�(j�  }�(j�  K\j�  Kuj�  }�(j�  K\j�  K(uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$chunkWithSimilarity = $chunk;�j�  ]�u}�(j�  �$chunkWithSimilarity�j�  K
j�  }�(j�  }�(j�  K]j�  Kuj�  }�(j�  K]j�  K(uuj�  }�(j�  }�(j�  K]j�  Kuj�  }�(j�  K]j�  K(uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �1$chunkWithSimilarity['similarity'] = $similarity;�j�  ]�u}�(j�  �$chunkWithSimilarity�j�  K
j�  }�(j�  }�(j�  K^j�  Kuj�  }�(j�  K^j�  K(uuj�  }�(j�  }�(j�  K^j�  Kuj�  }�(j�  K^j�  K(uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �0$chunkWithSimilarity['content'] = $chunkContent;�j�  ]�u}�(j�  �	$chunkKey�j�  K
j�  }�(j�  }�(j�  K`j�  Kuj�  }�(j�  K`j�  Kuuj�  }�(j�  }�(j�  K`j�  Kuj�  }�(j�  K`j�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �6$chunkKey = $chunk['sdk'] . '::' . $chunk['chunk_id'];�j�  ]�u}�(j�  �$similarChunks�j�  K
j�  }�(j�  }�(j�  Kcj�  Kuj�  }�(j�  Kcj�  K&uuj�  }�(j�  }�(j�  Kcj�  Kuj�  }�(j�  Kcj�  K&uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �1$similarChunks[$chunkKey] = $chunkWithSimilarity;�j�  ]�u}�(j�  �	$chunkKey�j�  K
j�  }�(j�  }�(j�  Kcj�  K'uj�  }�(j�  Kcj�  K0uuj�  }�(j�  }�(j�  Kcj�  K'uj�  }�(j�  Kcj�  K0uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j)  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �"$chunkKey] = $chunkWithSimilarity;�j�  ]�u}�(j�  �$existingSim�j�  K
j�  }�(j�  }�(j�  Kej�  Kuj�  }�(j�  Kej�  K$uuj�  }�(j�  }�(j�  Kej�  Kuj�  }�(j�  Kej�  K$uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j6  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �7$existingSim = $similarChunks[$chunkKey]['similarity'];�j�  ]�u}�(j�  �$similarChunks�j�  K
j�  }�(j�  }�(j�  Khj�  Kuj�  }�(j�  Khj�  K*uuj�  }�(j�  }�(j�  Khj�  Kuj�  }�(j�  Khj�  K*uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jC  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �1$similarChunks[$chunkKey] = $chunkWithSimilarity;�j�  ]�u}�(j�  �	$chunkKey�j�  K
j�  }�(j�  }�(j�  Khj�  K+uj�  }�(j�  Khj�  K4uuj�  }�(j�  }�(j�  Khj�  K+uj�  }�(j�  Khj�  K4uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jP  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �"$chunkKey] = $chunkWithSimilarity;�j�  ]�u}�(j�  �Closure�j�  Kj�  }�(j�  }�(j�  Kpj�  Kuj�  }�(j�  Kvj�  K	uuj�  }�(j�  }�(j�  Kpj�  Kuj�  }�(j�  Kvj�  K	uuj	  ]�(}�(j�  �$a�j�  K
j�  }�(j�  }�(j�  Kpj�  K/uj�  }�(j�  Kpj�  K7uuj�  }�(j�  }�(j�  Kpj�  K5uj�  }�(j�  Kpj�  K7uuj   j[  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jf  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �array $a, array $b): int {�j�  ]�u}�(j�  �$b�j�  K
j�  }�(j�  }�(j�  Kpj�  K9uj�  }�(j�  Kpj�  KAuuj�  }�(j�  }�(j�  Kpj�  K?uj�  }�(j�  Kpj�  KAuuj   j[  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  js  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �array $b): int {�j�  ]�u}�(j�  �$aSimilarity�j�  K
j�  }�(j�  }�(j�  Krj�  Kuj�  }�(j�  Krj�  Kuuj�  }�(j�  }�(j�  Krj�  Kuj�  }�(j�  Krj�  Kuuj   j[  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �`$aSimilarity = isset($a['similarity']) && is_numeric($a['similarity']) ? $a['similarity'] : 0.0;�j�  ]�u}�(j�  �$bSimilarity�j�  K
j�  }�(j�  }�(j�  Ksj�  Kuj�  }�(j�  Ksj�  Kuuj�  }�(j�  }�(j�  Ksj�  Kuj�  }�(j�  Ksj�  Kuuj   j[  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �`$bSimilarity = isset($b['similarity']) && is_numeric($b['similarity']) ? $b['similarity'] : 0.0;�j�  ]�uej   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j]  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�  static function (array $a, array $b): int {
            // Since we know similarity is added above, we can safely access it
            $aSimilarity = isset($a['similarity']) && is_numeric($a['similarity']) ? $a['similarity'] : 0.0;
            $bSimilarity = isset($b['similarity']) && is_numeric($b['similarity']) ? $b['similarity'] : 0.0;
            return $bSimilarity <=> $aSimilarity;
        });�u}�(j�  �$similarChunks�j�  K
j�  }�(j�  }�(j�  Kyj�  Kuj�  }�(j�  Kyj�  Kuuj�  }�(j�  }�(j�  Kyj�  Kuj�  }�(j�  Kyj�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �8$similarChunks = array_slice($similarChunks, 0, $limit);�j�  ]�u}�(j�  �	$markdown�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �+$markdown = "## Similar Documentation\n\n";�j�  ]�u}�(j�  �$chunkIndex�j�  K
j�  }�(j�  }�(j�  K�j�  K#uj�  }�(j�  K�j�  K.uuj�  }�(j�  }�(j�  K�j�  K#uj�  }�(j�  K�j�  K.uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$chunkIndex => $chunk) {�j�  ]�u}�(j�  �$chunk�j�  K
j�  }�(j�  }�(j�  K�j�  K2uj�  }�(j�  K�j�  K8uuj�  }�(j�  }�(j�  K�j�  K2uj�  }�(j�  K�j�  K8uuj   j4  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �	$chunk) {�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j6  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�  /**
     * Find documentation similar to provided content.
     *
     * @param string      $content              Reference content to find similar documentation
     * @param string|null $sdk                  Limit search to specific SDK
     * @param float       $similarity_threshold Minimum similarity score (0.0-1.0, default: 0.5)
     * @param int         $limit                Maximum number of results (default: 5)
     *
     * @throws RuntimeException If documentation index initialization fails
     *
     * @return string Markdown-formatted related documentation
     */
    #[McpTool(name: 'find_similar_documentation')]
    public function findSimilarDocumentation(
        string $content,
        ?string $sdk = null,
        float $similarity_threshold = 0.5,
        int $limit = 5,
    ): string {
        if ('' === trim($content)) {
            return '❌ Content cannot be empty';
        }
        if (0.0 > $similarity_threshold || 1.0 < $similarity_threshold) {
            return '❌ Similarity threshold must be between 0.0 and 1.0';
        }
        if (1 > $limit || 20 < $limit) {
            return '❌ Limit must be between 1 and 20';
        }
        $validSdks = ['php', 'go', 'python', 'java', 'dotnet', 'js', 'laravel', null];
        if (! in_array($sdk, $validSdks, true)) {
            return '❌ Invalid SDK. Must be one of: php, go, python, java, dotnet, js, laravel';
        }
        $index = DocumentationIndexSingleton::getInstance();
        if (! $index->isInitialized()) {
            $index->initialize();
        }
        // Extract key terms from content for similarity matching
        $keyTerms = $this->extractKeyTerms($content);
        if ([] === $keyTerms) {
            return '❌ Could not extract meaningful terms from the provided content';
        }
        // Search for similar content using key terms
        /** @var array<string, array{chunk_id: string, sdk: string, score: float, preview: string, metadata: array<mixed>, similarity?: float, content?: string}> $similarChunks */
        $similarChunks = [];
        foreach ($keyTerms as $keyTerm) {
            $chunks = $index->searchChunks($keyTerm, $sdk, $limit * 2);
            foreach ($chunks as $chunk) {
                // Get content from the chunk to calculate similarity
                // We need to get the actual content - the preview is just a snippet
                $chunkContent = $this->getChunkContent($chunk['chunk_id'], $index);
                $similarity = $this->calculateSimilarity($content, $chunkContent);
                if ($similarity >= $similarity_threshold) {
                    // Add similarity and content to the chunk
                    $chunkWithSimilarity = $chunk;
                    $chunkWithSimilarity['similarity'] = $similarity;
                    $chunkWithSimilarity['content'] = $chunkContent;
                    $chunkKey = $chunk['sdk'] . '::' . $chunk['chunk_id'];
                    if (! isset($similarChunks[$chunkKey])) {
                        $similarChunks[$chunkKey] = $chunkWithSimilarity;
                    } elseif (isset($similarChunks[$chunkKey]['similarity'])) {
                        $existingSim = $similarChunks[$chunkKey]['similarity'];
                        if ($existingSim < $similarity) {
                            $similarChunks[$chunkKey] = $chunkWithSimilarity;
                        }
                    }
                }
            }
        }
        // Sort by similarity score
        usort($similarChunks, static function (array $a, array $b): int {
            // Since we know similarity is added above, we can safely access it
            $aSimilarity = isset($a['similarity']) && is_numeric($a['similarity']) ? $a['similarity'] : 0.0;
            $bSimilarity = isset($b['similarity']) && is_numeric($b['similarity']) ? $b['similarity'] : 0.0;
            return $bSimilarity <=> $aSimilarity;
        });
        // Apply limit
        $similarChunks = array_slice($similarChunks, 0, $limit);
        if ([] === $similarChunks) {
            return "## Similar Documentation\n\nNo similar documentation found (threshold: {$similarity_threshold})" .
                   (null !== $sdk ? ' in SDK: ' . $sdk : '') .
                   "\n\nTry:\n- Lowering the similarity threshold\n- Providing more specific content\n- Removing SDK filter for broader results";
        }
        // Build markdown response
        $markdown = "## Similar Documentation\n\n";
        $markdown .= sprintf('**Similarity Threshold:** %s%s', $similarity_threshold, PHP_EOL);
        if (null !== $sdk) {
            $markdown .= sprintf('**SDK Filter:** %s%s', $sdk, PHP_EOL);
        }
        $markdown .= '**Found:** ' . count($similarChunks) . " similar document(s)\n\n";
        $markdown .= "---\n\n";
        foreach ($similarChunks as $chunkIndex => $chunk) {
            $markdown .= $this->formatSimilarResult($chunk, $chunkIndex + 1);
        }
        return $markdown;
    }�u}�(j�  �searchCodeExamples�j�  Kj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  K&uuj	  ]�(}�(j�  �$query�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �string $query,�j�  ]�u}�(j�  �	$language�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  K uuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $language = null,�j�  ]�u}�(j�  �$include_context�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  K$uuj�  }�(j�  }�(j�  K�j�  K
uj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �bool $include_context = true,�j�  ]�u}�(j�  �$limit�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �int $limit = 5,�j�  ]�u}�(j�  �$offset�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �int $offset = 0,�j�  ]�u}�(j�  �$validLanguages�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j   j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �^$validLanguages = ['php', 'go', 'python', 'java', 'csharp', 'javascript', 'typescript', null];�j�  ]�u}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j-  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �4$index = DocumentationIndexSingleton::getInstance();�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j:  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �*$sdk = $this->mapLanguageToSdk($language);�j�  ]�u}�(j�  �
$allChunks�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jG  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �0$allChunks = $index->searchChunks($query, $sdk);�j�  ]�u}�(j�  �
$codeExamples�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jT  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$codeExamples = [];�j�  ]�u}�(j�  �	$allChunk�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  K(uuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  K(uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  ja  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$allChunk) {�j�  ]�u}�(j�  �
$chunkContent�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jn  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �F$chunkContent = $this->getChunkContent($allChunk['chunk_id'], $index);�j�  ]�u}�(j�  �$chunkWithContent�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j{  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$chunkWithContent = $allChunk;�j�  ]�u}�(j�  �$chunkWithContent�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �-$chunkWithContent['content'] = $chunkContent;�j�  ]�u}�(j�  �	$examples�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �F$examples = $this->extractCodeFromChunk($chunkWithContent, $language);�j�  ]�u}�(j�  �$example�j�  K
j�  }�(j�  }�(j�  K�j�  K"uj�  }�(j�  K�j�  K*uuj�  }�(j�  }�(j�  K�j�  K"uj�  }�(j�  K�j�  K*uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$example) {�j�  ]�u}�(j�  �$example�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$example['chunk'] = $allChunk;�j�  ]�u}�(j�  �
$codeExamples�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$codeExamples[] = $example;�j�  ]�u}�(j�  �$totalExamples�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �&$totalExamples = count($codeExamples);�j�  ]�u}�(j�  �$paginatedExamples�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �A$paginatedExamples = array_slice($codeExamples, $offset, $limit);�j�  ]�u}�(j�  �$currentPage�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �1$currentPage = (int) floor($offset / $limit) + 1;�j�  ]�u}�(j�  �$totalPages�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �2$totalPages = (int) ceil($totalExamples / $limit);�j�  ]�u}�(j�  �	$markdown�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �#$markdown = "## Code Examples\n\n";�j�  ]�u}�(j�  �
$exampleIndex�j�  K
j�  }�(j�  }�(j�  K�j�  K'uj�  }�(j�  K�j�  K4uuj�  }�(j�  }�(j�  K�j�  K'uj�  }�(j�  K�j�  K4uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$exampleIndex => $example) {�j�  ]�u}�(j�  �$example�j�  K
j�  }�(j�  }�(j�  K�j�  K8uj�  }�(j�  K�j�  K@uuj�  }�(j�  }�(j�  K�j�  K8uj�  }�(j�  K�j�  K@uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$example) {�j�  ]�u}�(j�  �$exampleNumber�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j$  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �-$exampleNumber = $offset + $exampleIndex + 1;�j�  ]�u}�(j�  �$prevOffset�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j1  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �'$prevOffset = max(0, $offset - $limit);�j�  ]�u}�(j�  �$nextOffset�j�  K
j�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj�  }�(j�  }�(j�  K�j�  Kuj�  }�(j�  K�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j>  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$nextOffset = $offset + $limit;�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�  /**
     * Search for code examples in documentation.
     *
     * @param string      $query           Code pattern or concept to find
     * @param string|null $language        Programming language filter (php, go, python, java, csharp, javascript, typescript)
     * @param bool        $include_context Include surrounding explanatory context
     * @param int         $limit           Maximum number of examples to return (default: 5)
     * @param int         $offset          Pagination offset for results (default: 0)
     *
     * @throws RuntimeException If documentation index initialization fails
     *
     * @return string Markdown-formatted code examples with descriptions
     */
    #[McpTool(name: 'search_code_examples')]
    public function searchCodeExamples(
        string $query,
        ?string $language = null,
        bool $include_context = true,
        int $limit = 5,
        int $offset = 0,
    ): string {
        if ('' === trim($query)) {
            return '❌ Search query cannot be empty';
        }
        if (1 > $limit || 20 < $limit) {
            return '❌ Limit must be between 1 and 20';
        }
        if (0 > $offset) {
            return '❌ Offset cannot be negative';
        }
        $validLanguages = ['php', 'go', 'python', 'java', 'csharp', 'javascript', 'typescript', null];
        if (! in_array($language, $validLanguages, true)) {
            return '❌ Invalid language. Must be one of: php, go, python, java, csharp, javascript, typescript';
        }
        $index = DocumentationIndexSingleton::getInstance();
        if (! $index->isInitialized()) {
            $index->initialize();
        }
        // Map language to SDK if applicable
        $sdk = $this->mapLanguageToSdk($language);
        // Search for code-related chunks
        $allChunks = $index->searchChunks($query, $sdk);
        $codeExamples = [];
        foreach ($allChunks as $allChunk) {
            // Get the full content for this chunk
            $chunkContent = $this->getChunkContent($allChunk['chunk_id'], $index);
            $chunkWithContent = $allChunk;
            $chunkWithContent['content'] = $chunkContent;
            $examples = $this->extractCodeFromChunk($chunkWithContent, $language);
            foreach ($examples as $example) {
                $example['chunk'] = $allChunk;
                $codeExamples[] = $example;
            }
        }
        $totalExamples = count($codeExamples);
        if (0 === $totalExamples) {
            return "## Code Examples
No code examples found for: **{$query}**" .
                   (null !== $language ? sprintf(' (language: %s)', $language) : '') .
                   "\n\nTry:\n- Searching for specific method or class names\n- Using OpenFGA terminology (e.g., 'check', 'expand', 'tuples')\n- Removing language filter for broader results";
        }
        // Apply pagination
        $paginatedExamples = array_slice($codeExamples, $offset, $limit);
        $currentPage = (int) floor($offset / $limit) + 1;
        $totalPages = (int) ceil($totalExamples / $limit);
        // Build markdown response
        $markdown = "## Code Examples\n\n";
        $markdown .= "**Search:** `{$query}`\n";
        if (null !== $language) {
            $markdown .= sprintf('**Language:** %s%s', $language, PHP_EOL);
        }
        $markdown .= '**Results:** Showing ' . ($offset + 1) . '-' . min($offset + $limit, $totalExamples) . " of {$totalExamples} examples\n\n";
        $markdown .= "---\n\n";
        foreach ($paginatedExamples as $exampleIndex => $example) {
            $exampleNumber = $offset + $exampleIndex + 1;
            $markdown .= $this->formatCodeExample($example, $exampleNumber, $include_context);
        }
        // Add pagination info
        if (1 < $totalPages) {
            $markdown .= "\n---\n\n### Pagination\n\n";
            if (1 < $currentPage) {
                $prevOffset = max(0, $offset - $limit);
                $markdown .= sprintf('- **Previous page:** Use offset=%d%s', $prevOffset, PHP_EOL);
            }
            if ($currentPage < $totalPages) {
                $nextOffset = $offset + $limit;
                $markdown .= sprintf('- **Next page:** Use offset=%d%s', $nextOffset, PHP_EOL);
            }
        }
        return $markdown;
    }�u}�(j�  �searchDocumentation�j�  Kj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mij�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  K'uuj	  ]�(}�(j�  �$query�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jX  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �string $query,�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  je  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $sdk = null,�j�  ]�u}�(j�  �$search_type�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  K'uuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jr  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  � string $search_type = 'content',�j�  ]�u}�(j�  �$limit�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �int $limit = 10,�j�  ]�u}�(j�  �$offset�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �int $offset = 0,�j�  ]�u}�(j�  �$validSearchTypes�j�  K
j�  }�(j�  }�(j�  M%j�  Kuj�  }�(j�  M%j�  Kuuj�  }�(j�  }�(j�  M%j�  Kuj�  }�(j�  M%j�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �>$validSearchTypes = ['content', 'class', 'method', 'section'];�j�  ]�u}�(j�  �
$validSdks�j�  K
j�  }�(j�  }�(j�  M+j�  Kuj�  }�(j�  M+j�  Kuuj�  }�(j�  }�(j�  M+j�  Kuj�  }�(j�  M+j�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �N$validSdks = ['php', 'go', 'python', 'java', 'dotnet', 'js', 'laravel', null];�j�  ]�u}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  M1j�  Kuj�  }�(j�  M1j�  Kuuj�  }�(j�  }�(j�  M1j�  Kuj�  }�(j�  M1j�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �4$index = DocumentationIndexSingleton::getInstance();�j�  ]�u}�(j�  �$allResults�j�  K
j�  }�(j�  }�(j�  M8j�  Kuj�  }�(j�  M8j�  Kuuj�  }�(j�  }�(j�  M8j�  Kuj�  }�(j�  M8j�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �G$allResults = $this->performSearch($index, $query, $sdk, $search_type);�j�  ]�u}�(j�  �
$totalResults�j�  K
j�  }�(j�  }�(j�  M9j�  Kuj�  }�(j�  M9j�  Kuuj�  }�(j�  }�(j�  M9j�  Kuj�  }�(j�  M9j�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �#$totalResults = count($allResults);�j�  ]�u}�(j�  �$paginatedResults�j�  K
j�  }�(j�  }�(j�  MDj�  Kuj�  }�(j�  MDj�  Kuuj�  }�(j�  }�(j�  MDj�  Kuj�  }�(j�  MDj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �>$paginatedResults = array_slice($allResults, $offset, $limit);�j�  ]�u}�(j�  �$currentPage�j�  K
j�  }�(j�  }�(j�  MEj�  Kuj�  }�(j�  MEj�  Kuuj�  }�(j�  }�(j�  MEj�  Kuj�  }�(j�  MEj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �1$currentPage = (int) floor($offset / $limit) + 1;�j�  ]�u}�(j�  �$totalPages�j�  K
j�  }�(j�  }�(j�  MFj�  Kuj�  }�(j�  MFj�  Kuuj�  }�(j�  }�(j�  MFj�  Kuj�  }�(j�  MFj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �1$totalPages = (int) ceil($totalResults / $limit);�j�  ]�u}�(j�  �	$markdown�j�  K
j�  }�(j�  }�(j�  MIj�  Kuj�  }�(j�  MIj�  Kuuj�  }�(j�  }�(j�  MIj�  Kuj�  }�(j�  MIj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �2$markdown = "## Documentation Search Results\n\n";�j�  ]�u}�(j�  �$resultIndex�j�  K
j�  }�(j�  }�(j�  MTj�  K&uj�  }�(j�  MTj�  K2uuj�  }�(j�  }�(j�  MTj�  K&uj�  }�(j�  MTj�  K2uuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$resultIndex => $result) {�j�  ]�u}�(j�  �$result�j�  K
j�  }�(j�  }�(j�  MTj�  K6uj�  }�(j�  MTj�  K=uuj�  }�(j�  }�(j�  MTj�  K6uj�  }�(j�  MTj�  K=uuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �
$result) {�j�  ]�u}�(j�  �
$resultNumber�j�  K
j�  }�(j�  }�(j�  MUj�  Kuj�  }�(j�  MUj�  Kuuj�  }�(j�  }�(j�  MUj�  Kuj�  }�(j�  MUj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j(  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �1$resultNumber = $offset + (int) $resultIndex + 1;�j�  ]�u}�(j�  �$prevOffset�j�  K
j�  }�(j�  }�(j�  M^j�  Kuj�  }�(j�  M^j�  Kuuj�  }�(j�  }�(j�  M^j�  Kuj�  }�(j�  M^j�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j5  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �'$prevOffset = max(0, $offset - $limit);�j�  ]�u}�(j�  �$nextOffset�j�  K
j�  }�(j�  }�(j�  Mcj�  Kuj�  }�(j�  Mcj�  Kuuj�  }�(j�  }�(j�  Mcj�  Kuj�  }�(j�  Mcj�  Kuuj   jM  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jB  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$nextOffset = $offset + $limit;�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jO  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�  /**
     * Advanced documentation search with filtering and pagination.
     *
     * @param string      $query       Search query to find in documentation
     * @param string|null $sdk         Filter by specific SDK (php, go, python, java, dotnet, js, laravel)
     * @param string      $search_type Type of search: content (default), class, method, or section
     * @param int         $limit       Maximum number of results to return (default: 10)
     * @param int         $offset      Pagination offset for results (default: 0)
     *
     * @throws RuntimeException If documentation index initialization fails
     *
     * @return string Markdown-formatted search results with pagination metadata
     */
    #[McpTool(name: 'search_documentation')]
    public function searchDocumentation(
        string $query,
        ?string $sdk = null,
        string $search_type = 'content',
        int $limit = 10,
        int $offset = 0,
    ): string {
        if ('' === trim($query)) {
            return '❌ Search query cannot be empty';
        }
        if (1 > $limit || 50 < $limit) {
            return '❌ Limit must be between 1 and 50';
        }
        if (0 > $offset) {
            return '❌ Offset cannot be negative';
        }
        $validSearchTypes = ['content', 'class', 'method', 'section'];
        if (! in_array($search_type, $validSearchTypes, true)) {
            return '❌ Invalid search_type. Must be one of: ' . implode(', ', $validSearchTypes);
        }
        $validSdks = ['php', 'go', 'python', 'java', 'dotnet', 'js', 'laravel', null];
        if (! in_array($sdk, $validSdks, true)) {
            return '❌ Invalid SDK. Must be one of: php, go, python, java, dotnet, js, laravel';
        }
        $index = DocumentationIndexSingleton::getInstance();
        if (! $index->isInitialized()) {
            $index->initialize();
        }
        // Get all results first for total count
        $allResults = $this->performSearch($index, $query, $sdk, $search_type);
        $totalResults = count($allResults);
        if (0 === $totalResults) {
            return "## Documentation Search Results
No results found for query: **{$query}**" .
                   (null !== $sdk ? sprintf(' (filtered by SDK: %s)', $sdk) : '') .
                   "\n\nTry:\n- Using different keywords\n- Checking spelling\n- Using broader search terms";
        }
        // Apply pagination
        $paginatedResults = array_slice($allResults, $offset, $limit);
        $currentPage = (int) floor($offset / $limit) + 1;
        $totalPages = (int) ceil($totalResults / $limit);
        // Build markdown response
        $markdown = "## Documentation Search Results\n\n";
        $markdown .= "**Query:** `{$query}`\n";
        if (null !== $sdk) {
            $markdown .= sprintf('**SDK Filter:** %s%s', $sdk, PHP_EOL);
        }
        $markdown .= sprintf('**Search Type:** %s%s', $search_type, PHP_EOL);
        $markdown .= '**Results:** Showing ' . ($offset + 1) . '-' . min($offset + $limit, $totalResults) . " of {$totalResults} total results\n";
        $markdown .= "**Page:** {$currentPage} of {$totalPages}\n\n";
        $markdown .= "---\n\n";
        foreach ($paginatedResults as $resultIndex => $result) {
            $resultNumber = $offset + (int) $resultIndex + 1;
            $markdown .= $this->formatSearchResult($result, $resultNumber);
        }
        // Add pagination info
        if (1 < $totalPages) {
            $markdown .= "\n---\n\n### Pagination\n\n";
            if (1 < $currentPage) {
                $prevOffset = max(0, $offset - $limit);
                $markdown .= sprintf('- **Previous page:** Use offset=%d%s', $prevOffset, PHP_EOL);
            }
            if ($currentPage < $totalPages) {
                $nextOffset = $offset + $limit;
                $markdown .= sprintf('- **Next page:** Use offset=%d%s', $nextOffset, PHP_EOL);
            }
        }
        return $markdown;
    }�u}�(j�  �calculateSimilarity�j�  Kj�  }�(j�  }�(j�  Mkj�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  Mrj�  Kuj�  }�(j�  Mrj�  K(uuj	  ]�(}�(j�  �	$content1�j�  K
j�  }�(j�  }�(j�  Mrj�  K)uj�  }�(j�  Mrj�  K9uuj�  }�(j�  }�(j�  Mrj�  K0uj�  }�(j�  Mrj�  K9uuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j\  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �*string $content1, string $content2): float�j�  ]�u}�(j�  �	$content2�j�  K
j�  }�(j�  }�(j�  Mrj�  K;uj�  }�(j�  Mrj�  KKuuj�  }�(j�  }�(j�  Mrj�  KBuj�  }�(j�  Mrj�  KKuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  ji  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php��      j�  j�  uj�  �string $content2): float�j�  ]�u}�(j�  �$terms1�j�  K
j�  }�(j�  }�(j�  Myj�  Kuj�  }�(j�  Myj�  Kuuj�  }�(j�  }�(j�  Myj�  Kuj�  }�(j�  Myj�  Kuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jv  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �,$terms1 = $this->extractKeyTerms($content1);�j�  ]�u}�(j�  �$terms2�j�  K
j�  }�(j�  }�(j�  Mzj�  Kuj�  }�(j�  Mzj�  Kuuj�  }�(j�  }�(j�  Mzj�  Kuj�  }�(j�  Mzj�  Kuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �,$terms2 = $this->extractKeyTerms($content2);�j�  ]�u}�(j�  �
$intersection�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �9$intersection = count(array_intersect($terms1, $terms2));�j�  ]�u}�(j�  �$union�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �<$union = count(array_unique(array_merge($terms1, $terms2)));�j�  ]�u}�(j�  �$jaccard�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �,$jaccard = (float) ($intersection / $union);�j�  ]�u}�(j�  �$phrases�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$phrases = [�j�  ]�u}�(j�  �$phraseBonus�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$phraseBonus = 0.0;�j�  ]�u}�(j�  �$phrase�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K$uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K$uuj   jQ  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �
$phrase) {�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jS  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X  /**
     * Calculate similarity between two pieces of content.
     *
     * @param  string $content1
     * @param  string $content2
     * @return float  Similarity score between 0 and 1
     */
    private function calculateSimilarity(string $content1, string $content2): float
    {
        if ('' === $content1 || '' === $content2) {
            return 0.0;
        }
        // Extract terms from both contents
        $terms1 = $this->extractKeyTerms($content1);
        $terms2 = $this->extractKeyTerms($content2);
        if ([] === $terms1 || [] === $terms2) {
            return 0.0;
        }
        // Calculate Jaccard similarity
        $intersection = count(array_intersect($terms1, $terms2));
        $union = count(array_unique(array_merge($terms1, $terms2)));
        // Union will always be at least 1 since we checked both term arrays are non-empty
        $jaccard = (float) ($intersection / $union);
        // Also check for exact phrase matches for higher similarity
        $phrases = [
            'authorization model',
            'permission check',
            'tuple creation',
            'relationship tuples',
            'access control',
            'openfga',
        ];
        $phraseBonus = 0.0;
        foreach ($phrases as $phrase) {
            if (false !== stripos($content1, $phrase) && false !== stripos($content2, $phrase)) {
                $phraseBonus += 0.1;
            }
        }
        // Combine scores (cap at 1.0)
        return min(1.0, $jaccard + $phraseBonus);
    }�u}�(j�  �extractCodeFromChunk�j�  Kj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K)uuj	  ]�(}�(j�  �$chunk�j�  K
j�  }�(j�  }�(j�  M�j�  K*uj�  }�(j�  M�j�  K6uuj�  }�(j�  }�(j�  M�j�  K0uj�  }�(j�  M�j�  K6uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �'array $chunk, ?string $language): array�j�  ]�u}�(j�  �	$language�j�  K
j�  }�(j�  }�(j�  M�j�  K8uj�  }�(j�  M�j�  KIuuj�  }�(j�  }�(j�  M�j�  K@uj�  }�(j�  M�j�  KIuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $language): array�j�  ]�u}�(j�  �$content�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �f$content = isset($chunk['content']) && is_scalar($chunk['content']) ? (string) $chunk['content'] : '';�j�  ]�u}�(j�  �	$examples�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$examples = [];�j�  ]�u}�(j�  �$pattern�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �&$pattern = '/```(\w+)?\n(.*?)\n```/s';�j�  ]�u}�(j�  �$result�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j,  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �G$result = preg_match_all($pattern, $content, $matches, PREG_SET_ORDER);�j�  ]�u}�(j�  �$match�j�  K
j�  }�(j�  }�(j�  M�j�  K!uj�  }�(j�  M�j�  K'uuj�  }�(j�  }�(j�  M�j�  K!uj�  }�(j�  M�j�  K'uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j9  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �	$match) {�j�  ]�u}�(j�  �	$codeLang�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jF  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$codeLang = $match[1];�j�  ]�u}�(j�  �$codeContent�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jS  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$codeContent = $match[2];�j�  ]�u}�(j�  �
$langMatch�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j`  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$langMatch = false;�j�  ]�u}�(j�  �
$langMatch�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jm  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �M$langMatch = 'php' === $codeLang || false !== stripos($codeContent, '<?php');�j�  ]�u}�(j�  �
$langMatch�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jz  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �L$langMatch = 'go' === $codeLang || false !== stripos($codeContent, 'func ');�j�  ]�u}�(j�  �
$langMatch�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �e$langMatch = 'python' === $codeLang || 'py' === $codeLang || false !== stripos($codeContent, 'def ');�j�  ]�u}�(j�  �
$langMatch�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �U$langMatch = 'java' === $codeLang || false !== stripos($codeContent, 'public class');�j�  ]�u}�(j�  �
$langMatch�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �g$langMatch = 'csharp' === $codeLang || 'cs' === $codeLang || false !== stripos($codeContent, 'using ');�j�  ]�u}�(j�  �
$langMatch�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �Q$langMatch = in_array($codeLang, ['javascript', 'js', 'typescript', 'ts'], true);�j�  ]�u}�(j�  �	$examples�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$examples[] = [�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X  /**
     * Extract code examples from a chunk.
     *
     * @param  array<string, mixed>        $chunk
     * @param  string|null                 $language
     * @return array<array<string, mixed>>
     */
    private function extractCodeFromChunk(array $chunk, ?string $language): array
    {
        $content = isset($chunk['content']) && is_scalar($chunk['content']) ? (string) $chunk['content'] : '';
        $examples = [];
        // Match code blocks with optional language specification
        $pattern = '/```(\w+)?\n(.*?)\n```/s';
        $result = preg_match_all($pattern, $content, $matches, PREG_SET_ORDER);
        if (false !== $result && 0 < $result) {
            foreach ($matches as $match) {
                // When preg_match_all succeeds with PREG_SET_ORDER, capture groups exist
                // Optional groups will be empty strings if they don't match
                /** @var array{0: string, 1: string, 2: string} $match */
                $codeLang = $match[1];
                $codeContent = $match[2];
                // Filter by language if specified
                if (null !== $language) {
                    $langMatch = false;
                    switch ($language) {
                        case 'php':
                            $langMatch = 'php' === $codeLang || false !== stripos($codeContent, '<?php');
                            break;
                        case 'go':
                            $langMatch = 'go' === $codeLang || false !== stripos($codeContent, 'func ');
                            break;
                        case 'python':
                            $langMatch = 'python' === $codeLang || 'py' === $codeLang || false !== stripos($codeContent, 'def ');
                            break;
                        case 'java':
                            $langMatch = 'java' === $codeLang || false !== stripos($codeContent, 'public class');
                            break;
                        case 'csharp':
                            $langMatch = 'csharp' === $codeLang || 'cs' === $codeLang || false !== stripos($codeContent, 'using ');
                            break;
                        case 'javascript':
                        case 'typescript':
                            $langMatch = in_array($codeLang, ['javascript', 'js', 'typescript', 'ts'], true);
                            break;
                    }
                    if (! $langMatch) {
                        continue;
                    }
                }
                $examples[] = [
                    'language' => '' !== $codeLang ? $codeLang : 'unknown',
                    'code' => $codeContent,
                    'context' => $this->extractContext($content, $match[0]),
                ];
            }
        }
        return $examples;
    }�u}�(j�  �extractContext�j�  Kj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K#uuj	  ]�(}�(j�  �$content�j�  K
j�  }�(j�  }�(j�  M�j�  K$uj�  }�(j�  M�j�  K3uuj�  }�(j�  }�(j�  M�j�  K+uj�  }�(j�  M�j�  K3uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �+string $content, string $codeBlock): string�j�  ]�u}�(j�  �
$codeBlock�j�  K
j�  }�(j�  }�(j�  M�j�  K5uj�  }�(j�  M�j�  KFuuj�  }�(j�  }�(j�  M�j�  K<uj�  }�(j�  M�j�  KFuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �string $codeBlock): string�j�  ]�u}�(j�  �	$position�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �)$position = strpos($content, $codeBlock);�j�  ]�u}�(j�  �$beforeStart�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �'$beforeStart = max(0, $position - 200);�j�  ]�u}�(j�  �$beforeText�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j		  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �G$beforeText = substr($content, $beforeStart, $position - $beforeStart);�j�  ]�u}�(j�  �$afterStart�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �-$afterStart = $position + strlen($codeBlock);�j�  ]�u}�(j�  �
$afterText�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j#	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �0$afterText = substr($content, $afterStart, 200);�j�  ]�u}�(j�  �$beforeText�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j0	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �B$beforeText = trim(preg_replace('/\s+/', ' ', $beforeText) ?? '');�j�  ]�u}�(j�  �
$afterText�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j=	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �@$afterText = trim(preg_replace('/\s+/', ' ', $afterText) ?? '');�j�  ]�u}�(j�  �$context�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jJ	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$context = '';�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  Xn  /**
     * Extract context around code.
     *
     * @param string $content
     * @param string $codeBlock
     */
    private function extractContext(string $content, string $codeBlock): string
    {
        $position = strpos($content, $codeBlock);
        if (false === $position) {
            return '';
        }
        // Get text before the code block (up to 200 chars)
        $beforeStart = max(0, $position - 200);
        $beforeText = substr($content, $beforeStart, $position - $beforeStart);
        // Get text after the code block (up to 200 chars)
        $afterStart = $position + strlen($codeBlock);
        $afterText = substr($content, $afterStart, 200);
        // Clean up and combine
        $beforeText = trim(preg_replace('/\s+/', ' ', $beforeText) ?? '');
        $afterText = trim(preg_replace('/\s+/', ' ', $afterText) ?? '');
        $context = '';
        if ('' !== $beforeText) {
            $context .= '...' . $beforeText;
        }
        $context .= ' [CODE] ';
        if ('' !== $afterText) {
            $context .= $afterText . '...';
        }
        return trim($context);
    }�u}�(j�  �extractKeyTerms�j�  Kj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  M@j�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  K$uuj	  ]�(}�(j�  �$content�j�  K
j�  }�(j�  }�(j�  Mj�  K%uj�  }�(j�  Mj�  K4uuj�  }�(j�  }�(j�  Mj�  K,uj�  }�(j�  Mj�  K4uuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jd	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �string $content): array�j�  ]�u}�(j�  �
$cleanContent�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jq	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?$cleanContent = preg_replace('/```[\s\S]*?```/', '', $content);�j�  ]�u}�(j�  �
$cleanContent�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j~	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$cleanContent ??= '';�j�  ]�u}�(j�  �
$cleanContent�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �E$cleanContent = preg_replace('/[^a-zA-Z0-9\s]/', ' ', $cleanContent);�j�  ]�u}�(j�  �
$cleanContent�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$cleanContent ??= '';�j�  ]�u}�(j�  �$words�j�  K
j�  }�(j�  }�(j�  M!j�  Kuj�  }�(j�  M!j�  Kuuj�  }�(j�  }�(j�  M!j�  Kuj�  }�(j�  M!j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �8$words = preg_split('/\s+/', strtolower($cleanContent));�j�  ]�u}�(j�  �$words�j�  K
j�  }�(j�  }�(j�  M"j�  Kuj�  }�(j�  M"j�  Kuuj�  }�(j�  }�(j�  M"j�  Kuj�  }�(j�  M"j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �($words = false !== $words ? $words : [];�j�  ]�u}�(j�  �
$stopWords�j�  K
j�  }�(j�  }�(j�  M%j�  Kuj�  }�(j�  M%j�  Kuuj�  }�(j�  }�(j�  M%j�  Kuj�  }�(j�  M%j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�  $stopWords = ['the', 'is', 'at', 'which', 'on', 'and', 'a', 'an', 'as', 'are', 'was', 'were', 'been', 'be', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'can', 'this', 'that', 'these', 'those', 'i', 'you', 'he', 'she', 'it', 'we', 'they', 'what', 'which', 'who', 'when', 'where', 'why', 'how', 'all', 'each', 'every', 'both', 'few', 'more', 'most', 'other', 'some', 'such', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'in', 'of', 'to', 'for', 'with', 'from', 'up', 'out', 'if', 'about', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'between', 'under', 'again', 'further', 'then', 'once'];�j�  ]�u}�(j�  �$termCounts�j�  K
j�  }�(j�  }�(j�  M'j�  Kuj�  }�(j�  M'j�  Kuuj�  }�(j�  }�(j�  M'j�  Kuj�  }�(j�  M'j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$termCounts = [];�j�  ]�u}�(j�  �$word�j�  K
j�  }�(j�  }�(j�  M)j�  Kuj�  }�(j�  M)j�  K uuj�  }�(j�  }�(j�  M)j�  Kuj�  }�(j�  M)j�  K uuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$word) {�j�  ]�u}�(j�  �$termCounts�j�  K
j�  }�(j�  }�(j�  M,j�  Kuj�  }�(j�  M,j�  Kuuj�  }�(j�  }�(j�  M,j�  Kuj�  }�(j�  M,j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$termCounts[$word] = 0;�j�  ]�u}�(j�  �$word�j�  K
j�  }�(j�  }�(j�  M,j�  K uj�  }�(j�  M,j�  K%uuj�  }�(j�  }�(j�  M,j�  K uj�  }�(j�  M,j�  K%uuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$word] = 0;�j�  ]�u}�(j�  �	$keyTerms�j�  K
j�  }�(j�  }�(j�  M4j�  Kuj�  }�(j�  M4j�  Kuuj�  }�(j�  }�(j�  M4j�  Kuj�  }�(j�  M4j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j 
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �8$keyTerms = array_keys(array_slice($termCounts, 0, 10));�j�  ]�u}�(j�  �
$openfgaTerms�j�  K
j�  }�(j�  }�(j�  M7j�  Kuj�  }�(j�  M7j�  Kuuj�  }�(j�  }�(j�  M7j�  Kuj�  }�(j�  M7j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  ��$openfgaTerms = ['openfga', 'authorization', 'permission', 'tuple', 'relation', 'check', 'expand', 'store', 'model', 'user', 'object'];�j�  ]�u}�(j�  �$openfgaTerm�j�  K
j�  }�(j�  }�(j�  M9j�  K"uj�  }�(j�  M9j�  K.uuj�  }�(j�  }�(j�  M9j�  K"uj�  }�(j�  M9j�  K.uuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$openfgaTerm) {�j�  ]�u}�(j�  �	$keyTerms�j�  K
j�  }�(j�  }�(j�  M;j�  Kuj�  }�(j�  M;j�  Kuuj�  }�(j�  }�(j�  M;j�  Kuj�  }�(j�  M;j�  Kuuj   jY	  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j'
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$keyTerms[] = $openfgaTerm;�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j[	  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�  /**
     * Extract key terms from content for similarity matching.
     *
     * @param  string        $content
     * @return array<string>
     */
    private function extractKeyTerms(string $content): array
    {
        // Remove code blocks and special characters
        $cleanContent = preg_replace('/```[\s\S]*?```/', '', $content);
        $cleanContent ??= '';
        $cleanContent = preg_replace('/[^a-zA-Z0-9\s]/', ' ', $cleanContent);
        $cleanContent ??= '';
        // Extract words
        $words = preg_split('/\s+/', strtolower($cleanContent));
        $words = false !== $words ? $words : [];
        // Filter out common words and short words
        $stopWords = ['the', 'is', 'at', 'which', 'on', 'and', 'a', 'an', 'as', 'are', 'was', 'were', 'been', 'be', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'can', 'this', 'that', 'these', 'those', 'i', 'you', 'he', 'she', 'it', 'we', 'they', 'what', 'which', 'who', 'when', 'where', 'why', 'how', 'all', 'each', 'every', 'both', 'few', 'more', 'most', 'other', 'some', 'such', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'in', 'of', 'to', 'for', 'with', 'from', 'up', 'out', 'if', 'about', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'between', 'under', 'again', 'further', 'then', 'once'];
        $termCounts = [];
        foreach ($words as $word) {
            if (2 < strlen($word) && ! in_array($word, $stopWords, true)) {
                if (! isset($termCounts[$word])) {
                    $termCounts[$word] = 0;
                }
                ++$termCounts[$word];
            }
        }
        // Sort by frequency and take top terms
        arsort($termCounts);
        $keyTerms = array_keys(array_slice($termCounts, 0, 10));
        // Add OpenFGA-specific terms if present
        $openfgaTerms = ['openfga', 'authorization', 'permission', 'tuple', 'relation', 'check', 'expand', 'store', 'model', 'user', 'object'];
        foreach ($openfgaTerms as $openfgaTerm) {
            if (false !== stripos($content, $openfgaTerm) && ! in_array($openfgaTerm, $keyTerms, true)) {
                $keyTerms[] = $openfgaTerm;
            }
        }
        return array_slice($keyTerms, 0, 15);
    }�u}�(j�  �formatCodeExample�j�  Kj�  }�(j�  }�(j�  MBj�  Kuj�  }�(j�  Mvj�  Kuuj�  }�(j�  }�(j�  MIj�  Kuj�  }�(j�  MIj�  K&uuj	  ]�(}�(j�  �$example�j�  K
j�  }�(j�  }�(j�  MIj�  K'uj�  }�(j�  MIj�  K5uuj�  }�(j�  }�(j�  MIj�  K-uj�  }�(j�  MIj�  K5uuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jA
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �:array $example, int $number, bool $includeContext): string�j�  ]�u}�(j�  �$number�j�  K
j�  }�(j�  }�(j�  MIj�  K7uj�  }�(j�  MIj�  KBuuj�  }�(j�  }�(j�  MIj�  K;uj�  }�(j�  MIj�  KBuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jN
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �*int $number, bool $includeContext): string�j�  ]�u}�(j�  �$includeContext�j�  K
j�  }�(j�  }�(j�  MIj�  KDuj�  }�(j�  MIj�  KXuuj�  }�(j�  }�(j�  MIj�  KIuj�  }�(j�  MIj�  KXuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j[
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �bool $includeContext): string�j�  ]�u}�(j�  �	$markdown�j�  K
j�  }�(j�  }�(j�  MKj�  Kuj�  }�(j�  MKj�  Kuuj�  }�(j�  }�(j�  MKj�  Kuj�  }�(j�  MKj�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jh
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �($markdown = "### Example {$number}\n\n";�j�  ]�u}�(j�  �$chunk�j�  K
j�  }�(j�  }�(j�  MMj�  Kuj�  }�(j�  MMj�  Kuuj�  }�(j�  }�(j�  MMj�  Kuj�  }�(j�  MMj�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  ju
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �Z$chunk = isset($example['chunk']) && is_array($example['chunk']) ? $example['chunk'] : [];�j�  ]�u}�(j�  �	$chunkSdk�j�  K
j�  }�(j�  }�(j�  MQj�  Kuj�  }�(j�  MQj�  Kuuj�  }�(j�  }�(j�  MQj�  Kuj�  }�(j�  MQj�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �C$chunkSdk = is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : '';�j�  ]�u}�(j�  �	$metadata�j�  K
j�  }�(j�  }�(j�  MVj�  Kuj�  }�(j�  MVj�  Kuuj�  }�(j�  }�(j�  MVj�  Kuj�  }�(j�  MVj�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �`$metadata = isset($chunk['metadata']) && is_array($chunk['metadata']) ? $chunk['metadata'] : [];�j�  ]�u}�(j�  �$chunkClass�j�  K
j�  }�(j�  }�(j�  MYj�  Kuj�  }�(j�  MYj�  Kuuj�  }�(j�  }�(j�  MYj�  Kuj�  }�(j�  MYj�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �O$chunkClass = is_scalar($metadata['class']) ? (string) $metadata['class'] : '';�j�  ]�u}�(j�  �$chunkMethod�j�  K
j�  }�(j�  }�(j�  M]j�  Kuj�  }�(j�  M]j�  Kuuj�  }�(j�  }�(j�  M]j�  Kuj�  }�(j�  M]j�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �R$chunkMethod = is_scalar($metadata['method']) ? (string) $metadata['method'] : '';�j�  ]�u}�(j�  �$exampleLang�j�  K
j�  }�(j�  }�(j�  Mdj�  Kuj�  }�(j�  Mdj�  Kuuj�  }�(j�  }�(j�  Mdj�  Kuj�  }�(j�  Mdj�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �T$exampleLang = is_scalar($example['language']) ? (string) $example['language'] : '';�j�  ]�u}�(j�  �$context�j�  K
j�  }�(j�  }�(j�  Mlj�  Kuj�  }�(j�  Mlj�  Kuuj�  }�(j�  }�(j�  Mlj�  Kuj�  }�(j�  Mlj�  Kuuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �N$context = is_scalar($example['context']) ? (string) $example['context'] : '';�j�  ]�u}�(j�  �$lang�j�  K
j�  }�(j�  }�(j�  Mqj�  Kuj�  }�(j�  Mqj�  K
uuj�  }�(j�  }�(j�  Mqj�  Kuj�  }�(j�  Mqj�  K
uuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �l$lang = isset($example['language']) && is_scalar($example['language']) ? (string) $example['language'] : '';�j�  ]�u}�(j�  �$code�j�  K
j�  }�(j�  }�(j�  Mrj�  Kuj�  }�(j�  Mrj�  K
uuj�  }�(j�  }�(j�  Mrj�  Kuj�  }�(j�  Mrj�  K
uuj   j6
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �`$code = isset($example['code']) && is_scalar($example['code']) ? (string) $example['code'] : '';�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j8
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X:	  /**
     * Format a code example as markdown.
     *
     * @param array<string, mixed> $example
     * @param int                  $number
     * @param bool                 $includeContext
     */
    private function formatCodeExample(array $example, int $number, bool $includeContext): string
    {
        $markdown = "### Example {$number}\n\n";
        $chunk = isset($example['chunk']) && is_array($example['chunk']) ? $example['chunk'] : [];
        // Add metadata
        if (isset($chunk['sdk']) && '' !== $chunk['sdk']) {
            $chunkSdk = is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : '';
            $markdown .= "**SDK:** `{$chunkSdk}`  \n";
        }
        // Access class and method from metadata
        $metadata = isset($chunk['metadata']) && is_array($chunk['metadata']) ? $chunk['metadata'] : [];
        if (isset($metadata['class']) && '' !== $metadata['class']) {
            $chunkClass = is_scalar($metadata['class']) ? (string) $metadata['class'] : '';
            $markdown .= sprintf('**Class:** `%s`', $chunkClass);
            if (isset($metadata['method']) && '' !== $metadata['method']) {
                $chunkMethod = is_scalar($metadata['method']) ? (string) $metadata['method'] : '';
                $markdown .= sprintf(' **Method:** `%s`', $chunkMethod);
            }
            $markdown .= "  \n";
        }
        if (isset($example['language']) && '' !== $example['language'] && 'unknown' !== $example['language']) {
            $exampleLang = is_scalar($example['language']) ? (string) $example['language'] : '';
            $markdown .= "**Language:** `{$exampleLang}`  \n";
        }
        $markdown .= "\n";
        // Add context if requested
        if ($includeContext && isset($example['context']) && '' !== $example['context']) {
            $context = is_scalar($example['context']) ? (string) $example['context'] : '';
            $markdown .= "**Context:**\n> " . str_replace('[CODE]', '*(see code below)*', $context) . "\n\n";
        }
        // Add code
        $lang = isset($example['language']) && is_scalar($example['language']) ? (string) $example['language'] : '';
        $code = isset($example['code']) && is_scalar($example['code']) ? (string) $example['code'] : '';
        $markdown .= "```{$lang}\n{$code}\n```\n";
        return $markdown . "\n---\n\n";
    }�u}�(j�  �formatSearchResult�j�  Kj�  }�(j�  }�(j�  Mxj�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M~j�  Kuj�  }�(j�  M~j�  K'uuj	  ]�(}�(j�  �$result�j�  K
j�  }�(j�  }�(j�  M~j�  K(uj�  }�(j�  M~j�  K5uuj�  }�(j�  }�(j�  M~j�  K.uj�  }�(j�  M~j�  K5uuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �#array $result, int $number): string�j�  ]�u}�(j�  �$number�j�  K
j�  }�(j�  }�(j�  M~j�  K7uj�  }�(j�  M~j�  KBuuj�  }�(j�  }�(j�  M~j�  K;uj�  }�(j�  M~j�  KBuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �int $number): string�j�  ]�u}�(j�  �	$markdown�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �)$markdown = sprintf('### %d. ', $number);�j�  ]�u}�(j�  �$title�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$title = '';�j�  ]�u}�(j�  �	$metadata�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j+  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �c$metadata = isset($result['metadata']) && is_array($result['metadata']) ? $result['metadata'] : [];�j�  ]�u}�(j�  �$sdkName�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j8  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �D$sdkName = is_scalar($result['sdk']) ? (string) $result['sdk'] : '';�j�  ]�u}�(j�  �$sourceName�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jE  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �M$sourceName = is_scalar($result['source']) ? (string) $result['source'] : '';�j�  ]�u}�(j�  �$scoreValue�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jR  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �L$scoreValue = is_numeric($result['score']) ? (float) $result['score'] : 0.0;�j�  ]�u}�(j�  �$preview�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j_  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �L$preview = is_scalar($result['preview']) ? (string) $result['preview'] : '';�j�  ]�u}�(j�  �$preview�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jl  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �,$preview = substr($preview, 0, 497) . '...';�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jy  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �`$sdk = isset($result['sdk']) && is_scalar($result['sdk']) ? (string) $result['sdk'] : 'unknown';�j�  ]�u}�(j�  �$id�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �n$id = isset($result['chunk_id']) && is_scalar($result['chunk_id']) ? (string) $result['chunk_id'] : 'unknown';�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�
  /**
     * Format a search result as markdown.
     *
     * @param array<string, mixed> $result
     * @param int                  $number
     */
    private function formatSearchResult(array $result, int $number): string
    {
        $markdown = sprintf('### %d. ', $number);
        // Build title based on available metadata
        $title = '';
        $metadata = isset($result['metadata']) && is_array($result['metadata']) ? $result['metadata'] : [];
        if (isset($metadata['class']) && '' !== $metadata['class']) {
            $title .= is_scalar($metadata['class']) ? (string) $metadata['class'] : '';
            if (isset($metadata['method']) && '' !== $metadata['method']) {
                $title .= '::' . (is_scalar($metadata['method']) ? (string) $metadata['method'] : '');
            }
        } elseif (isset($metadata['section']) && '' !== $metadata['section']) {
            $title .= is_scalar($metadata['section']) ? (string) $metadata['section'] : '';
        } else {
            $title .= 'Documentation Chunk';
        }
        $markdown .= $title . "\n\n";
        // Add metadata
        if (isset($result['sdk']) && '' !== $result['sdk']) {
            $sdkName = is_scalar($result['sdk']) ? (string) $result['sdk'] : '';
            $markdown .= "**SDK:** `{$sdkName}`  \n";
        }
        if (isset($result['source']) && '' !== $result['source']) {
            $sourceName = is_scalar($result['source']) ? (string) $result['source'] : '';
            $markdown .= "**Source:** `{$sourceName}`  \n";
        }
        if (isset($result['score']) && 0.0 !== $result['score']) {
            $scoreValue = is_numeric($result['score']) ? (float) $result['score'] : 0.0;
            $markdown .= '**Relevance:** ' . (string) round($scoreValue * 100.0) . "%  \n";
        }
        $markdown .= "\n";
        // Add preview
        if (isset($result['preview']) && '' !== $result['preview']) {
            $preview = is_scalar($result['preview']) ? (string) $result['preview'] : '';
            // Limit preview length
            if (500 < strlen($preview)) {
                $preview = substr($preview, 0, 497) . '...';
            }
            $markdown .= "**Preview:**\n```\n{$preview}\n```\n";
        }
        // Add navigation
        if (isset($result['chunk_id']) && '' !== $result['chunk_id']) {
            $sdk = isset($result['sdk']) && is_scalar($result['sdk']) ? (string) $result['sdk'] : 'unknown';
            $id = isset($result['chunk_id']) && is_scalar($result['chunk_id']) ? (string) $result['chunk_id'] : 'unknown';
            $markdown .= "\n**Reference:** `{$sdk}::{$id}`\n";
        }
        return $markdown . "\n---\n\n";
    }�u}�(j�  �formatSimilarResult�j�  Kj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K(uuj	  ]�(}�(j�  �$chunk�j�  K
j�  }�(j�  }�(j�  M�j�  K)uj�  }�(j�  M�j�  K5uuj�  }�(j�  }�(j�  M�j�  K/uj�  }�(j�  M�j�  K5uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �"array $chunk, int $number): string�j�  ]�u}�(j�  �$number�j�  K
j�  }�(j�  }�(j�  M�j�  K7uj�  }�(j�  M�j�  KBuuj�  }�(j�  }�(j�  M�j�  K;uj�  }�(j�  M�j�  KBuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �int $number): string�j�  ]�u}�(j�  �	$markdown�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �)$markdown = sprintf('### %d. ', $number);�j�  ]�u}�(j�  �$title�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$title = '';�j�  ]�u}�(j�  �	$metadata�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �`$metadata = isset($chunk['metadata']) && is_array($chunk['metadata']) ? $chunk['metadata'] : [];�j�  ]�u}�(j�  �$chunkSdkValue�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �H$chunkSdkValue = is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : '';�j�  ]�u}�(j�  �	$simScore�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �R$simScore = is_numeric($chunk['similarity']) ? (float) $chunk['similarity'] : 0.0;�j�  ]�u}�(j�  �$sourceValue�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �L$sourceValue = is_scalar($chunk['source']) ? (string) $chunk['source'] : '';�j�  ]�u}�(j�  �$preview�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �J$preview = is_scalar($chunk['content']) ? (string) $chunk['content'] : '';�j�  ]�u}�(j�  �$preview�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �,$preview = substr($preview, 0, 797) . '...';�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j"  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �]$sdk = isset($chunk['sdk']) && is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : 'unknown';�j�  ]�u}�(j�  �$id�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j/  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �k$id = isset($chunk['chunk_id']) && is_scalar($chunk['chunk_id']) ? (string) $chunk['chunk_id'] : 'unknown';�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X�
  /**
     * Format a similar documentation result as markdown.
     *
     * @param array<string, mixed> $chunk
     * @param int                  $number
     */
    private function formatSimilarResult(array $chunk, int $number): string
    {
        $markdown = sprintf('### %d. ', $number);
        // Build title
        $title = '';
        $metadata = isset($chunk['metadata']) && is_array($chunk['metadata']) ? $chunk['metadata'] : [];
        if (isset($metadata['class']) && '' !== $metadata['class']) {
            $title .= is_scalar($metadata['class']) ? (string) $metadata['class'] : '';
            if (isset($metadata['method']) && '' !== $metadata['method']) {
                $title .= '::' . (is_scalar($metadata['method']) ? (string) $metadata['method'] : '');
            }
        } elseif (isset($metadata['section']) && '' !== $metadata['section']) {
            $title .= is_scalar($metadata['section']) ? (string) $metadata['section'] : '';
        } else {
            $title .= 'Related Documentation';
        }
        $markdown .= $title . "\n\n";
        // Add metadata
        if (isset($chunk['sdk']) && '' !== $chunk['sdk']) {
            $chunkSdkValue = is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : '';
            $markdown .= "**SDK:** `{$chunkSdkValue}`  \n";
        }
        if (isset($chunk['similarity']) && 0.0 !== $chunk['similarity']) {
            $simScore = is_numeric($chunk['similarity']) ? (float) $chunk['similarity'] : 0.0;
            $markdown .= '**Similarity Score:** ' . (string) round($simScore * 100.0) . "%  \n";
        }
        if (isset($chunk['source']) && '' !== $chunk['source']) {
            $sourceValue = is_scalar($chunk['source']) ? (string) $chunk['source'] : '';
            $markdown .= "**Source:** `{$sourceValue}`  \n";
        }
        $markdown .= "\n";
        // Add content preview
        if (isset($chunk['content']) && '' !== $chunk['content']) {
            $preview = is_scalar($chunk['content']) ? (string) $chunk['content'] : '';
            // Limit preview length
            if (800 < strlen($preview)) {
                $preview = substr($preview, 0, 797) . '...';
            }
            $markdown .= "**Content:**\n\n" . $preview . "\n";
        }
        // Add reference
        if (isset($chunk['chunk_id']) && '' !== $chunk['chunk_id']) {
            $sdk = isset($chunk['sdk']) && is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : 'unknown';
            $id = isset($chunk['chunk_id']) && is_scalar($chunk['chunk_id']) ? (string) $chunk['chunk_id'] : 'unknown';
            $markdown .= "\n**Reference:** `{$sdk}::{$id}`\n";
        }
        return $markdown . "\n---\n\n";
    }�u}�(j�  �getChunkContent�j�  Kj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  K$uuj	  ]�(}�(j�  �$chunkId�j�  K
j�  }�(j�  }�(j�  Mj�  K%uj�  }�(j�  Mj�  K4uuj�  }�(j�  }�(j�  Mj�  K,uj�  }�(j�  Mj�  K4uuj   j>  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jI  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �3string $chunkId, DocumentationIndex $index): string�j�  ]�u}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  Mj�  K6uj�  }�(j�  Mj�  KOuuj�  }�(j�  }�(j�  Mj�  KIuj�  }�(j�  Mj�  KOuuj   j>  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jV  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �"DocumentationIndex $index): string�j�  ]�u}�(j�  �$chunk�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   j>  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jc  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �($chunk = $index->getChunkById($chunkId);�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j@  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X  /**
     * Get the full content of a chunk by its ID.
     *
     * @param string             $chunkId
     * @param DocumentationIndex $index
     */
    private function getChunkContent(string $chunkId, DocumentationIndex $index): string
    {
        // For now, we'll use the chunk ID to get content
        // In a real implementation, we'd fetch this from the index
        $chunk = $index->getChunkById($chunkId);
        if (null === $chunk) {
            return '';
        }
        return $chunk['content'] ?? '';
    }�u}�(j�  �mapLanguageToSdk�j�  Kj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  M'j�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  K%uuj	  ]�(}�(j�  �	$language�j�  K
j�  }�(j�  }�(j�  Mj�  K&uj�  }�(j�  Mj�  K7uuj�  }�(j�  }�(j�  Mj�  K.uj�  }�(j�  Mj�  K7uuj   jr  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j}  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $language): ?string�j�  ]�u}�(j�  �$mapping�j�  K
j�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj�  }�(j�  }�(j�  Mj�  Kuj�  }�(j�  Mj�  Kuuj   jr  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$mapping = [�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jt  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X  /**
     * Map programming language to SDK.
     *
     * @param string|null $language
     */
    private function mapLanguageToSdk(?string $language): ?string
    {
        if (null === $language) {
            return null;
        }
        $mapping = [
            'php' => 'php',
            'go' => 'go',
            'python' => 'python',
            'java' => 'java',
            'csharp' => 'dotnet',
            'javascript' => 'js',
            'typescript' => 'js',
        ];
        return $mapping[$language] ?? null;
    }�u}�(j�  �
performSearch�j�  Kj�  }�(j�  }�(j�  M)j�  Kuj�  }�(j�  M=j�  Kuuj�  }�(j�  }�(j�  M5j�  Kuj�  }�(j�  M5j�  K"uuj	  ]�(}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  M5j�  K#uj�  }�(j�  M5j�  K<uuj�  }�(j�  }�(j�  M5j�  K6uj�  }�(j�  M5j�  K<uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �RDocumentationIndex $index, string $query, ?string $sdk, string $searchType): array�j�  ]�u}�(j�  �$query�j�  K
j�  }�(j�  }�(j�  M5j�  K>uj�  }�(j�  M5j�  KKuuj�  }�(j�  }�(j�  M5j�  KEuj�  }�(j�  M5j�  KKuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �7string $query, ?string $sdk, string $searchType): array�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  M5j�  KMuj�  }�(j�  M5j�  KYuuj�  }�(j�  }�(j�  M5j�  KUuj�  }�(j�  M5j�  KYuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �(?string $sdk, string $searchType): array�j�  ]�u}�(j�  �$searchType�j�  K
j�  }�(j�  }�(j�  M5j�  K[uj�  }�(j�  M5j�  Kmuuj�  }�(j�  }�(j�  M5j�  Kbuj�  }�(j�  M5j�  Kmuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �string $searchType): array�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  X
  /**
     * Perform search based on search type.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     * @param string             $searchType
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function performSearch(DocumentationIndex $index, string $query, ?string $sdk, string $searchType): array
    {
        return match ($searchType) {
            'class' => $this->searchForClasses($index, $query, $sdk),
            'method' => $this->searchForMethods($index, $query, $sdk),
            'section' => $this->searchForSections($index, $query, $sdk),
            default => $index->searchChunks($query, $sdk),
        };
    }�u}�(j�  �searchForClasses�j�  Kj�  }�(j�  }�(j�  M?j�  Kuj�  }�(j�  MXj�  Kuuj�  }�(j�  }�(j�  MJj�  Kuj�  }�(j�  MJj�  K%uuj	  ]�(}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  MJj�  K&uj�  }�(j�  MJj�  K?uuj�  }�(j�  }�(j�  MJj�  K9uj�  }�(j�  MJj�  K?uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �>DocumentationIndex $index, string $query, ?string $sdk): array�j�  ]�u}�(j�  �$query�j�  K
j�  }�(j�  }�(j�  MJj�  KAuj�  }�(j�  MJj�  KNuuj�  }�(j�  }�(j�  MJj�  KHuj�  }�(j�  MJj�  KNuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �#string $query, ?string $sdk): array�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  MJj�  KPuj�  }�(j�  MJj�  K\uuj�  }�(j�  }�(j�  MJj�  KXuj�  }�(j�  MJj�  K\uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $sdk): array�j�  ]�u}�(j�  �
$allChunks�j�  K
j�  }�(j�  }�(j�  MLj�  Kuj�  }�(j�  MLj�  Kuuj�  }�(j�  }�(j�  MLj�  Kuj�  }�(j�  MLj�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �0$allChunks = $index->searchChunks($query, $sdk);�j�  ]�u}�(j�  �
$classResults�j�  K
j�  }�(j�  }�(j�  MMj�  Kuj�  }�(j�  MMj�  Kuuj�  }�(j�  }�(j�  MMj�  Kuj�  }�(j�  MMj�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$classResults = [];�j�  ]�u}�(j�  �	$allChunk�j�  K
j�  }�(j�  }�(j�  MOj�  Kuj�  }�(j�  MOj�  K(uuj�  }�(j�  }�(j�  MOj�  Kuj�  }�(j�  MOj�  K(uuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j&
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$allChunk) {�j�  ]�u}�(j�  �	$metadata�j�  K
j�  }�(j�  }�(j�  MPj�  Kuj�  }�(j�  MPj�  Kuuj�  }�(j�  }�(j�  MPj�  Kuj�  }�(j�  MPj�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j3
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php��L      j�  j�  uj�  �"$metadata = $allChunk['metadata'];�j�  ]�u}�(j�  �
$classResults�j�  K
j�  }�(j�  }�(j�  MSj�  Kuj�  }�(j�  MSj�  Kuuj�  }�(j�  }�(j�  MSj�  Kuj�  }�(j�  MSj�  Kuuj   j�  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j@
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$classResults[] = $allChunk;�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  XE  /**
     * Search specifically for classes.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function searchForClasses(DocumentationIndex $index, string $query, ?string $sdk): array
    {
        $allChunks = $index->searchChunks($query, $sdk);
        $classResults = [];
        foreach ($allChunks as $allChunk) {
            $metadata = $allChunk['metadata'];
            if (isset($metadata['class']) && '' !== $metadata['class'] && is_scalar($metadata['class']) && false !== stripos((string) $metadata['class'], $query)) {
                $classResults[] = $allChunk;
            }
        }
        return $classResults;
    }�u}�(j�  �searchForMethods�j�  Kj�  }�(j�  }�(j�  MZj�  Kuj�  }�(j�  Msj�  Kuuj�  }�(j�  }�(j�  Mej�  Kuj�  }�(j�  Mej�  K%uuj	  ]�(}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  Mej�  K&uj�  }�(j�  Mej�  K?uuj�  }�(j�  }�(j�  Mej�  K9uj�  }�(j�  Mej�  K?uuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jZ
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �>DocumentationIndex $index, string $query, ?string $sdk): array�j�  ]�u}�(j�  �$query�j�  K
j�  }�(j�  }�(j�  Mej�  KAuj�  }�(j�  Mej�  KNuuj�  }�(j�  }�(j�  Mej�  KHuj�  }�(j�  Mej�  KNuuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jg
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �#string $query, ?string $sdk): array�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  Mej�  KPuj�  }�(j�  Mej�  K\uuj�  }�(j�  }�(j�  Mej�  KXuj�  }�(j�  Mej�  K\uuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jt
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $sdk): array�j�  ]�u}�(j�  �
$allChunks�j�  K
j�  }�(j�  }�(j�  Mgj�  Kuj�  }�(j�  Mgj�  Kuuj�  }�(j�  }�(j�  Mgj�  Kuj�  }�(j�  Mgj�  Kuuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �0$allChunks = $index->searchChunks($query, $sdk);�j�  ]�u}�(j�  �$methodResults�j�  K
j�  }�(j�  }�(j�  Mhj�  Kuj�  }�(j�  Mhj�  Kuuj�  }�(j�  }�(j�  Mhj�  Kuj�  }�(j�  Mhj�  Kuuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$methodResults = [];�j�  ]�u}�(j�  �	$allChunk�j�  K
j�  }�(j�  }�(j�  Mjj�  Kuj�  }�(j�  Mjj�  K(uuj�  }�(j�  }�(j�  Mjj�  Kuj�  }�(j�  Mjj�  K(uuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$allChunk) {�j�  ]�u}�(j�  �	$metadata�j�  K
j�  }�(j�  }�(j�  Mkj�  Kuj�  }�(j�  Mkj�  Kuuj�  }�(j�  }�(j�  Mkj�  Kuj�  }�(j�  Mkj�  Kuuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �"$metadata = $allChunk['metadata'];�j�  ]�u}�(j�  �$methodResults�j�  K
j�  }�(j�  }�(j�  Mnj�  Kuj�  }�(j�  Mnj�  Kuuj�  }�(j�  }�(j�  Mnj�  Kuj�  }�(j�  Mnj�  Kuuj   jO
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$methodResults[] = $allChunk;�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  jQ
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  XL  /**
     * Search specifically for methods.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function searchForMethods(DocumentationIndex $index, string $query, ?string $sdk): array
    {
        $allChunks = $index->searchChunks($query, $sdk);
        $methodResults = [];
        foreach ($allChunks as $allChunk) {
            $metadata = $allChunk['metadata'];
            if (isset($metadata['method']) && '' !== $metadata['method'] && is_scalar($metadata['method']) && false !== stripos((string) $metadata['method'], $query)) {
                $methodResults[] = $allChunk;
            }
        }
        return $methodResults;
    }�u}�(j�  �searchForSections�j�  Kj�  }�(j�  }�(j�  Muj�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K&uuj	  ]�(}�(j�  �$index�j�  K
j�  }�(j�  }�(j�  M�j�  K'uj�  }�(j�  M�j�  K@uuj�  }�(j�  }�(j�  M�j�  K:uj�  }�(j�  M�j�  K@uuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �>DocumentationIndex $index, string $query, ?string $sdk): array�j�  ]�u}�(j�  �$query�j�  K
j�  }�(j�  }�(j�  M�j�  KBuj�  }�(j�  M�j�  KOuuj�  }�(j�  }�(j�  M�j�  KIuj�  }�(j�  M�j�  KOuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �#string $query, ?string $sdk): array�j�  ]�u}�(j�  �$sdk�j�  K
j�  }�(j�  }�(j�  M�j�  KQuj�  }�(j�  M�j�  K]uuj�  }�(j�  }�(j�  M�j�  KYuj�  }�(j�  M�j�  K]uuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �?string $sdk): array�j�  ]�u}�(j�  �
$allChunks�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �0$allChunks = $index->searchChunks($query, $sdk);�j�  ]�u}�(j�  �$sectionResults�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$sectionResults = [];�j�  ]�u}�(j�  �	$allChunk�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K(uuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  K(uuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$allChunk) {�j�  ]�u}�(j�  �	$metadata�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �"$metadata = $allChunk['metadata'];�j�  ]�u}�(j�  �$sectionResults�j�  K
j�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj�  }�(j�  }�(j�  M�j�  Kuj�  }�(j�  M�j�  Kuuj   j�
  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j*  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  �$sectionResults[] = $allChunk;�j�  ]�uej   j  j�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�
  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  XU  /**
     * Search specifically for sections.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function searchForSections(DocumentationIndex $index, string $query, ?string $sdk): array
    {
        $allChunks = $index->searchChunks($query, $sdk);
        $sectionResults = [];
        foreach ($allChunks as $allChunk) {
            $metadata = $allChunk['metadata'];
            if (isset($metadata['section']) && '' !== $metadata['section'] && is_scalar($metadata['section']) && false !== stripos((string) $metadata['section'], $query)) {
                $sectionResults[] = $allChunk;
            }
        }
        return $sectionResults;
    }�uej�  }�(j�  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j  j�  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�j�  j�  uj�  Xc�  final readonly class DocumentationTools extends AbstractTools
{
    public function __construct(
        /** @phpstan-ignore property.onlyWritten */
        private ClientInterface $client,
    ) {
    }
    /**
     * Find documentation similar to provided content.
     *
     * @param string      $content              Reference content to find similar documentation
     * @param string|null $sdk                  Limit search to specific SDK
     * @param float       $similarity_threshold Minimum similarity score (0.0-1.0, default: 0.5)
     * @param int         $limit                Maximum number of results (default: 5)
     *
     * @throws RuntimeException If documentation index initialization fails
     *
     * @return string Markdown-formatted related documentation
     */
    #[McpTool(name: 'find_similar_documentation')]
    public function findSimilarDocumentation(
        string $content,
        ?string $sdk = null,
        float $similarity_threshold = 0.5,
        int $limit = 5,
    ): string {
        if ('' === trim($content)) {
            return '❌ Content cannot be empty';
        }
        if (0.0 > $similarity_threshold || 1.0 < $similarity_threshold) {
            return '❌ Similarity threshold must be between 0.0 and 1.0';
        }
        if (1 > $limit || 20 < $limit) {
            return '❌ Limit must be between 1 and 20';
        }
        $validSdks = ['php', 'go', 'python', 'java', 'dotnet', 'js', 'laravel', null];
        if (! in_array($sdk, $validSdks, true)) {
            return '❌ Invalid SDK. Must be one of: php, go, python, java, dotnet, js, laravel';
        }
        $index = DocumentationIndexSingleton::getInstance();
        if (! $index->isInitialized()) {
            $index->initialize();
        }
        // Extract key terms from content for similarity matching
        $keyTerms = $this->extractKeyTerms($content);
        if ([] === $keyTerms) {
            return '❌ Could not extract meaningful terms from the provided content';
        }
        // Search for similar content using key terms
        /** @var array<string, array{chunk_id: string, sdk: string, score: float, preview: string, metadata: array<mixed>, similarity?: float, content?: string}> $similarChunks */
        $similarChunks = [];
        foreach ($keyTerms as $keyTerm) {
            $chunks = $index->searchChunks($keyTerm, $sdk, $limit * 2);
            foreach ($chunks as $chunk) {
                // Get content from the chunk to calculate similarity
                // We need to get the actual content - the preview is just a snippet
                $chunkContent = $this->getChunkContent($chunk['chunk_id'], $index);
                $similarity = $this->calculateSimilarity($content, $chunkContent);
                if ($similarity >= $similarity_threshold) {
                    // Add similarity and content to the chunk
                    $chunkWithSimilarity = $chunk;
                    $chunkWithSimilarity['similarity'] = $similarity;
                    $chunkWithSimilarity['content'] = $chunkContent;
                    $chunkKey = $chunk['sdk'] . '::' . $chunk['chunk_id'];
                    if (! isset($similarChunks[$chunkKey])) {
                        $similarChunks[$chunkKey] = $chunkWithSimilarity;
                    } elseif (isset($similarChunks[$chunkKey]['similarity'])) {
                        $existingSim = $similarChunks[$chunkKey]['similarity'];
                        if ($existingSim < $similarity) {
                            $similarChunks[$chunkKey] = $chunkWithSimilarity;
                        }
                    }
                }
            }
        }
        // Sort by similarity score
        usort($similarChunks, static function (array $a, array $b): int {
            // Since we know similarity is added above, we can safely access it
            $aSimilarity = isset($a['similarity']) && is_numeric($a['similarity']) ? $a['similarity'] : 0.0;
            $bSimilarity = isset($b['similarity']) && is_numeric($b['similarity']) ? $b['similarity'] : 0.0;
            return $bSimilarity <=> $aSimilarity;
        });
        // Apply limit
        $similarChunks = array_slice($similarChunks, 0, $limit);
        if ([] === $similarChunks) {
            return "## Similar Documentation\n\nNo similar documentation found (threshold: {$similarity_threshold})" .
                   (null !== $sdk ? ' in SDK: ' . $sdk : '') .
                   "\n\nTry:\n- Lowering the similarity threshold\n- Providing more specific content\n- Removing SDK filter for broader results";
        }
        // Build markdown response
        $markdown = "## Similar Documentation\n\n";
        $markdown .= sprintf('**Similarity Threshold:** %s%s', $similarity_threshold, PHP_EOL);
        if (null !== $sdk) {
            $markdown .= sprintf('**SDK Filter:** %s%s', $sdk, PHP_EOL);
        }
        $markdown .= '**Found:** ' . count($similarChunks) . " similar document(s)\n\n";
        $markdown .= "---\n\n";
        foreach ($similarChunks as $chunkIndex => $chunk) {
            $markdown .= $this->formatSimilarResult($chunk, $chunkIndex + 1);
        }
        return $markdown;
    }
    /**
     * Search for code examples in documentation.
     *
     * @param string      $query           Code pattern or concept to find
     * @param string|null $language        Programming language filter (php, go, python, java, csharp, javascript, typescript)
     * @param bool        $include_context Include surrounding explanatory context
     * @param int         $limit           Maximum number of examples to return (default: 5)
     * @param int         $offset          Pagination offset for results (default: 0)
     *
     * @throws RuntimeException If documentation index initialization fails
     *
     * @return string Markdown-formatted code examples with descriptions
     */
    #[McpTool(name: 'search_code_examples')]
    public function searchCodeExamples(
        string $query,
        ?string $language = null,
        bool $include_context = true,
        int $limit = 5,
        int $offset = 0,
    ): string {
        if ('' === trim($query)) {
            return '❌ Search query cannot be empty';
        }
        if (1 > $limit || 20 < $limit) {
            return '❌ Limit must be between 1 and 20';
        }
        if (0 > $offset) {
            return '❌ Offset cannot be negative';
        }
        $validLanguages = ['php', 'go', 'python', 'java', 'csharp', 'javascript', 'typescript', null];
        if (! in_array($language, $validLanguages, true)) {
            return '❌ Invalid language. Must be one of: php, go, python, java, csharp, javascript, typescript';
        }
        $index = DocumentationIndexSingleton::getInstance();
        if (! $index->isInitialized()) {
            $index->initialize();
        }
        // Map language to SDK if applicable
        $sdk = $this->mapLanguageToSdk($language);
        // Search for code-related chunks
        $allChunks = $index->searchChunks($query, $sdk);
        $codeExamples = [];
        foreach ($allChunks as $allChunk) {
            // Get the full content for this chunk
            $chunkContent = $this->getChunkContent($allChunk['chunk_id'], $index);
            $chunkWithContent = $allChunk;
            $chunkWithContent['content'] = $chunkContent;
            $examples = $this->extractCodeFromChunk($chunkWithContent, $language);
            foreach ($examples as $example) {
                $example['chunk'] = $allChunk;
                $codeExamples[] = $example;
            }
        }
        $totalExamples = count($codeExamples);
        if (0 === $totalExamples) {
            return "## Code Examples
No code examples found for: **{$query}**" .
                   (null !== $language ? sprintf(' (language: %s)', $language) : '') .
                   "\n\nTry:\n- Searching for specific method or class names\n- Using OpenFGA terminology (e.g., 'check', 'expand', 'tuples')\n- Removing language filter for broader results";
        }
        // Apply pagination
        $paginatedExamples = array_slice($codeExamples, $offset, $limit);
        $currentPage = (int) floor($offset / $limit) + 1;
        $totalPages = (int) ceil($totalExamples / $limit);
        // Build markdown response
        $markdown = "## Code Examples\n\n";
        $markdown .= "**Search:** `{$query}`\n";
        if (null !== $language) {
            $markdown .= sprintf('**Language:** %s%s', $language, PHP_EOL);
        }
        $markdown .= '**Results:** Showing ' . ($offset + 1) . '-' . min($offset + $limit, $totalExamples) . " of {$totalExamples} examples\n\n";
        $markdown .= "---\n\n";
        foreach ($paginatedExamples as $exampleIndex => $example) {
            $exampleNumber = $offset + $exampleIndex + 1;
            $markdown .= $this->formatCodeExample($example, $exampleNumber, $include_context);
        }
        // Add pagination info
        if (1 < $totalPages) {
            $markdown .= "\n---\n\n### Pagination\n\n";
            if (1 < $currentPage) {
                $prevOffset = max(0, $offset - $limit);
                $markdown .= sprintf('- **Previous page:** Use offset=%d%s', $prevOffset, PHP_EOL);
            }
            if ($currentPage < $totalPages) {
                $nextOffset = $offset + $limit;
                $markdown .= sprintf('- **Next page:** Use offset=%d%s', $nextOffset, PHP_EOL);
            }
        }
        return $markdown;
    }
    /**
     * Advanced documentation search with filtering and pagination.
     *
     * @param string      $query       Search query to find in documentation
     * @param string|null $sdk         Filter by specific SDK (php, go, python, java, dotnet, js, laravel)
     * @param string      $search_type Type of search: content (default), class, method, or section
     * @param int         $limit       Maximum number of results to return (default: 10)
     * @param int         $offset      Pagination offset for results (default: 0)
     *
     * @throws RuntimeException If documentation index initialization fails
     *
     * @return string Markdown-formatted search results with pagination metadata
     */
    #[McpTool(name: 'search_documentation')]
    public function searchDocumentation(
        string $query,
        ?string $sdk = null,
        string $search_type = 'content',
        int $limit = 10,
        int $offset = 0,
    ): string {
        if ('' === trim($query)) {
            return '❌ Search query cannot be empty';
        }
        if (1 > $limit || 50 < $limit) {
            return '❌ Limit must be between 1 and 50';
        }
        if (0 > $offset) {
            return '❌ Offset cannot be negative';
        }
        $validSearchTypes = ['content', 'class', 'method', 'section'];
        if (! in_array($search_type, $validSearchTypes, true)) {
            return '❌ Invalid search_type. Must be one of: ' . implode(', ', $validSearchTypes);
        }
        $validSdks = ['php', 'go', 'python', 'java', 'dotnet', 'js', 'laravel', null];
        if (! in_array($sdk, $validSdks, true)) {
            return '❌ Invalid SDK. Must be one of: php, go, python, java, dotnet, js, laravel';
        }
        $index = DocumentationIndexSingleton::getInstance();
        if (! $index->isInitialized()) {
            $index->initialize();
        }
        // Get all results first for total count
        $allResults = $this->performSearch($index, $query, $sdk, $search_type);
        $totalResults = count($allResults);
        if (0 === $totalResults) {
            return "## Documentation Search Results
No results found for query: **{$query}**" .
                   (null !== $sdk ? sprintf(' (filtered by SDK: %s)', $sdk) : '') .
                   "\n\nTry:\n- Using different keywords\n- Checking spelling\n- Using broader search terms";
        }
        // Apply pagination
        $paginatedResults = array_slice($allResults, $offset, $limit);
        $currentPage = (int) floor($offset / $limit) + 1;
        $totalPages = (int) ceil($totalResults / $limit);
        // Build markdown response
        $markdown = "## Documentation Search Results\n\n";
        $markdown .= "**Query:** `{$query}`\n";
        if (null !== $sdk) {
            $markdown .= sprintf('**SDK Filter:** %s%s', $sdk, PHP_EOL);
        }
        $markdown .= sprintf('**Search Type:** %s%s', $search_type, PHP_EOL);
        $markdown .= '**Results:** Showing ' . ($offset + 1) . '-' . min($offset + $limit, $totalResults) . " of {$totalResults} total results\n";
        $markdown .= "**Page:** {$currentPage} of {$totalPages}\n\n";
        $markdown .= "---\n\n";
        foreach ($paginatedResults as $resultIndex => $result) {
            $resultNumber = $offset + (int) $resultIndex + 1;
            $markdown .= $this->formatSearchResult($result, $resultNumber);
        }
        // Add pagination info
        if (1 < $totalPages) {
            $markdown .= "\n---\n\n### Pagination\n\n";
            if (1 < $currentPage) {
                $prevOffset = max(0, $offset - $limit);
                $markdown .= sprintf('- **Previous page:** Use offset=%d%s', $prevOffset, PHP_EOL);
            }
            if ($currentPage < $totalPages) {
                $nextOffset = $offset + $limit;
                $markdown .= sprintf('- **Next page:** Use offset=%d%s', $nextOffset, PHP_EOL);
            }
        }
        return $markdown;
    }
    /**
     * Calculate similarity between two pieces of content.
     *
     * @param  string $content1
     * @param  string $content2
     * @return float  Similarity score between 0 and 1
     */
    private function calculateSimilarity(string $content1, string $content2): float
    {
        if ('' === $content1 || '' === $content2) {
            return 0.0;
        }
        // Extract terms from both contents
        $terms1 = $this->extractKeyTerms($content1);
        $terms2 = $this->extractKeyTerms($content2);
        if ([] === $terms1 || [] === $terms2) {
            return 0.0;
        }
        // Calculate Jaccard similarity
        $intersection = count(array_intersect($terms1, $terms2));
        $union = count(array_unique(array_merge($terms1, $terms2)));
        // Union will always be at least 1 since we checked both term arrays are non-empty
        $jaccard = (float) ($intersection / $union);
        // Also check for exact phrase matches for higher similarity
        $phrases = [
            'authorization model',
            'permission check',
            'tuple creation',
            'relationship tuples',
            'access control',
            'openfga',
        ];
        $phraseBonus = 0.0;
        foreach ($phrases as $phrase) {
            if (false !== stripos($content1, $phrase) && false !== stripos($content2, $phrase)) {
                $phraseBonus += 0.1;
            }
        }
        // Combine scores (cap at 1.0)
        return min(1.0, $jaccard + $phraseBonus);
    }
    /**
     * Extract code examples from a chunk.
     *
     * @param  array<string, mixed>        $chunk
     * @param  string|null                 $language
     * @return array<array<string, mixed>>
     */
    private function extractCodeFromChunk(array $chunk, ?string $language): array
    {
        $content = isset($chunk['content']) && is_scalar($chunk['content']) ? (string) $chunk['content'] : '';
        $examples = [];
        // Match code blocks with optional language specification
        $pattern = '/```(\w+)?\n(.*?)\n```/s';
        $result = preg_match_all($pattern, $content, $matches, PREG_SET_ORDER);
        if (false !== $result && 0 < $result) {
            foreach ($matches as $match) {
                // When preg_match_all succeeds with PREG_SET_ORDER, capture groups exist
                // Optional groups will be empty strings if they don't match
                /** @var array{0: string, 1: string, 2: string} $match */
                $codeLang = $match[1];
                $codeContent = $match[2];
                // Filter by language if specified
                if (null !== $language) {
                    $langMatch = false;
                    switch ($language) {
                        case 'php':
                            $langMatch = 'php' === $codeLang || false !== stripos($codeContent, '<?php');
                            break;
                        case 'go':
                            $langMatch = 'go' === $codeLang || false !== stripos($codeContent, 'func ');
                            break;
                        case 'python':
                            $langMatch = 'python' === $codeLang || 'py' === $codeLang || false !== stripos($codeContent, 'def ');
                            break;
                        case 'java':
                            $langMatch = 'java' === $codeLang || false !== stripos($codeContent, 'public class');
                            break;
                        case 'csharp':
                            $langMatch = 'csharp' === $codeLang || 'cs' === $codeLang || false !== stripos($codeContent, 'using ');
                            break;
                        case 'javascript':
                        case 'typescript':
                            $langMatch = in_array($codeLang, ['javascript', 'js', 'typescript', 'ts'], true);
                            break;
                    }
                    if (! $langMatch) {
                        continue;
                    }
                }
                $examples[] = [
                    'language' => '' !== $codeLang ? $codeLang : 'unknown',
                    'code' => $codeContent,
                    'context' => $this->extractContext($content, $match[0]),
                ];
            }
        }
        return $examples;
    }
    /**
     * Extract context around code.
     *
     * @param string $content
     * @param string $codeBlock
     */
    private function extractContext(string $content, string $codeBlock): string
    {
        $position = strpos($content, $codeBlock);
        if (false === $position) {
            return '';
        }
        // Get text before the code block (up to 200 chars)
        $beforeStart = max(0, $position - 200);
        $beforeText = substr($content, $beforeStart, $position - $beforeStart);
        // Get text after the code block (up to 200 chars)
        $afterStart = $position + strlen($codeBlock);
        $afterText = substr($content, $afterStart, 200);
        // Clean up and combine
        $beforeText = trim(preg_replace('/\s+/', ' ', $beforeText) ?? '');
        $afterText = trim(preg_replace('/\s+/', ' ', $afterText) ?? '');
        $context = '';
        if ('' !== $beforeText) {
            $context .= '...' . $beforeText;
        }
        $context .= ' [CODE] ';
        if ('' !== $afterText) {
            $context .= $afterText . '...';
        }
        return trim($context);
    }
    /**
     * Extract key terms from content for similarity matching.
     *
     * @param  string        $content
     * @return array<string>
     */
    private function extractKeyTerms(string $content): array
    {
        // Remove code blocks and special characters
        $cleanContent = preg_replace('/```[\s\S]*?```/', '', $content);
        $cleanContent ??= '';
        $cleanContent = preg_replace('/[^a-zA-Z0-9\s]/', ' ', $cleanContent);
        $cleanContent ??= '';
        // Extract words
        $words = preg_split('/\s+/', strtolower($cleanContent));
        $words = false !== $words ? $words : [];
        // Filter out common words and short words
        $stopWords = ['the', 'is', 'at', 'which', 'on', 'and', 'a', 'an', 'as', 'are', 'was', 'were', 'been', 'be', 'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could', 'should', 'may', 'might', 'must', 'can', 'this', 'that', 'these', 'those', 'i', 'you', 'he', 'she', 'it', 'we', 'they', 'what', 'which', 'who', 'when', 'where', 'why', 'how', 'all', 'each', 'every', 'both', 'few', 'more', 'most', 'other', 'some', 'such', 'only', 'own', 'same', 'so', 'than', 'too', 'very', 'just', 'in', 'of', 'to', 'for', 'with', 'from', 'up', 'out', 'if', 'about', 'into', 'through', 'during', 'before', 'after', 'above', 'below', 'between', 'under', 'again', 'further', 'then', 'once'];
        $termCounts = [];
        foreach ($words as $word) {
            if (2 < strlen($word) && ! in_array($word, $stopWords, true)) {
                if (! isset($termCounts[$word])) {
                    $termCounts[$word] = 0;
                }
                ++$termCounts[$word];
            }
        }
        // Sort by frequency and take top terms
        arsort($termCounts);
        $keyTerms = array_keys(array_slice($termCounts, 0, 10));
        // Add OpenFGA-specific terms if present
        $openfgaTerms = ['openfga', 'authorization', 'permission', 'tuple', 'relation', 'check', 'expand', 'store', 'model', 'user', 'object'];
        foreach ($openfgaTerms as $openfgaTerm) {
            if (false !== stripos($content, $openfgaTerm) && ! in_array($openfgaTerm, $keyTerms, true)) {
                $keyTerms[] = $openfgaTerm;
            }
        }
        return array_slice($keyTerms, 0, 15);
    }
    /**
     * Format a code example as markdown.
     *
     * @param array<string, mixed> $example
     * @param int                  $number
     * @param bool                 $includeContext
     */
    private function formatCodeExample(array $example, int $number, bool $includeContext): string
    {
        $markdown = "### Example {$number}\n\n";
        $chunk = isset($example['chunk']) && is_array($example['chunk']) ? $example['chunk'] : [];
        // Add metadata
        if (isset($chunk['sdk']) && '' !== $chunk['sdk']) {
            $chunkSdk = is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : '';
            $markdown .= "**SDK:** `{$chunkSdk}`  \n";
        }
        // Access class and method from metadata
        $metadata = isset($chunk['metadata']) && is_array($chunk['metadata']) ? $chunk['metadata'] : [];
        if (isset($metadata['class']) && '' !== $metadata['class']) {
            $chunkClass = is_scalar($metadata['class']) ? (string) $metadata['class'] : '';
            $markdown .= sprintf('**Class:** `%s`', $chunkClass);
            if (isset($metadata['method']) && '' !== $metadata['method']) {
                $chunkMethod = is_scalar($metadata['method']) ? (string) $metadata['method'] : '';
                $markdown .= sprintf(' **Method:** `%s`', $chunkMethod);
            }
            $markdown .= "  \n";
        }
        if (isset($example['language']) && '' !== $example['language'] && 'unknown' !== $example['language']) {
            $exampleLang = is_scalar($example['language']) ? (string) $example['language'] : '';
            $markdown .= "**Language:** `{$exampleLang}`  \n";
        }
        $markdown .= "\n";
        // Add context if requested
        if ($includeContext && isset($example['context']) && '' !== $example['context']) {
            $context = is_scalar($example['context']) ? (string) $example['context'] : '';
            $markdown .= "**Context:**\n> " . str_replace('[CODE]', '*(see code below)*', $context) . "\n\n";
        }
        // Add code
        $lang = isset($example['language']) && is_scalar($example['language']) ? (string) $example['language'] : '';
        $code = isset($example['code']) && is_scalar($example['code']) ? (string) $example['code'] : '';
        $markdown .= "```{$lang}\n{$code}\n```\n";
        return $markdown . "\n---\n\n";
    }
    /**
     * Format a search result as markdown.
     *
     * @param array<string, mixed> $result
     * @param int                  $number
     */
    private function formatSearchResult(array $result, int $number): string
    {
        $markdown = sprintf('### %d. ', $number);
        // Build title based on available metadata
        $title = '';
        $metadata = isset($result['metadata']) && is_array($result['metadata']) ? $result['metadata'] : [];
        if (isset($metadata['class']) && '' !== $metadata['class']) {
            $title .= is_scalar($metadata['class']) ? (string) $metadata['class'] : '';
            if (isset($metadata['method']) && '' !== $metadata['method']) {
                $title .= '::' . (is_scalar($metadata['method']) ? (string) $metadata['method'] : '');
            }
        } elseif (isset($metadata['section']) && '' !== $metadata['section']) {
            $title .= is_scalar($metadata['section']) ? (string) $metadata['section'] : '';
        } else {
            $title .= 'Documentation Chunk';
        }
        $markdown .= $title . "\n\n";
        // Add metadata
        if (isset($result['sdk']) && '' !== $result['sdk']) {
            $sdkName = is_scalar($result['sdk']) ? (string) $result['sdk'] : '';
            $markdown .= "**SDK:** `{$sdkName}`  \n";
        }
        if (isset($result['source']) && '' !== $result['source']) {
            $sourceName = is_scalar($result['source']) ? (string) $result['source'] : '';
            $markdown .= "**Source:** `{$sourceName}`  \n";
        }
        if (isset($result['score']) && 0.0 !== $result['score']) {
            $scoreValue = is_numeric($result['score']) ? (float) $result['score'] : 0.0;
            $markdown .= '**Relevance:** ' . (string) round($scoreValue * 100.0) . "%  \n";
        }
        $markdown .= "\n";
        // Add preview
        if (isset($result['preview']) && '' !== $result['preview']) {
            $preview = is_scalar($result['preview']) ? (string) $result['preview'] : '';
            // Limit preview length
            if (500 < strlen($preview)) {
                $preview = substr($preview, 0, 497) . '...';
            }
            $markdown .= "**Preview:**\n```\n{$preview}\n```\n";
        }
        // Add navigation
        if (isset($result['chunk_id']) && '' !== $result['chunk_id']) {
            $sdk = isset($result['sdk']) && is_scalar($result['sdk']) ? (string) $result['sdk'] : 'unknown';
            $id = isset($result['chunk_id']) && is_scalar($result['chunk_id']) ? (string) $result['chunk_id'] : 'unknown';
            $markdown .= "\n**Reference:** `{$sdk}::{$id}`\n";
        }
        return $markdown . "\n---\n\n";
    }
    /**
     * Format a similar documentation result as markdown.
     *
     * @param array<string, mixed> $chunk
     * @param int                  $number
     */
    private function formatSimilarResult(array $chunk, int $number): string
    {
        $markdown = sprintf('### %d. ', $number);
        // Build title
        $title = '';
        $metadata = isset($chunk['metadata']) && is_array($chunk['metadata']) ? $chunk['metadata'] : [];
        if (isset($metadata['class']) && '' !== $metadata['class']) {
            $title .= is_scalar($metadata['class']) ? (string) $metadata['class'] : '';
            if (isset($metadata['method']) && '' !== $metadata['method']) {
                $title .= '::' . (is_scalar($metadata['method']) ? (string) $metadata['method'] : '');
            }
        } elseif (isset($metadata['section']) && '' !== $metadata['section']) {
            $title .= is_scalar($metadata['section']) ? (string) $metadata['section'] : '';
        } else {
            $title .= 'Related Documentation';
        }
        $markdown .= $title . "\n\n";
        // Add metadata
        if (isset($chunk['sdk']) && '' !== $chunk['sdk']) {
            $chunkSdkValue = is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : '';
            $markdown .= "**SDK:** `{$chunkSdkValue}`  \n";
        }
        if (isset($chunk['similarity']) && 0.0 !== $chunk['similarity']) {
            $simScore = is_numeric($chunk['similarity']) ? (float) $chunk['similarity'] : 0.0;
            $markdown .= '**Similarity Score:** ' . (string) round($simScore * 100.0) . "%  \n";
        }
        if (isset($chunk['source']) && '' !== $chunk['source']) {
            $sourceValue = is_scalar($chunk['source']) ? (string) $chunk['source'] : '';
            $markdown .= "**Source:** `{$sourceValue}`  \n";
        }
        $markdown .= "\n";
        // Add content preview
        if (isset($chunk['content']) && '' !== $chunk['content']) {
            $preview = is_scalar($chunk['content']) ? (string) $chunk['content'] : '';
            // Limit preview length
            if (800 < strlen($preview)) {
                $preview = substr($preview, 0, 797) . '...';
            }
            $markdown .= "**Content:**\n\n" . $preview . "\n";
        }
        // Add reference
        if (isset($chunk['chunk_id']) && '' !== $chunk['chunk_id']) {
            $sdk = isset($chunk['sdk']) && is_scalar($chunk['sdk']) ? (string) $chunk['sdk'] : 'unknown';
            $id = isset($chunk['chunk_id']) && is_scalar($chunk['chunk_id']) ? (string) $chunk['chunk_id'] : 'unknown';
            $markdown .= "\n**Reference:** `{$sdk}::{$id}`\n";
        }
        return $markdown . "\n---\n\n";
    }
    /**
     * Get the full content of a chunk by its ID.
     *
     * @param string             $chunkId
     * @param DocumentationIndex $index
     */
    private function getChunkContent(string $chunkId, DocumentationIndex $index): string
    {
        // For now, we'll use the chunk ID to get content
        // In a real implementation, we'd fetch this from the index
        $chunk = $index->getChunkById($chunkId);
        if (null === $chunk) {
            return '';
        }
        return $chunk['content'] ?? '';
    }
    /**
     * Map programming language to SDK.
     *
     * @param string|null $language
     */
    private function mapLanguageToSdk(?string $language): ?string
    {
        if (null === $language) {
            return null;
        }
        $mapping = [
            'php' => 'php',
            'go' => 'go',
            'python' => 'python',
            'java' => 'java',
            'csharp' => 'dotnet',
            'javascript' => 'js',
            'typescript' => 'js',
        ];
        return $mapping[$language] ?? null;
    }
    /**
     * Perform search based on search type.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     * @param string             $searchType
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function performSearch(DocumentationIndex $index, string $query, ?string $sdk, string $searchType): array
    {
        return match ($searchType) {
            'class' => $this->searchForClasses($index, $query, $sdk),
            'method' => $this->searchForMethods($index, $query, $sdk),
            'section' => $this->searchForSections($index, $query, $sdk),
            default => $index->searchChunks($query, $sdk),
        };
    }
    /**
     * Search specifically for classes.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function searchForClasses(DocumentationIndex $index, string $query, ?string $sdk): array
    {
        $allChunks = $index->searchChunks($query, $sdk);
        $classResults = [];
        foreach ($allChunks as $allChunk) {
            $metadata = $allChunk['metadata'];
            if (isset($metadata['class']) && '' !== $metadata['class'] && is_scalar($metadata['class']) && false !== stripos((string) $metadata['class'], $query)) {
                $classResults[] = $allChunk;
            }
        }
        return $classResults;
    }
    /**
     * Search specifically for methods.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function searchForMethods(DocumentationIndex $index, string $query, ?string $sdk): array
    {
        $allChunks = $index->searchChunks($query, $sdk);
        $methodResults = [];
        foreach ($allChunks as $allChunk) {
            $metadata = $allChunk['metadata'];
            if (isset($metadata['method']) && '' !== $metadata['method'] && is_scalar($metadata['method']) && false !== stripos((string) $metadata['method'], $query)) {
                $methodResults[] = $allChunk;
            }
        }
        return $methodResults;
    }
    /**
     * Search specifically for sections.
     *
     * @param DocumentationIndex $index
     * @param string             $query
     * @param string|null        $sdk
     *
     * @throws RuntimeException If search fails
     *
     * @return array<array<string, mixed>>
     */
    private function searchForSections(DocumentationIndex $index, string $query, ?string $sdk): array
    {
        $allChunks = $index->searchChunks($query, $sdk);
        $sectionResults = [];
        foreach ($allChunks as $allChunk) {
            $metadata = $allChunk['metadata'];
            if (isset($metadata['section']) && '' !== $metadata['section'] && is_scalar($metadata['section']) && false !== stripos((string) $metadata['section'], $query)) {
                $sectionResults[] = $allChunk;
            }
        }
        return $sectionResults;
    }
}�j   Nuj  j  j#  j4  j=  jJ  jW  jd  jq  j~  j�  j�  j�  j�  j�  j�  j�  j�  j�  j   j
  j  j'  j4  jA  jN  j[  jd  jq  j~  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j+  j8  jE  jR  j_  jl  jy  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j"  j/  j<  jM  jV  jc  jp  j}  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j&  j3  j@  jQ  jZ  jg  jt  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j*  j7  jD  jQ  j^  jk  jx  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j	  j	  j!	  j.	  j;	  jH	  jY	  jb	  jo	  j|	  j�	  j�	  j�	  j�	  j�	  j�	  j�	  j�	  j�	  j�	  j
  j
  j%
  j6
  j?
  jL
  jY
  jf
  js
  j�
  j�
  j�
  j�
  j�
  j�
  j�
  j�
  j�
  j�
  j  j  j  j)  j6  jC  jP  j]  jj  jw  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j   j-  j>  jG  jT  ja  jr  j{  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j
  j
  j$
  j1
  j>
  jO
  jX
  je
  jr
  j
  j�
  j�
  j�
  j�
  j�
  j�
  j�
  j�
  j�
  j  j  j  j(  e]�(j�  j  e�����&src/Tools/DocumentationTools.php-False�� 4c1690a2af21a98442f4ef723e97f44b�]�(}�(�name��OpenFGA\MCP\Tools��kind�K�range�}�(�start�}�(�line�K�	character�K u�end�}�(jK  KjL  Kuu�selectionRange�}�(jI  }�(jK  KjL  K
ujM  }�(jK  KjL  Kuu�location�}�(�uri��Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php��range�jH  �absolutePath��K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php��relativePath�� src/Tools/DocumentationTools.php�u�children�]��parent�Nu}�(jD  �DocumentationTools�jF  KjG  }�(jI  }�(jK  KjL  K ujM  }�(jK  MXjL  KuujO  }�(jI  }�(jK  KjL  KujM  }�(jK  KjL  K'uu�children�]�(}�(jD  �$client��detail��
(promoted)�jF  KjG  }�(jI  }�(jK  KjL  KujM  }�(jK  KjL  K'uujO  }�(jI  }�(jK  KjL  K ujM  }�(jK  KjL  K'uuj^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jm  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �__construct�jF  K	jG  }�(jI  }�(jK  KjL  KujM  }�(jK  KjL  KuujO  }�(jI  }�(jK  KjL  KujM  }�(jK  KjL  Kuujg  ]�}�(jD  �$client�jF  K
jG  }�(jI  }�(jK  KjL  KujM  }�(jK  KjL  K'uujO  }�(jI  }�(jK  KjL  K ujM  }�(jK  KjL  K'uuj^  jw  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uaj^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jy  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �findSimilarDocumentation�jF  KjG  }�(jI  }�(jK  KjL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K'jL  KujM  }�(jK  K'jL  K,uujg  ]�(}�(jD  �$content�jF  K
jG  }�(jI  }�(jK  K(jL  KujM  }�(jK  K(jL  KuujO  }�(jI  }�(jK  K(jL  KujM  }�(jK  K(jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  K)jL  KujM  }�(jK  K)jL  KuujO  }�(jI  }�(jK  K)jL  KujM  }�(jK  K)jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$similarity_threshold�jF  K
jG  }�(jI  }�(jK  K*jL  KujM  }�(jK  K*jL  K)uujO  }�(jI  }�(jK  K*jL  KujM  }�(jK  K*jL  K#uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$limit�jF  K
jG  }�(jI  }�(jK  K+jL  KujM  }�(jK  K+jL  KuujO  }�(jI  }�(jK  K+jL  KujM  }�(jK  K+jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$validSdks�jF  K
jG  }�(jI  }�(jK  K9jL  KujM  }�(jK  K9jL  KuujO  }�(jI  }�(jK  K9jL  KujM  }�(jK  K9jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$index�jF  K
jG  }�(jI  }�(jK  K?jL  KujM  }�(jK  K?jL  KuujO  }�(jI  }�(jK  K?jL  KujM  }�(jK  K?jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$keyTerms�jF  K
jG  }�(jI  }�(jK  KFjL  KujM  }�(jK  KFjL  KuujO  }�(jI  }�(jK  KFjL  KujM  }�(jK  KFjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$similarChunks�jF  K
jG  }�(jI  }�(jK  KNjL  KujM  }�(jK  KNjL  KuujO  }�(jI  }�(jK  KNjL  KujM  }�(jK  KNjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$keyTerm�jF  K
jG  }�(jI  }�(jK  KPjL  KujM  }�(jK  KPjL  K&uujO  }�(jI  }�(jK  KPjL  KujM  }�(jK  KPjL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunks�jF  K
jG  }�(jI  }�(jK  KQjL  KujM  }�(jK  KQjL  KuujO  }�(jI  }�(jK  KQjL  KujM  }�(jK  KQjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunk�jF  K
jG  }�(jI  }�(jK  KSjL  K ujM  }�(jK  KSjL  K&uujO  }�(jI  }�(jK  KSjL  K ujM  }�(jK  KSjL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$chunkContent�jF  K
jG  }�(jI  }�(jK  KVjL  KujM  }�(jK  KVjL  KuujO  }�(jI  }�(jK  KVjL  KujM  }�(jK  KVjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$similarity�jF  K
jG  }�(jI  }�(jK  KWjL  KujM  }�(jK  KWjL  KuujO  }�(jI  }�(jK  KWjL  KujM  }�(jK  KWjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j*  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunkWithSimilarity�jF  K
jG  }�(jI  }�(jK  K[jL  KujM  }�(jK  K[jL  K(uujO  }�(jI  }�(jK  K[jL  KujM  }�(jK  K[jL  K(uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j6  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunkWithSimilarity�jF  K
jG  }�(jI  }�(jK  K\jL  KujM  }�(jK  K\jL  K(uujO  }�(jI  }�(jK  K\jL  KujM  }�(jK  K\jL  K(uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jB  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunkWithSimilarity�jF  K
jG  }�(jI  }�(jK  K]jL  KujM  }�(jK  K]jL  K(uujO  }�(jI  }�(jK  K]jL  KujM  }�(jK  K]jL  K(uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jN  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$chunkKey�jF  K
jG  }�(jI  }�(jK  K_jL  KujM  }�(jK  K_jL  KuujO  }�(jI  }�(jK  K_jL  KujM  }�(jK  K_jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jZ  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$similarChunks�jF  K
jG  }�(jI  }�(jK  KbjL  KujM  }�(jK  KbjL  K&uujO  }�(jI  }�(jK  KbjL  KujM  }�(jK  KbjL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jf  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$chunkKey�jF  K
jG  }�(jI  }�(jK  KbjL  K'ujM  }�(jK  KbjL  K0uujO  }�(jI  }�(jK  KbjL  K'ujM  }�(jK  KbjL  K0uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jr  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$existingSim�jF  K
jG  }�(jI  }�(jK  KdjL  KujM  }�(jK  KdjL  K$uujO  }�(jI  }�(jK  KdjL  KujM  }�(jK  KdjL  K$uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j~  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$similarChunks�jF  K
jG  }�(jI  }�(jK  KgjL  KujM  }�(jK  KgjL  K*uujO  }�(jI  }�(jK  KgjL  KujM  }�(jK  KgjL  K*uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$chunkKey�jF  K
jG  }�(jI  }�(jK  KgjL  K+ujM  }�(jK  KgjL  K4uujO  }�(jI  }�(jK  KgjL  K+ujM  }�(jK  KgjL  K4uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �Closure�jF  KjG  }�(jI  }�(jK  KojL  KujM  }�(jK  KujL  K	uujO  }�(jI  }�(jK  KojL  KujM  }�(jK  KujL  K	uujg  ]�(}�(jD  �$a�jF  K
jG  }�(jI  }�(jK  KojL  K/ujM  }�(jK  KojL  K7uujO  }�(jI  }�(jK  KojL  K5ujM  }�(jK  KojL  K7uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$b�jF  K
jG  }�(jI  }�(jK  KojL  K9ujM  }�(jK  KojL  KAuujO  }�(jI  }�(jK  KojL  K?ujM  }�(jK  KojL  KAuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$aSimilarity�jF  K
jG  }�(jI  }�(jK  KqjL  KujM  }�(jK  KqjL  KuujO  }�(jI  }�(jK  KqjL  KujM  }�(jK  KqjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$bSimilarity�jF  K
jG  }�(jI  }�(jK  KrjL  KujM  }�(jK  KrjL  KuujO  }�(jI  }�(jK  KrjL  KujM  }�(jK  KrjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �$similarChunks�jF  K
jG  }�(jI  }�(jK  KxjL  KujM  }�(jK  KxjL  KuujO  }�(jI  }�(jK  KxjL  KujM  }�(jK  KxjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$markdown�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunkIndex�jF  K
jG  }�(jI  }�(jK  K�jL  K#ujM  }�(jK  K�jL  K.uujO  }�(jI  }�(jK  K�jL  K#ujM  }�(jK  K�jL  K.uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunk�jF  K
jG  }�(jI  }�(jK  K�jL  K2ujM  }�(jK  K�jL  K8uujO  }�(jI  }�(jK  K�jL  K2ujM  }�(jK  K�jL  K8uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �searchCodeExamples�jF  KjG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  K&uujg  ]�(}�(jD  �$query�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$language�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  K uujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j&  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$include_context�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  K$uujO  }�(jI  }�(jK  K�jL  K
ujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j2  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$limit�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j>  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$offset�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jJ  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$validLanguages�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jV  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$index�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jb  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jn  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$allChunks�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jz  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$codeExamples�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$allChunk�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  K(uujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  K(uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$examples�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$example�jF  K
jG  }�(jI  }�(jK  K�jL  K"ujM  }�(jK  K�jL  K*uujO  }�(jI  }�(jK  K�jL  K"ujM  }�(jK  K�jL  K*uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$example�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$codeExamples�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$totalExamples�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$paginatedExamples�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$currentPage�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$totalPages�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php��       jZ  j[  uj\  ]�u}�(jD  �	$markdown�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$exampleIndex�jF  K
jG  }�(jI  }�(jK  K�jL  K'ujM  }�(jK  K�jL  K4uujO  }�(jI  }�(jK  K�jL  K'ujM  }�(jK  K�jL  K4uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j
  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$example�jF  K
jG  }�(jI  }�(jK  K�jL  K8ujM  }�(jK  K�jL  K@uujO  }�(jI  }�(jK  K�jL  K8ujM  }�(jK  K�jL  K@uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$exampleNumber�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j"  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$prevOffset�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j.  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$nextOffset�jF  K
jG  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  KuujO  }�(jI  }�(jK  K�jL  KujM  }�(jK  K�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j:  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �searchDocumentation�jF  KjG  }�(jI  }�(jK  K�jL  KujM  }�(jK  MYjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  K'uujg  ]�(}�(jD  �$query�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jR  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j^  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$search_type�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  K'uujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jj  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$limit�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jv  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$offset�jF  K
jG  }�(jI  }�(jK  M	jL  KujM  }�(jK  M	jL  KuujO  }�(jI  }�(jK  M	jL  KujM  }�(jK  M	jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$validSearchTypes�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$validSdks�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$index�jF  K
jG  }�(jI  }�(jK  M#jL  KujM  }�(jK  M#jL  KuujO  }�(jI  }�(jK  M#jL  KujM  }�(jK  M#jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$allResults�jF  K
jG  }�(jI  }�(jK  M*jL  KujM  }�(jK  M*jL  KuujO  }�(jI  }�(jK  M*jL  KujM  }�(jK  M*jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$totalResults�jF  K
jG  }�(jI  }�(jK  M+jL  KujM  }�(jK  M+jL  KuujO  }�(jI  }�(jK  M+jL  KujM  }�(jK  M+jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$paginatedResults�jF  K
jG  }�(jI  }�(jK  M4jL  KujM  }�(jK  M4jL  KuujO  }�(jI  }�(jK  M4jL  KujM  }�(jK  M4jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$currentPage�jF  K
jG  }�(jI  }�(jK  M5jL  KujM  }�(jK  M5jL  KuujO  }�(jI  }�(jK  M5jL  KujM  }�(jK  M5jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$totalPages�jF  K
jG  }�(jI  }�(jK  M6jL  KujM  }�(jK  M6jL  KuujO  }�(jI  }�(jK  M6jL  KujM  }�(jK  M6jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$markdown�jF  K
jG  }�(jI  }�(jK  M9jL  KujM  }�(jK  M9jL  KuujO  }�(jI  }�(jK  M9jL  KujM  }�(jK  M9jL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$resultIndex�jF  K
jG  }�(jI  }�(jK  MDjL  K&ujM  }�(jK  MDjL  K2uujO  }�(jI  }�(jK  MDjL  K&ujM  }�(jK  MDjL  K2uuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$result�jF  K
jG  }�(jI  }�(jK  MDjL  K6ujM  }�(jK  MDjL  K=uujO  }�(jI  }�(jK  MDjL  K6ujM  }�(jK  MDjL  K=uuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$resultNumber�jF  K
jG  }�(jI  }�(jK  MEjL  KujM  }�(jK  MEjL  KuujO  }�(jI  }�(jK  MEjL  KujM  }�(jK  MEjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$prevOffset�jF  K
jG  }�(jI  }�(jK  MNjL  KujM  }�(jK  MNjL  KuujO  }�(jI  }�(jK  MNjL  KujM  }�(jK  MNjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$nextOffset�jF  K
jG  }�(jI  }�(jK  MSjL  KujM  }�(jK  MSjL  KuujO  }�(jI  }�(jK  MSjL  KujM  }�(jK  MSjL  Kuuj^  jG  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j*  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jI  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �calculateSimilarity�jF  KjG  }�(jI  }�(jK  M[jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  MbjL  KujM  }�(jK  MbjL  K(uujg  ]�(}�(jD  �	$content1�jF  K
jG  }�(jI  }�(jK  MbjL  K)ujM  }�(jK  MbjL  K9uujO  }�(jI  }�(jK  MbjL  K0ujM  }�(jK  MbjL  K9uuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jB  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$content2�jF  K
jG  }�(jI  }�(jK  MbjL  K;ujM  }�(jK  MbjL  KKuujO  }�(jI  }�(jK  MbjL  KBujM  }�(jK  MbjL  KKuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jN  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$terms1�jF  K
jG  }�(jI  }�(jK  MijL  KujM  }�(jK  MijL  KuujO  }�(jI  }�(jK  MijL  KujM  }�(jK  MijL  Kuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jZ  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$terms2�jF  K
jG  }�(jI  }�(jK  MjjL  KujM  }�(jK  MjjL  KuujO  }�(jI  }�(jK  MjjL  KujM  }�(jK  MjjL  Kuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jf  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$intersection�jF  K
jG  }�(jI  }�(jK  MqjL  KujM  }�(jK  MqjL  KuujO  }�(jI  }�(jK  MqjL  KujM  }�(jK  MqjL  Kuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jr  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$union�jF  K
jG  }�(jI  }�(jK  MrjL  KujM  }�(jK  MrjL  KuujO  }�(jI  }�(jK  MrjL  KujM  }�(jK  MrjL  Kuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j~  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$jaccard�jF  K
jG  }�(jI  }�(jK  MxjL  KujM  }�(jK  MxjL  KuujO  }�(jI  }�(jK  MxjL  KujM  }�(jK  MxjL  Kuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$phrases�jF  K
jG  }�(jI  }�(jK  M{jL  KujM  }�(jK  M{jL  KuujO  }�(jI  }�(jK  M{jL  KujM  }�(jK  M{jL  Kuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$phraseBonus�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$phrase�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K$uujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K$uuj^  j7  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j9  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �extractCodeFromChunk�jF  KjG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K)uujg  ]�(}�(jD  �$chunk�jF  K
jG  }�(jI  }�(jK  M�jL  K*ujM  }�(jK  M�jL  K6uujO  }�(jI  }�(jK  M�jL  K0ujM  }�(jK  M�jL  K6uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$language�jF  K
jG  }�(jI  }�(jK  M�jL  K8ujM  }�(jK  M�jL  KIuujO  }�(jI  }�(jK  M�jL  K@ujM  }�(jK  M�jL  KIuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$content�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$examples�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$pattern�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$result�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$match�jF  K
jG  }�(jI  }�(jK  M�jL  K!ujM  }�(jK  M�jL  K'uujO  }�(jI  }�(jK  M�jL  K!ujM  }�(jK  M�jL  K'uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$codeLang�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$codeContent�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j&  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$langMatch�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j2  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$langMatch�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j>  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$langMatch�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jJ  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$langMatch�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jV  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$langMatch�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jb  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$langMatch�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jn  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$langMatch�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K&uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jz  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$examples�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �extractContext�jF  KjG  }�(jI  }�(jK  M�jL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K#uujg  ]�(}�(jD  �$content�jF  K
jG  }�(jI  }�(jK  M�jL  K$ujM  }�(jK  M�jL  K3uujO  }�(jI  }�(jK  M�jL  K+ujM  }�(jK  M�jL  K3uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$codeBlock�jF  K
jG  }�(jI  }�(jK  M�jL  K5ujM  }�(jK  M�jL  KFuujO  }�(jI  }�(jK  M�jL  K<ujM  }�(jK  M�jL  KFuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$position�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$beforeStart�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$beforeText�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$afterStart�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$afterText�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$beforeText�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$afterText�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$context�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j
  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �extractKeyTerms�jF  KjG  }�(jI  }�(jK  MjL  KujM  }�(jK  M3jL  KuujO  }�(jI  }�(jK  M
jL  KujM  }�(jK  M
jL  K$uujg  ]�(}�(jD  �$content�jF  K
jG  }�(jI  }�(jK  M
jL  K%ujM  }�(jK  M
jL  K4uujO  }�(jI  }�(jK  M
jL  K,ujM  }�(jK  M
jL  K4uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j"  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$cleanContent�jF  K
jG  }�(jI  }�(jK  M
jL  KujM  }�(jK  M
jL  KuujO  }�(jI  }�(jK  M
jL  KujM  }�(jK  M
jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j.  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$cleanContent�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j:  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$cleanContent�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jF  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$cleanContent�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jR  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$words�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j^  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$words�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jj  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$stopWords�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jv  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$keyTerms�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$termCounts�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$word�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  K uujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  K uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$termCounts�jF  K
jG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$word�jF  K
jG  }�(jI  }�(jK  MjL  K ujM  }�(jK  MjL  K%uujO  }�(jI  }�(jK  MjL  K ujM  }�(jK  MjL  K%uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$keyTerms�jF  K
jG  }�(jI  }�(jK  M'jL  KujM  }�(jK  M'jL  KuujO  }�(jI  }�(jK  M'jL  KujM  }�(jK  M'jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$openfgaTerms�jF  K
jG  }�(jI  }�(jK  M*jL  KujM  }�(jK  M*jL  KuujO  }�(jI  }�(jK  M*jL  KujM  }�(jK  M*jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$openfgaTerm�jF  K
jG  }�(jI  }�(jK  M,jL  K"ujM  }�(jK  M,jL  K.uujO  }�(jI  }�(jK  M,jL  K"ujM  }�(jK  M,jL  K.uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$keyTerms�jF  K
jG  }�(jI  }�(jK  M.jL  KujM  }�(jK  M.jL  KuujO  }�(jI  }�(jK  M.jL  KujM  }�(jK  M.jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �formatCodeExample�jF  KjG  }�(jI  }�(jK  M5jL  KujM  }�(jK  MfjL  KuujO  }�(jI  }�(jK  M<jL  KujM  }�(jK  M<jL  K&uujg  ]�(}�(jD  �$example�jF  K
jG  }�(jI  }�(jK  M<jL  K'ujM  }�(jK  M<jL  K5uujO  }�(jI  }�(jK  M<jL  K-ujM  }�(jK  M<jL  K5uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$number�jF  K
jG  }�(jI  }�(jK  M<jL  K7ujM  }�(jK  M<jL  KBuujO  }�(jI  }�(jK  M<jL  K;ujM  }�(jK  M<jL  KBuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$includeContext�jF  K
jG  }�(jI  }�(jK  M<jL  KDujM  }�(jK  M<jL  KXuujO  }�(jI  }�(jK  M<jL  KIujM  }�(jK  M<jL  KXuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$markdown�jF  K
jG  }�(jI  }�(jK  M>jL  KujM  }�(jK  M>jL  KuujO  }�(jI  }�(jK  M>jL  KujM  }�(jK  M>jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunk�jF  K
jG  }�(jI  }�(jK  M@jL  KujM  }�(jK  M@jL  KuujO  }�(jI  }�(jK  M@jL  KujM  }�(jK  M@jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j*  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$chunkSdk�jF  K
jG  }�(jI  }�(jK  MDjL  KujM  }�(jK  MDjL  KuujO  }�(jI  }�(jK  MDjL  KujM  }�(jK  MDjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j6  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunkClass�jF  K
jG  }�(jI  }�(jK  MIjL  KujM  }�(jK  MIjL  KuujO  }�(jI  }�(jK  MIjL  KujM  }�(jK  MIjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jB  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunkMethod�jF  K
jG  }�(jI  }�(jK  MMjL  KujM  }�(jK  MMjL  KuujO  }�(jI  }�(jK  MMjL  KujM  }�(jK  MMjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jN  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$exampleLang�jF  K
jG  }�(jI  }�(jK  MTjL  KujM  }�(jK  MTjL  KuujO  }�(jI  }�(jK  MTjL  KujM  }�(jK  MTjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jZ  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$context�jF  K
jG  }�(jI  }�(jK  M\jL  KujM  }�(jK  M\jL  KuujO  }�(jI  }�(jK  M\jL  KujM  }�(jK  M\jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jf  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$lang�jF  K
jG  }�(jI  }�(jK  MajL  KujM  }�(jK  MajL  K
uujO  }�(jI  }�(jK  MajL  KujM  }�(jK  MajL  K
uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jr  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$code�jF  K
jG  }�(jI  }�(jK  MbjL  KujM  }�(jK  MbjL  K
uujO  }�(jI  }�(jK  MbjL  KujM  }�(jK  MbjL  K
uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j~  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �formatSearchResult�jF  KjG  }�(jI  }�(jK  MhjL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  MnjL  KujM  }�(jK  MnjL  K'uujg  ]�(}�(jD  �$result�jF  K
jG  }�(jI  }�(jK  MnjL  K(ujM  }�(jK  MnjL  K5uujO  }�(jI  }�(jK  MnjL  K.ujM  }�(jK  MnjL  K5uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$number�jF  K
jG  }�(jI  }�(jK  MnjL  K7ujM  }�(jK  MnjL  KBuujO  }�(jI  }�(jK  MnjL  K;ujM  }�(jK  MnjL  KBuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$markdown�jF  K
jG  }�(jI  }�(jK  MpjL  KujM  }�(jK  MpjL  KuujO  }�(jI  }�(jK  MpjL  KujM  }�(jK  MpjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$title�jF  K
jG  }�(jI  }�(jK  MsjL  KujM  }�(jK  MsjL  KuujO  }�(jI  }�(jK  MsjL  KujM  }�(jK  MsjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdkName�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sourceName�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$scoreValue�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$preview�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$preview�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$id�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �formatSimilarResult�jF  KjG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K(uujg  ]�(}�(jD  �$chunk�jF  K
jG  }�(jI  }�(jK  M�jL  K)ujM  }�(jK  M�jL  K5uujO  }�(jI  }�(jK  M�jL  K/ujM  }�(jK  M�jL  K5uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j&  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$number�jF  K
jG  }�(jI  }�(jK  M�jL  K7ujM  }�(jK  M�jL  KBuujO  }�(jI  }�(jK  M�jL  K;ujM  }�(jK  M�jL  KBuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j2  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$markdown�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j>  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$title�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jJ  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$chunkSdkValue�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jV  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$simScore�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jb  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sourceValue�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jn  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$preview�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jz  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$preview�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$id�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �mapLanguageToSdk�jF  KjG  }�(jI  }�(jK  M�jL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  K%uujg  ]�(}�(jD  �	$language�jF  K
jG  }�(jI  }�(jK  M�jL  K&ujM  }�(jK  M�jL  K7uujO  }�(jI  }�(jK  M�jL  K.ujM  }�(jK  M�jL  K7uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$mapping�jF  K
jG  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  KuujO  }�(jI  }�(jK  M�jL  KujM  }�(jK  M�jL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �
performSearch�jF  KjG  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  KuujO  }�(jI  }�(jK  M
jL  KujM  }�(jK  M
jL  K"uujg  ]�(}�(jD  �$index�jF  K
jG  }�(jI  }�(jK  M
jL  K#ujM  }�(jK  M
jL  K<uujO  }�(jI  }�(jK  M
jL  K6ujM  }�(jK  M
jL  K<uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$query�jF  K
jG  }�(jI  }�(jK  M
jL  K>ujM  }�(jK  M
jL  KKuujO  }�(jI  }�(jK  M
jL  KEujM  }�(jK  M
jL  KKuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  M
jL  KMujM  }�(jK  M
jL  KYuujO  }�(jI  }�(jK  M
jL  KUujM  }�(jK  M
jL  KYuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$searchType�jF  K
jG  }�(jI  }�(jK  M
jL  K[ujM  }�(jK  M
jL  KmuujO  }�(jI  }�(jK  M
jL  KbujM  }�(jK  M
jL  Kmuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �searchForClasses�jF  KjG  }�(jI  }�(jK  MjL  KujM  }�(jK  M+jL  KuujO  }�(jI  }�(jK  MjL  KujM  }�(jK  MjL  K%uujg  ]�(}�(jD  �$index�jF  K
jG  }�(jI  }�(jK  MjL  K&ujM  }�(jK  MjL  K?uujO  }�(jI  }�(jK  MjL  K9ujM  }�(jK  MjL  K?uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$query�jF  K
jG  }�(jI  }�(jK  MjL  KAujM  }�(jK  MjL  KNuujO  }�(jI  }�(jK  MjL  KHujM  }�(jK  MjL  KNuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j"  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  MjL  KPujM  }�(jK  MjL  K\uujO  }�(jI  }�(jK  MjL  KXujM  }�(jK  MjL  K\uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j.  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$allChunks�jF  K
jG  }�(jI  }�(jK  M!jL  KujM  }�(jK  M!jL  KuujO  }�(jI  }�(jK  M!jL  KujM  }�(jK  M!jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j:  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$classResults�jF  K
jG  }�(jI  }�(jK  M"jL  KujM  }�(jK  M"jL  KuujO  }�(jI  }�(jK  M"jL  KujM  }�(jK  M"jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jF  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$allChunk�jF  K
jG  }�(jI  }�(jK  M$jL  KujM  }�(jK  M$jL  K(uujO  }�(jI  }�(jK  M$jL  KujM  }�(jK  M$jL  K(uuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jR  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$classResults�jF  K
jG  }�(jI  }�(jK  M&jL  KujM  }�(jK  M&jL  KuujO  }�(jI  }�(jK  M&jL  KujM  }�(jK  M&jL  Kuuj^  j  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j^  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j
  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �searchForMethods�jF  KjG  }�(jI  }�(jK  M-jL  KujM  }�(jK  MAjL  KuujO  }�(jI  }�(jK  M5jL  KujM  }�(jK  M5jL  K%uujg  ]�(}�(jD  �$index�jF  K
jG  }�(jI  }�(jK  M5jL  K&ujM  }�(jK  M5jL  K?uujO  }�(jI  }�(jK  M5jL  K9ujM  }�(jK  M5jL  K?uuj^  jk  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jv  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$query�jF  K
jG  }�(jI  }�(jK  M5jL  KAujM  }�(jK  M5jL  KNuujO  }�(jI  }�(jK  M5jL  KHujM  }�(jK  M5jL  KNuuj^  jk  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  M5jL  KPujM  }�(jK  M5jL  K\uujO  }�(jI  }�(jK  M5jL  KXujM  }�(jK  M5jL  K\uuj^  jk  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$allChunks�jF  K
jG  }�(jI  }�(jK  M7jL  KujM  }�(jK  M7jL  KuujO  }�(jI  }�(jK  M7jL  KujM  }�(jK  M7jL  Kuuj^  jk  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$methodResults�jF  K
jG  }�(jI  }�(jK  M8jL  KujM  }�(jK  M8jL  KuujO  }�(jI  }�(jK  M8jL  KujM  }�(jK  M8jL  Kuuj^  jk  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$allChunk�jF  K
jG  }�(jI  }�(jK  M:jL  KujM  }�(jK  M:jL  K(uujO  }�(jI  }�(jK  M:jL  KujM  }�(jK  M:jL  K(uuj^  jk  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$methodResults�jF  K
jG  }�(jI  }�(jK  M<jL  KujM  }�(jK  M<jL  KuujO  }�(jI  }�(jK  M<jL  KujM  }�(jK  M<jL  Kuuj^  jk  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  jm  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uu}�(jD  �searchForSections�jF  KjG  }�(jI  }�(jK  MCjL  KujM  }�(jK  MWjL  KuujO  }�(jI  }�(jK  MKjL  KujM  }�(jK  MKjL  K&uujg  ]�(}�(jD  �$index�jF  K
jG  }�(jI  }�(jK  MKjL  K'ujM  }�(jK  MKjL  K@uujO  }�(jI  }�(jK  MKjL  K:ujM  }�(jK  MKjL  K@uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$query�jF  K
jG  }�(jI  }�(jK  MKjL  KBujM  }�(jK  MKjL  KOuujO  }�(jI  }�(jK  MKjL  KIujM  }�(jK  MKjL  KOuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sdk�jF  K
jG  }�(jI  }�(jK  MKjL  KQujM  }�(jK  MKjL  K]uujO  }�(jI  }�(jK  MKjL  KYujM  }�(jK  MKjL  K]uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �
$allChunks�jF  K
jG  }�(jI  }�(jK  MMjL  KujM  }�(jK  MMjL  KuujO  }�(jI  }�(jK  MMjL  KujM  }�(jK  MMjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sectionResults�jF  K
jG  }�(jI  }�(jK  MNjL  KujM  }�(jK  MNjL  KuujO  }�(jI  }�(jK  MNjL  KujM  }�(jK  MNjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �	$allChunk�jF  K
jG  }�(jI  }�(jK  MPjL  KujM  }�(jK  MPjL  K(uujO  }�(jI  }�(jK  MPjL  KujM  }�(jK  MPjL  K(uuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�u}�(jD  �$sectionResults�jF  K
jG  }�(jI  }�(jK  MRjL  KujM  }�(jK  MRjL  KuujO  }�(jI  }�(jK  MRjL  KujM  }�(jK  MRjL  Kuuj^  j�  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj\  ]�uej^  j_  jS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  j�  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uuejS  }�(jU  �Rfile:///Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jW  ja  jX  �K/Users/evan/Developer/evansims/openfga-mcp/src/Tools/DocumentationTools.php�jZ  j[  uj^  Nuji  jw  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j(  j4  j@  jL  jX  jd  jp  j|  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j   j  j  j$  j0  j<  jH  jT  j`  jl  jx  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j   j,  j8  jG  jP  j\  jh  jt  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j(  j7  j@  jL  jX  jd  jp  j|  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j   j  j  j$  j0  j<  jH  jT  j`  jl  jx  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j   j,  j8  jD  jP  j\  jh  jt  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j(  j4  j@  jL  jX  jd  jp  j|  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j   j  j  j$  j0  j<  jH  jT  j`  jl  jx  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j   j,  j8  jD  jP  j\  jk  jt  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  e]�(jC  j_  e�����.src/Documentation/DocumentationIndex.php-False�� 5decbb0388fe323246fab949299c4898�]�(}�(�name��OpenFGA\MCP\Documentation��kind�K�range�}�(�start�}�(�line�K�	character�K u�end�}�(j<  Kj=  K$uu�selectionRange�}�(j:  }�(j<  Kj=  K
uj>  }�(j<  Kj=  K#uujS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j9  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  �(src/Documentation/DocumentationIndex.php�uj\  ]�j^  Nu}�(j5  �DocumentationIndex�j7  Kj8  }�(j:  }�(j<  K
j=  K uj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  K
j=  Kuj>  }�(j<  K
j=  Kuu�children�]�(}�(j5  �CHUNK_SIZE_LIMIT�j7  Kj8  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  K-uuj@  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  K&uuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jU  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	DOCS_PATH�j7  Kj8  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  K<uuj@  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  K"uuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  ja  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunks�j7  Kj8  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  Kuuj@  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  Kuuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jm  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$index�j7  Kj8  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  Kuuj@  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  Kuuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jy  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$initialized�j7  Kj8  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  K%uuj@  }�(j:  }�(j<  Kj=  Kuj>  }�(j<  Kj=  Kuuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdkList�j7  Kj8  }�(j:  }�(j<  K"j=  Kuj>  }�(j<  K"j=  Kuuj@  }�(j:  }�(j<  K"j=  Kuj>  }�(j<  K"j=  Kuuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �getChunk�j7  Kj8  }�(j:  }�(j<  K$j=  Kuj>  }�(j<  K0j=  Kuuj@  }�(j:  }�(j<  K+j=  Kuj>  }�(j<  K+j=  KuujQ  ]�}�(j5  �$chunkId�j7  K
j8  }�(j:  }�(j<  K+j=  Kuj>  }�(j<  K+j=  K,uuj@  }�(j:  }�(j<  K+j=  K$uj>  }�(j<  K+j=  K,uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uaj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �getChunksBySection�j7  Kj8  }�(j:  }�(j<  K2j=  Kuj>  }�(j<  KSj=  Kuuj@  }�(j:  }�(j<  K:j=  Kuj>  }�(j<  K:j=  K&uujQ  ]�(}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  K:j=  K'uj>  }�(j<  K:j=  K2uuj@  }�(j:  }�(j<  K:j=  K.uj>  }�(j<  K:j=  K2uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$section�j7  K
j8  }�(j:  }�(j<  K:j=  K4uj>  }�(j<  K:j=  KCuuj@  }�(j:  }�(j<  K:j=  K;uj>  }�(j<  K:j=  KCuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdkKey�j7  K
j8  }�(j:  }�(j<  K=j=  Kuj>  }�(j<  K=j=  Kuuj@  }�(j:  }�(j<  K=j=  Kuj>  }�(j<  K=j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sectionData�j7  K
j8  }�(j:  }�(j<  KCj=  Kuj>  }�(j<  KCj=  Kuuj@  }�(j:  }�(j<  KCj=  Kuj>  }�(j<  KCj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$chunkIds�j7  K
j8  }�(j:  }�(j<  KIj=  Kuj>  }�(j<  KIj=  Kuuj@  }�(j:  }�(j<  KIj=  Kuj>  }�(j<  KIj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunks�j7  K
j8  }�(j:  }�(j<  KJj=  Kuj>  }�(j<  KJj=  Kuuj@  }�(j:  }�(j<  KJj=  Kuj>  }�(j<  KJj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunkId�j7  K
j8  }�(j:  }�(j<  KLj=  Kuj>  }�(j<  KLj=  K&uuj@  }�(j:  }�(j<  KLj=  Kuj>  }�(j<  KLj=  K&uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunks�j7  K
j8  }�(j:  }�(j<  KNj=  Kuj>  }�(j<  KNj=  Kuuj@  }�(j:  }�(j<  KNj=  Kuj>  }�(j<  KNj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �getClassDocumentation�j7  Kj8  }�(j:  }�(j<  KUj=  Kuj>  }�(j<  Kwj=  Kuuj@  }�(j:  }�(j<  K]j=  Kuj>  }�(j<  K]j=  K)uujQ  ]�(}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  K]j=  K*uj>  }�(j<  K]j=  K5uuj@  }�(j:  }�(j<  K]j=  K1uj>  }�(j<  K]j=  K5uuj^  j  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j*  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$className�j7  K
j8  }�(j:  }�(j<  K]j=  K7uj>  }�(j<  K]j=  KHuuj@  }�(j:  }�(j<  K]j=  K>uj>  }�(j<  K]j=  KHuuj^  j  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j6  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdkKey�j7  K
j8  }�(j:  }�(j<  K`j=  Kuj>  }�(j<  K`j=  Kuuj@  }�(j:  }�(j<  K`j=  Kuj>  }�(j<  K`j=  Kuuj^  j  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jB  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$classInfo�j7  K
j8  }�(j:  }�(j<  Kfj=  Kuj>  }�(j<  Kfj=  Kuuj@  }�(j:  }�(j<  Kfj=  Kuj>  }�(j<  Kfj=  Kuuj^  j  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jN  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  u�      j\  ]�u}�(j5  �$chunkId�j7  K
j8  }�(j:  }�(j<  Kgj=  Kuj>  }�(j<  Kgj=  Kuuj@  }�(j:  }�(j<  Kgj=  Kuj>  }�(j<  Kgj=  Kuuj^  j  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jZ  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunk�j7  K
j8  }�(j:  }�(j<  Kmj=  Kuj>  }�(j<  Kmj=  Kuuj@  }�(j:  }�(j<  Kmj=  Kuj>  }�(j<  Kmj=  Kuuj^  j  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jf  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j!  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �getMethodDocumentation�j7  Kj8  }�(j:  }�(j<  Kyj=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  K*uujQ  ]�(}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  K�j=  K+uj>  }�(j<  K�j=  K6uuj@  }�(j:  }�(j<  K�j=  K2uj>  }�(j<  K�j=  K6uuj^  js  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j~  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$className�j7  K
j8  }�(j:  }�(j<  K�j=  K8uj>  }�(j<  K�j=  KIuuj@  }�(j:  }�(j<  K�j=  K?uj>  }�(j<  K�j=  KIuuj^  js  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$methodName�j7  K
j8  }�(j:  }�(j<  K�j=  KKuj>  }�(j<  K�j=  K]uuj@  }�(j:  }�(j<  K�j=  KRuj>  }�(j<  K�j=  K]uuj^  js  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$classDoc�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  js  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$methodInfo�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  js  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunkId�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  js  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunk�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  js  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  ju  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �
getSdkList�j7  Kj8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �getSdkOverview�j7  Kj8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  K"uujQ  ]�(}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  K�j=  K#uj>  }�(j<  K�j=  K.uuj@  }�(j:  }�(j<  K�j=  K*uj>  }�(j<  K�j=  K.uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdkKey�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdkData�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �
initialize�j7  Kj8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
isInitialized�j7  Kj8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  K!uuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �searchChunks�j7  Kj8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  K uujQ  ]�(}�(j5  �$query�j7  K
j8  }�(j:  }�(j<  K�j=  K!uj>  }�(j<  K�j=  K.uuj@  }�(j:  }�(j<  K�j=  K(uj>  }�(j<  K�j=  K.uuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j2  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  K�j=  K0uj>  }�(j<  K�j=  KCuuj@  }�(j:  }�(j<  K�j=  K8uj>  }�(j<  K�j=  K<uuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j>  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$limit�j7  K
j8  }�(j:  }�(j<  K�j=  KEuj>  }�(j<  K�j=  KTuuj@  }�(j:  }�(j<  K�j=  KIuj>  }�(j<  K�j=  KOuuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jJ  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$results�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jV  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$queryLower�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jb  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunkId�j7  K
j8  }�(j:  }�(j<  K�j=  K"uj>  }�(j<  K�j=  K*uuj@  }�(j:  }�(j<  K�j=  K"uj>  }�(j<  K�j=  K*uuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jn  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunk�j7  K
j8  }�(j:  }�(j<  K�j=  K.uj>  }�(j<  K�j=  K4uuj@  }�(j:  }�(j<  K�j=  K.uj>  }�(j<  K�j=  K4uuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jz  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$content�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$score�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$results�j7  K
j8  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj@  }�(j:  }�(j<  K�j=  Kuj>  }�(j<  K�j=  Kuuj^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �Closure�j7  Kj8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  KNuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  KNuujQ  ]�(}�(j5  �$a�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$b�j7  K
j8  }�(j:  }�(j<  Mj=  K!uj>  }�(j<  Mj=  K)uuj@  }�(j:  }�(j<  Mj=  K'uj>  }�(j<  Mj=  K)uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  j'  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uuej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j)  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �
buildIndex�j7  Kj8  }�(j:  }�(j<  M
j=  Kuj>  }�(j<  M$j=  Kuuj@  }�(j:  }�(j<  M
j=  Kuj>  }�(j<  M
j=  KuujQ  ]�(}�(j5  �$sdkData�j7  K
j8  }�(j:  }�(j<  M
j=  K!uj>  }�(j<  M
j=  K)uuj@  }�(j:  }�(j<  M
j=  K!uj>  }�(j<  M
j=  K)uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$chunkIds�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$counter�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$i�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentId�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j
  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentId�j7  K
j8  }�(j:  }�(j<  Mj=  K"uj>  }�(j<  Mj=  K,uuj@  }�(j:  }�(j<  Mj=  K"uj>  }�(j<  Mj=  K,uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentId�j7  K
j8  }�(j:  }�(j<  M j=  K"uj>  }�(j<  M j=  K,uuj@  }�(j:  }�(j<  M j=  K"uj>  }�(j<  M j=  K,uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j"  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �calculateRelevanceScore�j7  Kj8  }�(j:  }�(j<  M&j=  Kuj>  }�(j<  MKj=  Kuuj@  }�(j:  }�(j<  M+j=  Kuj>  }�(j<  M+j=  K,uujQ  ]�(}�(j5  �$query�j7  K
j8  }�(j:  }�(j<  M+j=  K-uj>  }�(j<  M+j=  K:uuj@  }�(j:  }�(j<  M+j=  K4uj>  }�(j<  M+j=  K:uuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j:  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$content�j7  K
j8  }�(j:  }�(j<  M+j=  K<uj>  }�(j<  M+j=  KKuuj@  }�(j:  }�(j<  M+j=  KCuj>  }�(j<  M+j=  KKuuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jF  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$metadata�j7  K
j8  }�(j:  }�(j<  M+j=  KMuj>  }�(j<  M+j=  K\uuj@  }�(j:  }�(j<  M+j=  KSuj>  }�(j<  M+j=  K\uuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jR  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$score�j7  K
j8  }�(j:  }�(j<  M-j=  Kuj>  }�(j<  M-j=  Kuuj@  }�(j:  }�(j<  M-j=  Kuj>  }�(j<  M-j=  Kuuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j^  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$queryTerms�j7  K
j8  }�(j:  }�(j<  M.j=  Kuj>  }�(j<  M.j=  Kuuj@  }�(j:  }�(j<  M.j=  Kuj>  }�(j<  M.j=  Kuuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jj  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$queryTerm�j7  K
j8  }�(j:  }�(j<  M0j=  K uj>  }�(j<  M0j=  K*uuj@  }�(j:  }�(j<  M0j=  K uj>  }�(j<  M0j=  K*uuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jv  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$termCount�j7  K
j8  }�(j:  }�(j<  M1j=  Kuj>  }�(j<  M1j=  Kuuj@  }�(j:  }�(j<  M1j=  Kuj>  }�(j<  M1j=  Kuuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$class�j7  K
j8  }�(j:  }�(j<  M5j=  Kuj>  }�(j<  M5j=  Kuuj@  }�(j:  }�(j<  M5j=  Kuj>  }�(j<  M5j=  Kuuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$method�j7  K
j8  }�(j:  }�(j<  M<j=  Kuj>  }�(j<  M<j=  Kuuj@  }�(j:  }�(j<  M<j=  Kuj>  }�(j<  M<j=  Kuuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$section�j7  K
j8  }�(j:  }�(j<  MCj=  Kuj>  }�(j<  MCj=  Kuuj@  }�(j:  }�(j<  MCj=  Kuj>  }�(j<  MCj=  Kuuj^  j/  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j1  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �createChunk�j7  Kj8  }�(j:  }�(j<  MMj=  Kuj>  }�(j<  Mwj=  Kuuj@  }�(j:  }�(j<  MTj=  Kuj>  }�(j<  MTj=  K uujQ  ]�(}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  MTj=  K!uj>  }�(j<  MTj=  K,uuj@  }�(j:  }�(j<  MTj=  K(uj>  }�(j<  MTj=  K,uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$lines�j7  K
j8  }�(j:  }�(j<  MTj=  K.uj>  }�(j<  MTj=  K:uuj@  }�(j:  }�(j<  MTj=  K4uj>  }�(j<  MTj=  K:uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$section�j7  K
j8  }�(j:  }�(j<  MTj=  K<uj>  }�(j<  MTj=  KLuuj@  }�(j:  }�(j<  MTj=  KDuj>  }�(j<  MTj=  KLuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$class�j7  K
j8  }�(j:  }�(j<  MTj=  KNuj>  }�(j<  MTj=  K\uuj@  }�(j:  }�(j<  MTj=  KVuj>  }�(j<  MTj=  K\uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$method�j7  K
j8  }�(j:  }�(j<  MTj=  K^uj>  }�(j<  MTj=  Kmuuj@  }�(j:  }�(j<  MTj=  Kfuj>  }�(j<  MTj=  Kmuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$content�j7  K
j8  }�(j:  }�(j<  MVj=  Kuj>  }�(j<  MVj=  Kuuj@  }�(j:  }�(j<  MVj=  Kuj>  }�(j<  MVj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunkId�j7  K
j8  }�(j:  }�(j<  MWj=  Kuj>  }�(j<  MWj=  Kuuj@  }�(j:  }�(j<  MWj=  Kuj>  }�(j<  MWj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$metadata�j7  K
j8  }�(j:  }�(j<  MYj=  Kuj>  }�(j<  MYj=  Kuuj@  }�(j:  }�(j<  MYj=  Kuj>  }�(j<  MYj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$chunkId�j7  K
j8  }�(j:  }�(j<  Maj=  Kuj>  }�(j<  Maj=  Kuuj@  }�(j:  }�(j<  Maj=  Kuj>  }�(j<  Maj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  Mhj=  Kuj>  }�(j<  Mhj=  Kuuj@  }�(j:  }�(j<  Mhj=  Kuj>  }�(j<  Mhj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j*  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  Mkj=  Kuj>  }�(j<  Mkj=  Kuuj@  }�(j:  }�(j<  Mkj=  Kuj>  }�(j<  Mkj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j6  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$section�j7  K
j8  }�(j:  }�(j<  Mkj=  K+uj>  }�(j<  Mkj=  K3uuj@  }�(j:  }�(j<  Mkj=  K+uj>  }�(j<  Mkj=  K3uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jB  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  Mpj=  Kuj>  }�(j<  Mpj=  K!uuj@  }�(j:  }�(j<  Mpj=  Kuj>  }�(j<  Mpj=  K!uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jN  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$class�j7  K
j8  }�(j:  }�(j<  Mpj=  K.uj>  }�(j<  Mpj=  K4uuj@  }�(j:  }�(j<  Mpj=  K.uj>  }�(j<  Mpj=  K4uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jZ  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  Mtj=  Kuj>  }�(j<  Mtj=  K!uuj@  }�(j:  }�(j<  Mtj=  Kuj>  }�(j<  Mtj=  K!uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jf  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$class�j7  K
j8  }�(j:  }�(j<  Mtj=  K.uj>  }�(j<  Mtj=  K4uuj@  }�(j:  }�(j<  Mtj=  K.uj>  }�(j<  Mtj=  K4uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jr  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$method�j7  K
j8  }�(j:  }�(j<  Mtj=  KAuj>  }�(j<  Mtj=  KHuuj@  }�(j:  }�(j<  Mtj=  KAuj>  }�(j<  Mtj=  KHuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j~  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �ensureInitialized�j7  Kj8  }�(j:  }�(j<  Myj=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M|j=  Kuj>  }�(j<  M|j=  K&uuj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �extractClassNameFromSource�j7  Kj8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K/uujQ  ]�}�(j5  �$sourceFile�j7  K
j8  }�(j:  }�(j<  M�j=  K0uj>  }�(j<  M�j=  KBuuj@  }�(j:  }�(j<  M�j=  K7uj>  }�(j<  M�j=  KBuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uaj^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �generatePreview�j7  Kj8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K$uujQ  ]�(}�(j5  �$content�j7  K
j8  }�(j:  }�(j<  M�j=  K%uj>  }�(j<  M�j=  K4uuj@  }�(j:  }�(j<  M�j=  K,uj>  }�(j<  M�j=  K4uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$query�j7  K
j8  }�(j:  }�(j<  M�j=  K6uj>  }�(j<  M�j=  KCuuj@  }�(j:  }�(j<  M�j=  K=uj>  }�(j<  M�j=  KCuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$previewLength�j7  K
j8  }�(j:  }�(j<  M�j=  KEuj>  }�(j<  M�j=  K]uuj@  }�(j:  }�(j<  M�j=  KIuj>  }�(j<  M�j=  KWuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$queryLower�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$contentLower�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$position�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$queryTerms�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$queryTerm�j7  K
j8  }�(j:  }�(j<  M�j=  K$uj>  }�(j<  M�j=  K.uuj@  }�(j:  }�(j<  M�j=  K$uj>  }�(j<  M�j=  K.uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$position�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$position�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j&  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$start�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j2  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$end�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j>  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$preview�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jJ  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$preview�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jV  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �parseDocumentationFile�j7  Kj8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M!j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K+uujQ  ]�(}�(j5  �$file�j7  K
j8  }�(j:  }�(j<  M�j=  K,uj>  }�(j<  M�j=  K8uuj@  }�(j:  }�(j<  M�j=  K3uj>  }�(j<  M�j=  K8uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jn  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  M�j=  K:uj>  }�(j<  M�j=  KEuuj@  }�(j:  }�(j<  M�j=  KAuj>  }�(j<  M�j=  KEuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jz  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$content�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$lines�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentClass�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentMethod�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$lineNumber�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$inSourceBlock�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$line�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K uuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K!uuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K!uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K!uuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K!uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j
  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$inSourceBlock�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentClass�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j"  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j.  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$inSourceBlock�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j:  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentClass�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jF  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentMethod�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jR  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j^  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jj  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  M�j=  K!uj>  }�(j<  M�j=  K%uuj@  }�(j:  }�(j<  M�j=  K!uj>  }�(j<  M�j=  K%uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jv  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  M�j=  K3uj>  }�(j<  M�j=  KBuuj@  }�(j:  }�(j<  M�j=  K3uj>  }�(j<  M�j=  KBuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentClass�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  M j=  K!uj>  }�(j<  M j=  K%uuj@  }�(j:  }�(j<  M j=  K!uj>  }�(j<  M j=  K%uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentClass�j7  K
j8  }�(j:  }�(j<  M j=  K2uj>  }�(j<  M j=  K?uuj@  }�(j:  }�(j<  M j=  K2uj>  }�(j<  M j=  K?uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentMethod�j7  K
j8  }�(j:  }�(j<  M
j=  Kuj>  }�(j<  M
j=  Kuuj@  }�(j:  }�(j<  M
j=  Kuj>  }�(j<  M
j=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdk�j7  K
j8  }�(j:  }�(j<  M
j=  K!uj>  }�(j<  M
j=  K%uuj@  }�(j:  }�(j<  M
j=  K!uj>  }�(j<  M
j=  K%uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �
$currentClass�j7  K
j8  }�(j:  }�(j<  M
j=  K2uj>  }�(j<  M
j=  K?uuj@  }�(j:  }�(j<  M
j=  K2uj>  }�(j<  M
j=  K?uuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentMethod�j7  K
j8  }�(j:  }�(j<  M
j=  KLuj>  }�(j<  M
j=  KZuuj@  }�(j:  }�(j<  M
j=  KLuj>  }�(j<  M
j=  KZuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  Kuuj^  jc  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  je  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �parseGeneralDocumentation�j7  Kj8  }�(j:  }�(j<  M#j=  Kuj>  }�(j<  Mnj=  Kuuj@  }�(j:  }�(j<  M#j=  Kuj>  }�(j<  M#j=  K.uujQ  ]�(}�(j5  �$file�j7  K
j8  }�(j:  }�(j<  M#j=  K/uj>  }�(j<  M#j=  K;uuj@  }�(j:  }�(j<  M#j=  K6uj>  }�(j<  M#j=  K;uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$key�j7  K
j8  }�(j:  }�(j<  M#j=  K=uj>  }�(j<  M#j=  KHuuj@  }�(j:  }�(j<  M#j=  KDuj>  }�(j<  M#j=  KHuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$content�j7  K
j8  }�(j:  }�(j<  M%j=  Kuj>  }�(j<  M%j=  Kuuj@  }�(j:  }�(j<  M%j=  Kuj>  }�(j<  M%j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$lines�j7  K
j8  }�(j:  }�(j<  M+j=  Kuj>  }�(j<  M+j=  Kuuj@  }�(j:  }�(j<  M+j=  Kuj>  }�(j<  M+j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j*  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  M,j=  Kuj>  }�(j<  M,j=  Kuuj@  }�(j:  }�(j<  M,j=  Kuj>  }�(j<  M,j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j6  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  M-j=  Kuj>  }�(j<  M-j=  Kuuj@  }�(j:  }�(j<  M-j=  Kuj>  }�(j<  M-j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jB  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$lineNumber�j7  K
j8  }�(j:  }�(j<  M.j=  Kuj>  }�(j<  M.j=  Kuuj@  }�(j:  }�(j<  M.j=  Kuj>  }�(j<  M.j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jN  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$line�j7  K
j8  }�(j:  }�(j<  M0j=  Kuj>  }�(j<  M0j=  K uuj@  }�(j:  }�(j<  M0j=  Kuj>  }�(j<  M0j=  K uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jZ  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  M7j=  Kuj>  }�(j<  M7j=  Kuuj@  }�(j:  }�(j<  M7j=  Kuj>  }�(j<  M7j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jf  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  M;j=  Kuj>  }�(j<  M;j=  Kuuj@  }�(j:  }�(j<  M;j=  Kuj>  }�(j<  M;j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jr  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$cleaned�j7  K
j8  }�(j:  }�(j<  M?j=  Kuj>  }�(j<  M?j=  Kuuj@  }�(j:  }�(j<  M?j=  Kuj>  }�(j<  M?j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j~  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  M@j=  Kuj>  }�(j<  M@j=  Kuuj@  }�(j:  }�(j<  M@j=  Kuj>  }�(j<  M@j=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MCj=  Kuj>  }�(j<  MCj=  Kuuj@  }�(j:  }�(j<  MCj=  Kuj>  }�(j<  MCj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$cleaned�j7  K
j8  }�(j:  }�(j<  MEj=  Kuj>  }�(j<  MEj=  Kuuj@  }�(j:  }�(j<  MEj=  Kuj>  }�(j<  MEj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MFj=  Kuj>  }�(j<  MFj=  Kuuj@  }�(j:  }�(j<  MFj=  Kuj>  }�(j<  MFj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MHj=  Kuj>  }�(j<  MHj=  Kuuj@  }�(j:  }�(j<  MHj=  Kuj>  }�(j<  MHj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$cleaned�j7  K
j8  }�(j:  }�(j<  MJj=  Kuj>  }�(j<  MJj=  Kuuj@  }�(j:  }�(j<  MJj=  Kuj>  }�(j<  MJj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MKj=  Kuj>  }�(j<  MKj=  Kuuj@  }�(j:  }�(j<  MKj=  Kuj>  }�(j<  MKj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MLj=  Kuj>  }�(j<  MLj=  Kuuj@  }�(j:  }�(j<  MLj=  Kuj>  }�(j<  MLj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MPj=  Kuj>  }�(j<  MPj=  K#uuj@  }�(j:  }�(j<  MPj=  Kuj>  }�(j<  MPj=  K#uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MRj=  Kuj>  }�(j<  MRj=  K#uuj@  }�(j:  }�(j<  MRj=  Kuj>  }�(j<  MRj=  K#uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MSj=  Kuj>  }�(j<  MSj=  K#uuj@  }�(j:  }�(j<  MSj=  Kuj>  }�(j<  MSj=  K#uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  MWj=  Kuj>  }�(j<  MWj=  K'uuj@  }�(j:  }�(j<  MWj=  Kuj>  }�(j<  MWj=  K'uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$key�j7  K
j8  }�(j:  }�(j<  M\j=  K!uj>  }�(j<  M\j=  K%uuj@  }�(j:  }�(j<  M\j=  K!uj>  }�(j<  M\j=  K%uuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$currentSection�j7  K
j8  }�(j:  }�(j<  M\j=  K3uj>  }�(j<  M\j=  KBuuj@  }�(j:  }�(j<  M\j=  K3uj>  }�(j<  M\j=  KBuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j&   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  Mcj=  Kuj>  }�(j<  Mcj=  Kuuj@  }�(j:  }�(j<  Mcj=  Kuj>  }�(j<  Mcj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j2   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$buffer�j7  K
j8  }�(j:  }�(j<  Mgj=  Kuj>  }�(j<  Mgj=  Kuuj@  }�(j:  }�(j<  Mgj=  Kuj>  }�(j<  Mgj=  Kuuj^  j�  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j>   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uu}�(j5  �scanDocumentationFiles�j7  Kj8  }�(j:  }�(j<  Mpj=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  Msj=  Kuj>  }�(j<  Msj=  K+uujQ  ]�(}�(j5  �$files�j7  K
j8  }�(j:  }�(j<  Myj=  Kuj>  }�(j<  Myj=  Kuuj@  }�(j:  }�(j<  Myj=  Kuj>  }�(j<  Myj=  Kuuj^  jK   jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jV   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$file�j7  K
j8  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  K uuj@  }�(j:  }�(j<  Mj=  Kuj>  }�(j<  Mj=  K uuj^  jK   jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jb   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �	$filename�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jK   jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jn   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdkName�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  Kuuj^  jK   jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jz   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�u}�(j5  �$sdkName�j7  K
j8  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K%uuj@  }�(j:  }�(j<  M�j=  Kuj>  }�(j<  M�j=  K%uuj^  jK   jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  j�   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj\  ]�uej^  jI  jS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jM   jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uuejS  }�(jU  �Zfile:///Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jW  jK  jX  �S/Users/evan/Developer/evansims/openfga-mcp/src/Documentation/DocumentationIndex.php�jZ  jG  uj^  NujS  j_  jk  jw  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j(  j4  j@  jL  jX  jd  js  j|  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j   j  j  j'  j0  j<  jH  jT  j`  jl  jx  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j   j/  j8  jD  jP  j\  jh  jt  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j(  j4  j@  jL  jX  jd  jp  j|  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j   j  j  j$  j0  j<  jH  jT  jc  jl  jx  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j   j,  j8  jD  jP  j\  jh  jt  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j  j  j  j(  j4  j@  jL  jX  jd  jp  j|  j�  j�  j�  j�  j�  j�  j�  j�  j�  j�  j    j   j   j$   j0   j<   jK   jT   j`   jl   jx   j�   e]�(j4  jI  e�����1tests/Unit/Tools/DocumentationToolsTest.php-False�� 0e485d967d6978dcf6a2168061ac6d8d�]�(}�(�name��Closure��kind�K�range�}�(�start�}�(�line�K�	character�Ku�end�}�(j�   M�j�   Kuu�selectionRange�}�(j�   }�(j�   Kj�   Kuj�   }�(j�   M�j�   Kuu�children�]�(}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  �+tests/Unit/Tools/DocumentationToolsTest.php�uj�  ]�u}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   K
j�   Kuj�   }�(j�   Kj�   Kuuj�   }�(j�   }�(j�   K
j�   Kuj�   }�(j�   Kj�   Kuuj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�u}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Kj�   K$uj�   }�(j�   Klj�   Kuuj�   }�(j�   }�(j�   Kj�   K$uj�   }�(j�   Klj�   Kuuj�   ]�(}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Kj�   K,uj�   }�(j�   Kj�   K	uuj�   }�(j�   }�(j�   Kj�   K,uj�   }�(j�   Kj�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Kj�   K.uj�   }�(j�   Kj�   K	uuj�   }�(j�   }�(j�   Kj�   K.uj�   }�(j�   Kj�   K	uuj�   ]�(}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�u}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj�   }�(j�   }�(j�   Kj�   Kuj�   }�(j�   Kj�   Kuuj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uej   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Kj�   K0uj�   }�(j�   K"j�   K	uuj�   }�(j�   }�(j�   Kj�   K0uj�   }�(j�   K"j�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   K j�   Kuj�   }�(j�   K j�   Kuuj�   }�(j�   }�(j�   K j�   Kuj�   }�(j�   K j�   Kuuj   j!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   K$j�   K4uj�   }�(j�   K(j�   K	uuj�   }�(j�   }�(j�   K$j�   K4uj�   }�(j�   K(j�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   K%j�   Kuj�   }�(j�   K%j�   Kuuj�   }�(j�   }�(j�   K%j�   Kuj�   }�(j�   K%j�   Kuuj   j$!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j/!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j&!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   K*j�   K,uj�   }�(j�   K.j�   K	uuj�   }�(j�   }�(j�   K*j�   K,uj�   }�(j�   K.j�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   K+j�   Kuj�   }�(j�   K+j�   Kuuj�   }�(j�   }�(j�   K+j�   Kuj�   }�(j�   K+j�   Kuuj   j<!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  jG!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j>!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   K0j�   K,uj�   }�(j�   K6j�   K	uuj�   }�(j�   }�(j�   K0j�   K,uj�   }�(j�   K6j�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   K1j�   Kuj�   }�(j�   K1j�   Kuuj�   }�(j�   }�(j�   K1j�   Kuj�   }�(j�   K1j�   Kuuj   jT!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j_!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  jV!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure��       j�   Kj�   }�(j�   }�(j�   K8j�   K.uj�   }�(j�   K>j�   K	uuj�   }�(j�   }�(j�   K8j�   K.uj�   }�(j�   K>j�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   K9j�   Kuj�   }�(j�   K9j�   Kuuj�   }�(j�   }�(j�   K9j�   Kuj�   }�(j�   K9j�   Kuuj   jl!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  jw!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  jn!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   K@j�   K$uj�   }�(j�   KEj�   K	uuj�   }�(j�   }�(j�   K@j�   K$uj�   }�(j�   KEj�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   KAj�   Kuj�   }�(j�   KAj�   Kuuj�   }�(j�   }�(j�   KAj�   Kuj�   }�(j�   KAj�   Kuuj   j�!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   KGj�   K%uj�   }�(j�   KLj�   K	uuj�   }�(j�   }�(j�   KGj�   K%uj�   }�(j�   KLj�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   KHj�   Kuj�   }�(j�   KHj�   Kuuj�   }�(j�   }�(j�   KHj�   Kuj�   }�(j�   KHj�   Kuuj   j�!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   KNj�   K&uj�   }�(j�   KSj�   K	uuj�   }�(j�   }�(j�   KNj�   K&uj�   }�(j�   KSj�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   KOj�   Kuj�   }�(j�   KOj�   Kuuj�   }�(j�   }�(j�   KOj�   Kuj�   }�(j�   KOj�   Kuuj   j�!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   KUj�   K*uj�   }�(j�   K_j�   K	uuj�   }�(j�   }�(j�   KUj�   K*uj�   }�(j�   K_j�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   KVj�   Kuj�   }�(j�   KVj�   Kuuj�   }�(j�   }�(j�   KVj�   Kuj�   }�(j�   KVj�   Kuuj   j�!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Kaj�   K2uj�   }�(j�   Kkj�   K	uuj�   }�(j�   }�(j�   Kaj�   K2uj�   }�(j�   Kkj�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   Kbj�   Kuj�   }�(j�   Kbj�   Kuuj�   }�(j�   }�(j�   Kbj�   Kuj�   }�(j�   Kbj�   Kuuj   j�!  j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uj�  ]�uaj   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�!  j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uuej   j�   j�  }�(j�  �]file:///Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   j�  �V/Users/evan/Developer/evansims/openfga-mcp/tests/Unit/Tools/DocumentationToolsTest.php�j�  j�   uu}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Knj�   K#uj�   }�(j�   K�j�   Kuuj�   }�(j�   }�(j�   Knj�   K#uj�   }�(j�   K�j�   Kuuj�   ]�(}�(j�   �Closure�j�   Kj�   }�(j�   }�(j�   Koj�   K,uj�   }�(j�   Krj�   K	uuj�   }�(j�   }�(j�   Koj�   K,uj�   }�(j�   Krj�   K	uuj�   ]�}�(j�   �$result�j�   K
j�   }�(j�   }�(j�   Kpj�   Kuj�   }�(j�   Kpj�   Kuuj�   }�(j�   }�(j�   Kpj�   Kuj�   }�(j�   Kpj�   Kuuj   j"