| 1234567891011121314151617181920212223 |
- /**
- * Async-context carrier for per-request ThinkingConfig.
- *
- * callLLM / streamLLM wrap each AI SDK call in thinkingContext.run()
- * so that the custom fetch wrapper in providers.ts can read the
- * current thinking preference and inject vendor-specific body params.
- *
- * IMPORTANT: This module uses node:async_hooks which is server-only.
- * providers.ts must NOT import this module directly (it's also used
- * on the client via settings.ts). Instead, providers.ts reads the
- * context via globalThis.__thinkingContext, which is set here at
- * module load time and guaranteed to be available before any fetch
- * wrapper runs.
- */
- import { AsyncLocalStorage } from 'node:async_hooks';
- import type { ThinkingConfig } from '@/lib/types/provider';
- export const thinkingContext = new AsyncLocalStorage<ThinkingConfig | undefined>();
- // Expose on globalThis so providers.ts can access the store without
- // importing this module (which would pull node:async_hooks into the
- // client bundle via the settings.ts → providers.ts import chain).
- (globalThis as Record<string, unknown>).__thinkingContext = thinkingContext;
|