Debug logging by Claude
This commit is contained in:
parent
b660459951
commit
817b74d167
1 changed files with 40 additions and 0 deletions
|
|
@ -19,7 +19,19 @@ const AUTH_TIMEOUT = 5 * 60 * 1000; // 5 minutes for user to complete auth in po
|
||||||
* @param options Configuration options for connecting to the MCP server.
|
* @param options Configuration options for connecting to the MCP server.
|
||||||
* @returns State and functions for interacting with the MCP connection.
|
* @returns State and functions for interacting with the MCP connection.
|
||||||
*/
|
*/
|
||||||
|
// Counter to track number of renders (for debugging infinite loops)
|
||||||
|
let renderCount = 0;
|
||||||
|
const MAX_RENDERS = 10;
|
||||||
|
|
||||||
export function useMcp(options: UseMcpOptions): UseMcpResult {
|
export function useMcp(options: UseMcpOptions): UseMcpResult {
|
||||||
|
renderCount++;
|
||||||
|
console.log(`[useMcp] Hook rendered #${renderCount}`, Date.now());
|
||||||
|
|
||||||
|
// Stop infinite renders for debugging
|
||||||
|
if (renderCount > MAX_RENDERS) {
|
||||||
|
console.error('TOO MANY RENDERS DETECTED - STOPPING INFINITE LOOP');
|
||||||
|
throw new Error('Infinite render loop detected in useMcp hook');
|
||||||
|
}
|
||||||
const {
|
const {
|
||||||
url,
|
url,
|
||||||
clientName, // Passed to BrowserOAuthClientProvider
|
clientName, // Passed to BrowserOAuthClientProvider
|
||||||
|
|
@ -214,6 +226,14 @@ export function useMcp(options: UseMcpOptions): UseMcpResult {
|
||||||
// ===== Connection Logic =====
|
// ===== Connection Logic =====
|
||||||
|
|
||||||
const connect = useCallback(async () => {
|
const connect = useCallback(async () => {
|
||||||
|
console.log(`[useMcp] connect callback executed #${renderCount}`, Date.now());
|
||||||
|
console.log(' → connect deps state:', {
|
||||||
|
url,
|
||||||
|
addLog: !!addLog,
|
||||||
|
failConnection: !!failConnection,
|
||||||
|
disconnect: !!disconnect,
|
||||||
|
state
|
||||||
|
});
|
||||||
if (connectingRef.current) {
|
if (connectingRef.current) {
|
||||||
addLog('debug', 'Connection attempt already in progress, skipping.');
|
addLog('debug', 'Connection attempt already in progress, skipping.');
|
||||||
return;
|
return;
|
||||||
|
|
@ -467,6 +487,13 @@ export function useMcp(options: UseMcpOptions): UseMcpResult {
|
||||||
|
|
||||||
// Effect for handling auth callback messages from popup
|
// Effect for handling auth callback messages from popup
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
console.log(`[useMcp] Auth callback effect executed #${renderCount}`, Date.now());
|
||||||
|
console.log(' → Auth effect deps:', {
|
||||||
|
addLogChanged: !!addLog,
|
||||||
|
failConnectionChanged: !!failConnection,
|
||||||
|
disconnectChanged: !!disconnect,
|
||||||
|
connectChanged: !!connect
|
||||||
|
});
|
||||||
const messageHandler = (event: MessageEvent) => {
|
const messageHandler = (event: MessageEvent) => {
|
||||||
// Security: Check origin
|
// Security: Check origin
|
||||||
if (event.origin !== window.location.origin) {
|
if (event.origin !== window.location.origin) {
|
||||||
|
|
@ -511,6 +538,12 @@ export function useMcp(options: UseMcpOptions): UseMcpResult {
|
||||||
|
|
||||||
// Effect for initial connection and auto-retry
|
// Effect for initial connection and auto-retry
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
console.log(`[useMcp] Initial connection effect executed #${renderCount}`, Date.now());
|
||||||
|
console.log(' → Connect effect deps:', {
|
||||||
|
url,
|
||||||
|
storageKeyPrefix,
|
||||||
|
callbackUrl
|
||||||
|
});
|
||||||
// Store mount status
|
// Store mount status
|
||||||
isMountedRef.current = true;
|
isMountedRef.current = true;
|
||||||
addLog('debug', 'Component mounted, initiating connection.');
|
addLog('debug', 'Component mounted, initiating connection.');
|
||||||
|
|
@ -536,6 +569,13 @@ export function useMcp(options: UseMcpOptions): UseMcpResult {
|
||||||
|
|
||||||
// Effect for auto-retry logic
|
// Effect for auto-retry logic
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
console.log(`[useMcp] Auto-retry effect executed #${renderCount}`, Date.now());
|
||||||
|
console.log(' → Retry effect deps:', {
|
||||||
|
state,
|
||||||
|
autoRetry,
|
||||||
|
retry: !!retry,
|
||||||
|
addLog: !!addLog
|
||||||
|
});
|
||||||
let retryTimeoutId: number | null = null;
|
let retryTimeoutId: number | null = null;
|
||||||
if (state === 'failed' && autoRetry && connectAttemptRef.current > 0) {
|
if (state === 'failed' && autoRetry && connectAttemptRef.current > 0) {
|
||||||
// Only retry if the *initial* connection or subsequent retries failed
|
// Only retry if the *initial* connection or subsequent retries failed
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue