SYMBOL INDEX (2832 symbols across 412 files) FILE: archon-ui-main/src/App.tsx function App (line 127) | function App() { FILE: archon-ui-main/src/components/DisconnectScreenOverlay.tsx type DisconnectScreenOverlayProps (line 6) | interface DisconnectScreenOverlayProps { FILE: archon-ui-main/src/components/agent-chat/ArchonChatPanel.tsx type ArchonChatPanelProps (line 9) | interface ArchonChatPanelProps { FILE: archon-ui-main/src/components/bug-report/BugReportButton.tsx type BugReportButtonProps (line 6) | interface BugReportButtonProps { FILE: archon-ui-main/src/components/bug-report/BugReportModal.tsx type BugReportModalProps (line 16) | interface BugReportModalProps { FILE: archon-ui-main/src/components/bug-report/ErrorBoundaryWithBugReport.tsx type Props (line 8) | interface Props { type State (line 13) | interface State { class ErrorBoundaryWithBugReport (line 21) | class ErrorBoundaryWithBugReport extends Component { method constructor (line 22) | constructor(props: Props) { method getDerivedStateFromError (line 33) | static getDerivedStateFromError(error: Error): Partial { method componentDidCatch (line 40) | componentDidCatch(error: Error, errorInfo: ErrorInfo) { method collectBugContext (line 52) | private async collectBugContext(error: Error) { method render (line 83) | render() { FILE: archon-ui-main/src/components/code/CodeViewerModal.tsx type CodeExample (line 35) | interface CodeExample { type CodeViewerModalProps (line 44) | interface CodeViewerModalProps { type TabButtonProps (line 408) | interface TabButtonProps { FILE: archon-ui-main/src/components/common/DeleteConfirmModal.tsx type DeleteConfirmModalProps (line 4) | interface DeleteConfirmModalProps { FILE: archon-ui-main/src/components/layout/MainLayout.tsx type MainLayoutProps (line 15) | interface MainLayoutProps { type BackendStatusProps (line 20) | interface BackendStatusProps { function BackendStatus (line 29) | function BackendStatus({ isHealthLoading, isBackendError, healthData }: ... function MainLayout (line 64) | function MainLayout({ children, className }: MainLayoutProps) { function MinimalLayout (line 177) | function MinimalLayout({ children, className }: MainLayoutProps) { FILE: archon-ui-main/src/components/layout/Navigation.tsx type NavigationItem (line 10) | interface NavigationItem { type NavigationProps (line 17) | interface NavigationProps { function Navigation (line 25) | function Navigation({ className }: NavigationProps) { FILE: archon-ui-main/src/components/layout/hooks/useBackendHealth.ts function useBackendHealth (line 10) | function useBackendHealth() { FILE: archon-ui-main/src/components/layout/types.ts type NavigationItem (line 3) | interface NavigationItem { type HealthResponse (line 10) | interface HealthResponse { type AppSettings (line 19) | interface AppSettings { type OnboardingCheckResult (line 25) | interface OnboardingCheckResult { FILE: archon-ui-main/src/components/onboarding/ProviderStep.tsx type ProviderStepProps (line 9) | interface ProviderStepProps { FILE: archon-ui-main/src/components/settings/APIKeysSection.tsx type CustomCredential (line 9) | interface CustomCredential { FILE: archon-ui-main/src/components/settings/CodeExtractionSettings.tsx type CodeExtractionSettingsProps (line 9) | interface CodeExtractionSettingsProps { type CustomCheckboxProps (line 259) | interface CustomCheckboxProps { FILE: archon-ui-main/src/components/settings/IDEGlobalRules.tsx type RuleType (line 8) | type RuleType = 'claude' | 'universal'; FILE: archon-ui-main/src/components/settings/OllamaConfigurationPanel.tsx type OllamaConfigurationPanelProps (line 12) | interface OllamaConfigurationPanelProps { type ConnectionTestResult (line 19) | interface ConnectionTestResult { FILE: archon-ui-main/src/components/settings/OllamaModelDiscoveryModal.tsx type OllamaModelDiscoveryModalProps (line 20) | interface OllamaModelDiscoveryModalProps { type EnrichedModel (line 29) | interface EnrichedModel extends OllamaModel { FILE: archon-ui-main/src/components/settings/OllamaModelSelectionModal.tsx type ContextInfo (line 8) | interface ContextInfo { type ModelInfo (line 14) | interface ModelInfo { type OllamaModelSelectionModalProps (line 46) | interface OllamaModelSelectionModalProps { type CompatibilityBadgeProps (line 56) | interface CompatibilityBadgeProps { type ModelCardProps (line 101) | interface ModelCardProps { FILE: archon-ui-main/src/components/settings/RAGSettings.tsx type ProviderKey (line 15) | type ProviderKey = 'openai' | 'google' | 'ollama' | 'anthropic' | 'grok'... constant EMBEDDING_CAPABLE_PROVIDERS (line 18) | const EMBEDDING_CAPABLE_PROVIDERS: ProviderKey[] = ['openai', 'google', ... type ProviderModels (line 20) | interface ProviderModels { type ProviderModelMap (line 25) | type ProviderModelMap = Record; constant PROVIDER_MODELS_KEY (line 28) | const PROVIDER_MODELS_KEY = 'archon_provider_models'; constant DEFAULT_OLLAMA_URL (line 111) | const DEFAULT_OLLAMA_URL = 'http://host.docker.internal:11434/v1'; constant PROVIDER_CREDENTIAL_KEYS (line 113) | const PROVIDER_CREDENTIAL_KEYS = [ type ProviderCredentialKey (line 121) | type ProviderCredentialKey = typeof PROVIDER_CREDENTIAL_KEYS[number]; constant CREDENTIAL_PROVIDER_MAP (line 123) | const CREDENTIAL_PROVIDER_MAP: Record { FILE: archon-ui-main/src/components/ui/Button.tsx type ButtonProps (line 5) | interface ButtonProps extends React.ButtonHTMLAttributes { FILE: archon-ui-main/src/components/ui/Checkbox.tsx type CheckboxProps (line 5) | interface CheckboxProps { FILE: archon-ui-main/src/components/ui/CollapsibleSettingsCard.tsx type CollapsibleSettingsCardProps (line 6) | interface CollapsibleSettingsCardProps { FILE: archon-ui-main/src/components/ui/CoverageVisualization.tsx type CoverageMetrics (line 5) | interface CoverageMetrics { type CoverageData (line 12) | interface CoverageData { type CoverageVisualizationProps (line 18) | interface CoverageVisualizationProps { type CoverageGaugeProps (line 25) | interface CoverageGaugeProps { FILE: archon-ui-main/src/components/ui/GlassCrawlDepthSelector.tsx type GlassCrawlDepthSelectorProps (line 5) | interface GlassCrawlDepthSelectorProps { FILE: archon-ui-main/src/components/ui/Input.tsx type InputProps (line 2) | interface InputProps extends React.InputHTMLAttributes { FILE: archon-ui-main/src/components/ui/MigrationBanner.tsx type MigrationBannerProps (line 5) | interface MigrationBannerProps { FILE: archon-ui-main/src/components/ui/NeonButton.tsx type CornerRadius (line 5) | interface CornerRadius { type GlowIntensity (line 12) | type GlowIntensity = 'none' | 'sm' | 'md' | 'lg' | 'xl' | 'xxl'; type ColorOption (line 13) | type ColorOption = 'none' | 'purple' | 'pink' | 'blue' | 'green' | 'red'; type NeonButtonProps (line 15) | interface NeonButtonProps extends Omit, 'child... FILE: archon-ui-main/src/components/ui/PowerButton.tsx type PowerButtonProps (line 4) | interface PowerButtonProps { FILE: archon-ui-main/src/components/ui/Select.tsx type SelectProps (line 2) | interface SelectProps extends React.SelectHTMLAttributes {} }:... FILE: archon-ui-main/src/features/agent-work-orders/components/RealTimeStats.tsx type RealTimeStatsProps (line 10) | interface RealTimeStatsProps { constant EMPTY_LOGS (line 19) | const EMPTY_LOGS: never[] = []; type LogEntryWithSteps (line 24) | type LogEntryWithSteps = LogEntry & { function hasStepInfo (line 29) | function hasStepInfo(log: LogEntry): log is LogEntryWithSteps { function useCalculateProgressFromLogs (line 37) | function useCalculateProgressFromLogs(logs: LogEntry[]): LiveProgress | ... function useCalculateProgressFromSteps (line 86) | function useCalculateProgressFromSteps(stepHistory: any): LiveProgress |... function useConvertStepsToLogs (line 113) | function useConvertStepsToLogs(stepHistory: any): LogEntry[] { function formatDuration (line 134) | function formatDuration(seconds: number): string { function RealTimeStats (line 148) | function RealTimeStats({ workOrderId }: RealTimeStatsProps) { FILE: archon-ui-main/src/features/agent-work-orders/components/RepositoryCard.tsx type RepositoryCardProps (line 15) | interface RepositoryCardProps { function getBackgroundClass (line 42) | function getBackgroundClass(isSelected: boolean): string { function copyToClipboard (line 52) | async function copyToClipboard(text: string): Promise { function RepositoryCard (line 62) | function RepositoryCard({ FILE: archon-ui-main/src/features/agent-work-orders/components/SidebarRepositoryCard.tsx type SidebarRepositoryCardProps (line 17) | interface SidebarRepositoryCardProps { constant BACKGROUND_CLASSES (line 47) | const BACKGROUND_CLASSES = { constant TITLE_CLASSES (line 58) | const TITLE_CLASSES = { function getBackgroundClass (line 66) | function getBackgroundClass(isPinned: boolean, isSelected: boolean): str... function getTitleClass (line 75) | function getTitleClass(isSelected: boolean): string { function SidebarRepositoryCard (line 79) | function SidebarRepositoryCard({ FILE: archon-ui-main/src/features/agent-work-orders/components/StepHistoryCard.tsx type StepHistoryCardProps (line 9) | interface StepHistoryCardProps { FILE: archon-ui-main/src/features/agent-work-orders/components/WorkOrderRow.tsx type WorkOrderRowProps (line 18) | interface WorkOrderRowProps { type StatusConfig (line 39) | interface StatusConfig { constant STATUS_COLORS (line 47) | const STATUS_COLORS: Record = { function getStatusConfig (line 81) | function getStatusConfig(status: string): StatusConfig { function WorkOrderRow (line 85) | function WorkOrderRow({ FILE: archon-ui-main/src/features/agent-work-orders/components/WorkOrderTable.tsx type WorkOrderTableProps (line 13) | interface WorkOrderTableProps { type EnhancedWorkOrder (line 27) | interface EnhancedWorkOrder extends AgentWorkOrder { function WorkOrderTable (line 31) | function WorkOrderTable({ workOrders, selectedRepositoryId, onStartWorkO... FILE: archon-ui-main/src/features/agent-work-orders/components/WorkflowStepButton.tsx type WorkflowStepButtonProps (line 5) | interface WorkflowStepButtonProps { FILE: archon-ui-main/src/features/agent-work-orders/hooks/useAgentWorkOrderQueries.ts function useWorkOrders (line 40) | function useWorkOrders(statusFilter?: AgentWorkOrderStatus) { function useWorkOrder (line 55) | function useWorkOrder(id: string | undefined) { function useStepHistory (line 71) | function useStepHistory(workOrderId: string | undefined) { function useWorkOrderLogs (line 89) | function useWorkOrderLogs( function useCreateWorkOrder (line 115) | function useCreateWorkOrder() { function useStartWorkOrder (line 139) | function useStartWorkOrder() { FILE: archon-ui-main/src/features/agent-work-orders/hooks/useRepositoryQueries.ts function useRepositories (line 29) | function useRepositories() { function useRepository (line 43) | function useRepository(id: string | undefined) { function useCreateRepository (line 64) | function useCreateRepository() { function useUpdateRepository (line 132) | function useUpdateRepository() { function useDeleteRepository (line 193) | function useDeleteRepository() { function useVerifyRepository (line 235) | function useVerifyRepository() { FILE: archon-ui-main/src/features/agent-work-orders/services/agentWorkOrdersService.ts method createWorkOrder (line 41) | async createWorkOrder(request: CreateAgentWorkOrderRequest): Promise { method getStepHistory (line 81) | async getStepHistory(id: string): Promise { method startWorkOrder (line 94) | async startWorkOrder(id: string): Promise { method getWorkOrderLogs (line 112) | async getWorkOrderLogs( FILE: archon-ui-main/src/features/agent-work-orders/services/repositoryService.ts function listRepositories (line 15) | async function listRepositories(): Promise { function createRepository (line 26) | async function createRepository(request: CreateRepositoryRequest): Promi... function updateRepository (line 42) | async function updateRepository(id: string, request: UpdateRepositoryReq... function deleteRepository (line 56) | async function deleteRepository(id: string): Promise { function verifyRepositoryAccess (line 68) | async function verifyRepositoryAccess(id: string): Promise<{ is_accessib... FILE: archon-ui-main/src/features/agent-work-orders/state/__tests__/sseIntegration.test.ts class MockEventSource (line 13) | class MockEventSource { method constructor (line 21) | constructor(url: string) { method addEventListener (line 26) | addEventListener(type: string, listener: (event: Event) => void): void { method removeEventListener (line 33) | removeEventListener(type: string, listener: (event: Event) => void): v... method close (line 43) | close(): void { method simulateOpen (line 48) | simulateOpen(): void { method simulateMessage (line 55) | simulateMessage(data: string): void { method simulateError (line 62) | simulateError(): void { FILE: archon-ui-main/src/features/agent-work-orders/state/agentWorkOrdersStore.ts type AgentWorkOrdersStore (line 12) | type AgentWorkOrdersStore = UIPreferencesSlice & ModalsSlice & FiltersSl... FILE: archon-ui-main/src/features/agent-work-orders/state/slices/filtersSlice.ts type FiltersSlice (line 3) | type FiltersSlice = { FILE: archon-ui-main/src/features/agent-work-orders/state/slices/modalsSlice.ts type ModalsSlice (line 4) | type ModalsSlice = { FILE: archon-ui-main/src/features/agent-work-orders/state/slices/sseSlice.ts type LiveProgress (line 4) | type LiveProgress = { type SSESlice (line 13) | type SSESlice = { FILE: archon-ui-main/src/features/agent-work-orders/state/slices/uiPreferencesSlice.ts type LayoutMode (line 3) | type LayoutMode = "horizontal" | "sidebar"; type UIPreferencesSlice (line 5) | type UIPreferencesSlice = { FILE: archon-ui-main/src/features/agent-work-orders/types/index.ts type AgentWorkOrderStatus (line 15) | type AgentWorkOrderStatus = "pending" | "running" | "completed" | "failed"; type WorkflowStep (line 21) | type WorkflowStep = "create-branch" | "planning" | "execute" | "commit" ... type SandboxType (line 28) | type SandboxType = "git_branch" | "git_worktree"; type AgentWorkOrder (line 34) | interface AgentWorkOrder { type CreateAgentWorkOrderRequest (line 84) | interface CreateAgentWorkOrderRequest { type StepExecutionResult (line 107) | interface StepExecutionResult { type StepHistory (line 136) | interface StepHistory { type LogEntry (line 148) | interface LogEntry { type SSEConnectionState (line 195) | type SSEConnectionState = "connecting" | "connected" | "disconnected" | ... type WorkOrderLogsResponse (line 201) | interface WorkOrderLogsResponse { FILE: archon-ui-main/src/features/agent-work-orders/types/repository.ts type ConfiguredRepository (line 17) | interface ConfiguredRepository { type CreateRepositoryRequest (line 59) | interface CreateRepositoryRequest { type UpdateRepositoryRequest (line 73) | interface UpdateRepositoryRequest { FILE: archon-ui-main/src/features/agent-work-orders/views/AgentWorkOrderDetailView.tsx constant ALL_WORKFLOW_STEPS (line 24) | const ALL_WORKFLOW_STEPS: WorkflowStep[] = [ function AgentWorkOrderDetailView (line 33) | function AgentWorkOrderDetailView() { FILE: archon-ui-main/src/features/agent-work-orders/views/AgentWorkOrdersView.tsx function AgentWorkOrdersView (line 26) | function AgentWorkOrdersView() { FILE: archon-ui-main/src/features/knowledge/components/AddKnowledgeDialog.tsx type AddKnowledgeDialogProps (line 19) | interface AddKnowledgeDialogProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeCard.tsx type KnowledgeCardProps (line 27) | interface KnowledgeCardProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeCardActions.tsx type KnowledgeCardActionsProps (line 20) | interface KnowledgeCardActionsProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeCardTags.tsx type KnowledgeCardTagsProps (line 14) | interface KnowledgeCardTagsProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeCardTitle.tsx constant ICON_COLOR_CLASSES (line 14) | const ICON_COLOR_CLASSES: Record = { constant TOOLTIP_COLOR_CLASSES (line 24) | const TOOLTIP_COLOR_CLASSES: Record = { type KnowledgeCardTitleProps (line 37) | interface KnowledgeCardTitleProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeCardType.tsx type KnowledgeCardTypeProps (line 13) | interface KnowledgeCardTypeProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeHeader.tsx type KnowledgeHeaderProps (line 10) | interface KnowledgeHeaderProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeList.tsx type KnowledgeListProps (line 14) | interface KnowledgeListProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeTable.tsx type KnowledgeTableProps (line 22) | interface KnowledgeTableProps { FILE: archon-ui-main/src/features/knowledge/components/KnowledgeTypeSelector.tsx type KnowledgeTypeSelectorProps (line 10) | interface KnowledgeTypeSelectorProps { constant TYPES (line 16) | const TYPES = [ FILE: archon-ui-main/src/features/knowledge/components/LevelSelector.tsx type LevelSelectorProps (line 11) | interface LevelSelectorProps { constant LEVELS (line 17) | const LEVELS = [ FILE: archon-ui-main/src/features/knowledge/components/TagInput.tsx type TagInputProps (line 12) | interface TagInputProps { FILE: archon-ui-main/src/features/knowledge/hooks/useKnowledgeQueries.ts function useKnowledgeItem (line 52) | function useKnowledgeItem(sourceId: string | null) { function useKnowledgeItemChunks (line 64) | function useKnowledgeItemChunks( function useCodeExamples (line 87) | function useCodeExamples(sourceId: string | null) { function useCrawlUrl (line 100) | function useCrawlUrl() { function useUploadDocument (line 303) | function useUploadDocument() { function useStopCrawl (line 481) | function useStopCrawl() { function useDeleteKnowledgeItem (line 510) | function useDeleteKnowledgeItem() { function useUpdateKnowledgeItem (line 563) | function useUpdateKnowledgeItem() { function useRefreshKnowledgeItem (line 689) | function useRefreshKnowledgeItem() { function useKnowledgeSummaries (line 718) | function useKnowledgeSummaries(filter?: KnowledgeItemsFilter) { function useKnowledgeChunks (line 768) | function useKnowledgeChunks( function useKnowledgeCodeExamples (line 791) | function useKnowledgeCodeExamples( FILE: archon-ui-main/src/features/knowledge/inspector/components/ContentViewer.tsx type ContentViewerProps (line 21) | interface ContentViewerProps { FILE: archon-ui-main/src/features/knowledge/inspector/components/InspectorHeader.tsx type InspectorHeaderProps (line 11) | interface InspectorHeaderProps { FILE: archon-ui-main/src/features/knowledge/inspector/components/InspectorSidebar.tsx type InspectorSidebarProps (line 12) | interface InspectorSidebarProps { FILE: archon-ui-main/src/features/knowledge/inspector/components/KnowledgeInspector.tsx type KnowledgeInspectorProps (line 15) | interface KnowledgeInspectorProps { type ViewMode (line 22) | type ViewMode = "documents" | "code"; FILE: archon-ui-main/src/features/knowledge/inspector/hooks/useInspectorData.ts type UseInspectorDataProps (line 10) | interface UseInspectorDataProps { type UseInspectorDataResult (line 15) | interface UseInspectorDataResult { function useInspectorData (line 28) | function useInspectorData({ sourceId, searchQuery }: UseInspectorDataPro... FILE: archon-ui-main/src/features/knowledge/inspector/hooks/useInspectorPagination.ts type UseInspectorPaginationProps (line 13) | interface UseInspectorPaginationProps { type UseInspectorPaginationResult (line 19) | interface UseInspectorPaginationResult { function useInspectorPagination (line 29) | function useInspectorPagination({ FILE: archon-ui-main/src/features/knowledge/inspector/hooks/usePaginatedInspectorData.ts constant PAGE_SIZE (line 10) | const PAGE_SIZE = 20; type UsePaginatedInspectorDataProps (line 12) | interface UsePaginatedInspectorDataProps { type PaginatedData (line 18) | interface PaginatedData { type UsePaginatedInspectorDataResult (line 27) | interface UsePaginatedInspectorDataResult { function usePaginatedInspectorData (line 32) | function usePaginatedInspectorData({ FILE: archon-ui-main/src/features/knowledge/services/knowledgeService.ts method getKnowledgeSummaries (line 28) | async getKnowledgeSummaries(filter?: KnowledgeItemsFilter): Promise { method deleteKnowledgeItem (line 57) | async deleteKnowledgeItem(sourceId: string): Promise<{ success: boolean;... method updateKnowledgeItem (line 68) | async updateKnowledgeItem( method crawlUrl (line 83) | async crawlUrl(request: CrawlRequest): Promise { method refreshKnowledgeItem (line 95) | async refreshKnowledgeItem(sourceId: string): Promise { method uploadDocument (line 106) | async uploadDocument( method stopCrawl (line 146) | async stopCrawl(progressId: string): Promise<{ success: boolean; message... method getKnowledgeItemChunks (line 155) | async getKnowledgeItemChunks( method getCodeExamples (line 183) | async getCodeExamples( method searchKnowledgeBase (line 207) | async searchKnowledgeBase(options: SearchOptions): Promise { FILE: archon-ui-main/src/features/knowledge/types/knowledge.ts type KnowledgeItemMetadata (line 6) | interface KnowledgeItemMetadata { type KnowledgeItem (line 26) | interface KnowledgeItem { type CodeExampleMetadata (line 41) | interface CodeExampleMetadata { type CodeExample (line 49) | interface CodeExample { type DocumentChunkMetadata (line 64) | interface DocumentChunkMetadata { type DocumentChunk (line 73) | interface DocumentChunk { type GroupedKnowledgeItem (line 87) | interface GroupedKnowledgeItem { type KnowledgeItemsResponse (line 98) | interface KnowledgeItemsResponse { type ChunksResponse (line 105) | interface ChunksResponse { type CodeExamplesResponse (line 116) | interface CodeExamplesResponse { type KnowledgeItemsFilter (line 127) | interface KnowledgeItemsFilter { type CrawlRequest (line 136) | interface CrawlRequest { type UploadMetadata (line 145) | interface UploadMetadata { type SearchOptions (line 150) | interface SearchOptions { type KnowledgeViewMode (line 158) | type KnowledgeViewMode = "grid" | "table"; type InspectorSelectedItem (line 161) | interface InspectorSelectedItem { type CrawlStartResponse (line 169) | interface CrawlStartResponse { type RefreshResponse (line 176) | interface RefreshResponse { type SearchResultsResponse (line 182) | interface SearchResultsResponse { type KnowledgeSource (line 190) | interface KnowledgeSource { FILE: archon-ui-main/src/features/knowledge/utils/knowledge-utils.ts function groupKnowledgeItems (line 10) | function groupKnowledgeItems(items: KnowledgeItem[]) { function getKnowledgeItemType (line 38) | function getKnowledgeItemType(item: KnowledgeItem): string { function formatFileSize (line 51) | function formatFileSize(bytes?: number): string { function getStatusColor (line 69) | function getStatusColor(status?: KnowledgeItemMetadata["status"]) { function needsRefresh (line 85) | function needsRefresh(item: KnowledgeItem): boolean { function extractDomain (line 106) | function extractDomain(url: string): string { function getFileTypeIcon (line 118) | function getFileTypeIcon(fileType?: string): string { FILE: archon-ui-main/src/features/knowledge/utils/providerErrorHandler.ts type ProviderError (line 6) | interface ProviderError extends Error { type ErrorWithStatus (line 14) | interface ErrorWithStatus { type ErrorWithMessage (line 19) | interface ErrorWithMessage { function hasStatusProperty (line 24) | function hasStatusProperty(obj: unknown): obj is ErrorWithStatus { function hasMessageProperty (line 28) | function hasMessageProperty(obj: unknown): obj is ErrorWithMessage { function parseProviderError (line 35) | function parseProviderError(error: unknown): ProviderError { function getProviderErrorMessage (line 78) | function getProviderErrorMessage(error: unknown): string { FILE: archon-ui-main/src/features/mcp/components/McpClientList.tsx type McpClientListProps (line 7) | interface McpClientListProps { FILE: archon-ui-main/src/features/mcp/components/McpConfigSection.tsx type McpConfigSectionProps (line 9) | interface McpConfigSectionProps { FILE: archon-ui-main/src/features/mcp/components/McpStatusBar.tsx type McpStatusBarProps (line 6) | interface McpStatusBarProps { FILE: archon-ui-main/src/features/mcp/hooks/useMcpQueries.ts function useMcpStatus (line 16) | function useMcpStatus() { function useMcpConfig (line 29) | function useMcpConfig() { function useMcpClients (line 38) | function useMcpClients() { function useMcpSessionInfo (line 51) | function useMcpSessionInfo() { FILE: archon-ui-main/src/features/mcp/services/mcpApi.ts method getStatus (line 5) | async getStatus(): Promise { method getConfig (line 15) | async getConfig(): Promise { method getSessionInfo (line 25) | async getSessionInfo(): Promise { method getClients (line 35) | async getClients(): Promise { FILE: archon-ui-main/src/features/mcp/types/mcp.ts type McpServerStatus (line 2) | interface McpServerStatus { type McpServerConfig (line 8) | interface McpServerConfig { type McpClient (line 15) | interface McpClient { type McpSessionInfo (line 23) | interface McpSessionInfo { type SupportedIDE (line 31) | type SupportedIDE = "windsurf" | "cursor" | "claudecode" | "cline" | "ki... type IdeConfiguration (line 33) | interface IdeConfiguration { FILE: archon-ui-main/src/features/progress/components/CrawlingProgress.tsx type CrawlingProgressProps (line 17) | interface CrawlingProgressProps { FILE: archon-ui-main/src/features/progress/components/KnowledgeCardProgress.tsx type KnowledgeCardProgressProps (line 12) | interface KnowledgeCardProgressProps { FILE: archon-ui-main/src/features/progress/hooks/useProgressQueries.ts constant TERMINAL_STATES (line 23) | const TERMINAL_STATES: ProgressStatus[] = ["completed", "error", "failed... function useOperationProgress (line 29) | function useOperationProgress( function useActiveOperations (line 196) | function useActiveOperations(enabled = false) { function useCrawlProgressPolling (line 213) | function useCrawlProgressPolling() { function useMultipleOperations (line 227) | function useMultipleOperations( FILE: archon-ui-main/src/features/progress/services/progressService.ts method getProgress (line 13) | async getProgress(progressId: string): Promise { method listActiveOperations (line 20) | async listActiveOperations(): Promise { FILE: archon-ui-main/src/features/progress/types/progress.ts type ProgressStatus (line 6) | type ProgressStatus = type CrawlType (line 28) | type CrawlType = type UploadType (line 38) | type UploadType = "document"; type BaseProgressData (line 40) | interface BaseProgressData { type CrawlProgressData (line 50) | interface CrawlProgressData extends BaseProgressData { type UploadProgressData (line 73) | interface UploadProgressData extends BaseProgressData { type ProgressData (line 82) | type ProgressData = CrawlProgressData | UploadProgressData; type ActiveOperation (line 86) | interface ActiveOperation { type ActiveOperationsResponse (line 123) | interface ActiveOperationsResponse { type ProgressResponse (line 129) | interface ProgressResponse { FILE: archon-ui-main/src/features/progress/utils/urlValidation.ts constant SAFE_PROTOCOLS (line 6) | const SAFE_PROTOCOLS = ["http:", "https:"]; function isValidHttpUrl (line 15) | function isValidHttpUrl(url: string | undefined | null): boolean { FILE: archon-ui-main/src/features/projects/components/NewProjectModal.tsx type NewProjectModalProps (line 18) | interface NewProjectModalProps { FILE: archon-ui-main/src/features/projects/components/ProjectCard.tsx type ProjectCardProps (line 10) | interface ProjectCardProps { FILE: archon-ui-main/src/features/projects/components/ProjectCardActions.tsx type ProjectCardActionsProps (line 7) | interface ProjectCardActionsProps { FILE: archon-ui-main/src/features/projects/components/ProjectHeader.tsx type ProjectHeaderProps (line 9) | interface ProjectHeaderProps { FILE: archon-ui-main/src/features/projects/components/ProjectList.tsx type ProjectListProps (line 8) | interface ProjectListProps { FILE: archon-ui-main/src/features/projects/documents/DocsTab.tsx type DocsTabProps (line 11) | interface DocsTabProps { FILE: archon-ui-main/src/features/projects/documents/components/AddDocumentModal.tsx type AddDocumentModalProps (line 19) | interface AddDocumentModalProps { FILE: archon-ui-main/src/features/projects/documents/components/DocumentViewer.tsx type DocumentViewerProps (line 9) | interface DocumentViewerProps { FILE: archon-ui-main/src/features/projects/documents/hooks/useDocumentQueries.ts function useProjectDocuments (line 21) | function useProjectDocuments(projectId: string | undefined) { function useProjectDocument (line 36) | function useProjectDocument(projectId: string | undefined, documentId: s... type DocumentUpdateData (line 49) | interface DocumentUpdateData { function useUpdateDocument (line 57) | function useUpdateDocument(projectId: string) { function useCreateDocument (line 83) | function useCreateDocument(projectId: string) { function useDeleteDocument (line 119) | function useDeleteDocument(projectId: string) { FILE: archon-ui-main/src/features/projects/documents/services/documentService.ts type DocumentsResponse (line 9) | interface DocumentsResponse { method getDocumentsByProject (line 20) | async getDocumentsByProject(projectId: string): Promise; type UpdateProjectInput (line 61) | type UpdateProjectInput = z.infer; type ProjectInput (line 62) | type ProjectInput = z.infer; FILE: archon-ui-main/src/features/projects/services/projectService.ts method listProjects (line 16) | async listProjects(): Promise { method getProject (line 52) | async getProject(projectId: string): Promise { method createProject (line 70) | async createProject(projectData: CreateProjectRequest): Promise<{ method updateProject (line 114) | async updateProject(projectId: string, updates: UpdateProjectRequest): P... method deleteProject (line 152) | async deleteProject(projectId: string): Promise { method getProjectFeatures (line 166) | async getProjectFeatures(projectId: string): Promise<{ features: Project... FILE: archon-ui-main/src/features/projects/shared/api.ts function formatRelativeTime (line 6) | function formatRelativeTime(dateString: string): string { FILE: archon-ui-main/src/features/projects/tasks/TasksTab.tsx type TasksTabProps (line 14) | interface TasksTabProps { type ViewControlsProps (line 225) | interface ViewControlsProps { FILE: archon-ui-main/src/features/projects/tasks/components/EditableTableCell.tsx type EditableTableCellProps (line 16) | interface EditableTableCellProps { constant STATUS_OPTIONS (line 27) | const STATUS_OPTIONS = ["todo", "doing", "review", "done"] as const; constant ASSIGNEE_OPTIONS (line 30) | const ASSIGNEE_OPTIONS: ComboBoxOption[] = COMMON_ASSIGNEES.map((name) =... FILE: archon-ui-main/src/features/projects/tasks/components/FeatureSelect.tsx type FeatureSelectProps (line 11) | interface FeatureSelectProps { FILE: archon-ui-main/src/features/projects/tasks/components/KanbanColumn.tsx type KanbanColumnProps (line 9) | interface KanbanColumnProps { FILE: archon-ui-main/src/features/projects/tasks/components/TaskAssignee.tsx type TaskAssigneeProps (line 7) | interface TaskAssigneeProps { constant ASSIGNEE_OPTIONS (line 14) | const ASSIGNEE_OPTIONS: ComboBoxOption[] = COMMON_ASSIGNEES.map((name) =... FILE: archon-ui-main/src/features/projects/tasks/components/TaskCard.tsx type TaskCardProps (line 16) | interface TaskCardProps { FILE: archon-ui-main/src/features/projects/tasks/components/TaskCardActions.tsx type TaskCardActionsProps (line 7) | interface TaskCardActionsProps { FILE: archon-ui-main/src/features/projects/tasks/components/TaskEditModal.tsx type TaskEditModalProps (line 26) | interface TaskEditModalProps { constant ASSIGNEE_OPTIONS (line 36) | const ASSIGNEE_OPTIONS: ComboBoxOption[] = COMMON_ASSIGNEES.map((name) =... FILE: archon-ui-main/src/features/projects/tasks/components/TaskPriorityComponent.tsx type TaskPriorityProps (line 15) | interface TaskPriorityProps { constant PRIORITY_OPTIONS (line 22) | const PRIORITY_OPTIONS: Array<{ FILE: archon-ui-main/src/features/projects/tasks/hooks/useTaskQueries.ts function useProjectTasks (line 24) | function useProjectTasks(projectId: string | undefined, enabled = true) { function useTaskCounts (line 41) | function useTaskCounts() { function useCreateTask (line 52) | function useCreateTask() { function useUpdateTask (line 123) | function useUpdateTask(projectId: string) { function useDeleteTask (line 179) | function useDeleteTask(projectId: string) { FILE: archon-ui-main/src/features/projects/tasks/schemas/index.ts function validateTask (line 63) | function validateTask(data: unknown) { function validateCreateTask (line 67) | function validateCreateTask(data: unknown) { function validateUpdateTask (line 71) | function validateUpdateTask(data: unknown) { function validateUpdateTaskStatus (line 75) | function validateUpdateTaskStatus(data: unknown) { type CreateTaskInput (line 80) | type CreateTaskInput = z.infer; type UpdateTaskInput (line 81) | type UpdateTaskInput = z.infer; type UpdateTaskStatusInput (line 82) | type UpdateTaskStatusInput = z.infer; type TaskInput (line 83) | type TaskInput = z.infer; FILE: archon-ui-main/src/features/projects/tasks/services/taskService.ts method getTasksByProject (line 16) | async getTasksByProject(projectId: string): Promise { method getTask (line 31) | async getTask(taskId: string): Promise { method createTask (line 44) | async createTask(taskData: CreateTaskRequest): Promise { method updateTask (line 71) | async updateTask(taskId: string, updates: UpdateTaskRequest): Promise { method updateTaskOrder (line 137) | async updateTaskOrder(taskId: string, newOrder: number, newStatus?: Data... method getTasksByStatus (line 159) | async getTasksByStatus(status: DatabaseTaskStatus): Promise { method getTaskCountsForAllProjects (line 174) | async getTaskCountsForAllProjects(): Promise> { FILE: archon-ui-main/src/features/projects/tasks/types/hooks.ts type UseTaskActionsReturn (line 12) | interface UseTaskActionsReturn { type UseTaskEditorReturn (line 32) | interface UseTaskEditorReturn { FILE: archon-ui-main/src/features/projects/tasks/types/priority.ts type TaskPriority (line 8) | type TaskPriority = "critical" | "high" | "medium" | "low"; type TaskPriorityOption (line 10) | interface TaskPriorityOption { constant TASK_PRIORITY_OPTIONS (line 16) | const TASK_PRIORITY_OPTIONS: readonly TaskPriorityOption[] = [ function getTaskPriorityOption (line 26) | function getTaskPriorityOption(priority: TaskPriority): TaskPriorityOpti... function isValidTaskPriority (line 34) | function isValidTaskPriority(priority: string): priority is TaskPriority { FILE: archon-ui-main/src/features/projects/tasks/types/task.ts type DatabaseTaskStatus (line 12) | type DatabaseTaskStatus = "todo" | "doing" | "review" | "done"; type Assignee (line 15) | type Assignee = string; constant COMMON_ASSIGNEES (line 18) | const COMMON_ASSIGNEES = ["User", "Archon", "Coding Agent"] as const; type CommonAssignee (line 19) | type CommonAssignee = (typeof COMMON_ASSIGNEES)[number]; type TaskCounts (line 22) | interface TaskCounts { type TaskSource (line 30) | type TaskSource = type TaskCodeExample (line 38) | type TaskCodeExample = type Task (line 47) | interface Task { type CreateTaskRequest (line 74) | interface CreateTaskRequest { type UpdateTaskRequest (line 88) | interface UpdateTaskRequest { FILE: archon-ui-main/src/features/projects/tasks/utils/task-ordering.ts constant ORDER_INCREMENT (line 7) | const ORDER_INCREMENT = 1000; constant MAX_ORDER (line 8) | const MAX_ORDER = Number.MAX_SAFE_INTEGER - ORDER_INCREMENT; function getDefaultTaskOrder (line 14) | function getDefaultTaskOrder(existingTasks: Task[]): number { function getInsertTaskOrder (line 34) | function getInsertTaskOrder(beforeTask: Task | null, afterTask: Task | n... function getReorderTaskOrder (line 53) | function getReorderTaskOrder(tasks: Task[], taskId: string, newIndex: nu... function validateTaskOrder (line 87) | function validateTaskOrder(order: number): number { FILE: archon-ui-main/src/features/projects/tasks/views/BoardView.tsx type BoardViewProps (line 5) | interface BoardViewProps { FILE: archon-ui-main/src/features/projects/tasks/views/TableView.tsx type TableViewProps (line 19) | interface TableViewProps { type DraggableRowProps (line 29) | interface DraggableRowProps { FILE: archon-ui-main/src/features/projects/types/project.ts type ProjectPRD (line 8) | type ProjectPRD = Record; type ProjectDocs (line 9) | type ProjectDocs = unknown[]; type ProjectFeature (line 10) | type ProjectFeature = { type ProjectFeatures (line 17) | type ProjectFeatures = ProjectFeature[]; type ProjectData (line 18) | type ProjectData = unknown[]; type ProjectCreationProgress (line 21) | interface ProjectCreationProgress { type Project (line 44) | interface Project { type CreateProjectRequest (line 68) | interface CreateProjectRequest { type UpdateProjectRequest (line 80) | interface UpdateProjectRequest { type MCPToolResponse (line 94) | interface MCPToolResponse { type PaginatedResponse (line 101) | interface PaginatedResponse { FILE: archon-ui-main/src/features/projects/views/ProjectsView.tsx type ProjectsViewProps (line 22) | interface ProjectsViewProps { function ProjectsView (line 44) | function ProjectsView({ className = "", "data-id": dataId }: ProjectsVie... type SidebarProjectCardProps (line 342) | interface SidebarProjectCardProps { FILE: archon-ui-main/src/features/settings/migrations/components/MigrationStatusCard.tsx function MigrationStatusCard (line 11) | function MigrationStatusCard() { FILE: archon-ui-main/src/features/settings/migrations/components/PendingMigrationsModal.tsx type PendingMigrationsModalProps (line 12) | interface PendingMigrationsModalProps { function PendingMigrationsModal (line 19) | function PendingMigrationsModal({ FILE: archon-ui-main/src/features/settings/migrations/hooks/useMigrationQueries.ts function useMigrationStatus (line 23) | function useMigrationStatus() { function useMigrationHistory (line 38) | function useMigrationHistory() { function usePendingMigrations (line 49) | function usePendingMigrations() { FILE: archon-ui-main/src/features/settings/migrations/services/migrationService.ts method getMigrationStatus (line 12) | async getMigrationStatus(): Promise { method getMigrationHistory (line 25) | async getMigrationHistory(): Promise { method getPendingMigrations (line 38) | async getPendingMigrations(): Promise { FILE: archon-ui-main/src/features/settings/migrations/types/index.ts type MigrationRecord (line 5) | interface MigrationRecord { type PendingMigration (line 12) | interface PendingMigration { type MigrationStatusResponse (line 20) | interface MigrationStatusResponse { type MigrationHistoryResponse (line 30) | interface MigrationHistoryResponse { type MigrationState (line 36) | interface MigrationState { FILE: archon-ui-main/src/features/settings/version/components/UpdateBanner.tsx function UpdateBanner (line 10) | function UpdateBanner() { FILE: archon-ui-main/src/features/settings/version/components/VersionStatusCard.tsx function VersionStatusCard (line 9) | function VersionStatusCard() { FILE: archon-ui-main/src/features/settings/version/hooks/useVersionQueries.ts function useVersionCheck (line 22) | function useVersionCheck() { function useCurrentVersion (line 38) | function useCurrentVersion() { function useClearVersionCache (line 49) | function useClearVersionCache() { FILE: archon-ui-main/src/features/settings/version/services/versionService.ts method checkVersion (line 12) | async checkVersion(): Promise { method getCurrentVersion (line 25) | async getCurrentVersion(): Promise { method clearCache (line 38) | async clearCache(): Promise<{ message: string; success: boolean }> { FILE: archon-ui-main/src/features/settings/version/types/index.ts type ReleaseAsset (line 5) | interface ReleaseAsset { type VersionCheckResponse (line 13) | interface VersionCheckResponse { type CurrentVersionResponse (line 25) | interface CurrentVersionResponse { type VersionStatus (line 30) | interface VersionStatus { FILE: archon-ui-main/src/features/shared/api/apiClient.ts function buildFullUrl (line 21) | function buildFullUrl(cleanEndpoint: string): string { function callAPIWithETag (line 43) | async function callAPIWithETag(endpoint: string, options: R... FILE: archon-ui-main/src/features/shared/config/queryClient.ts function createTestQueryClient (line 54) | function createTestQueryClient(): QueryClient { FILE: archon-ui-main/src/features/shared/config/queryPatterns.ts constant DISABLED_QUERY_KEY (line 14) | const DISABLED_QUERY_KEY = ["disabled"] as const; constant STALE_TIMES (line 18) | const STALE_TIMES = { function getErrorStatus (line 34) | function getErrorStatus(error: unknown): number | undefined { function isAbortError (line 50) | function isAbortError(error: unknown): boolean { function createRetryLogic (line 63) | function createRetryLogic(maxRetries: number = 2) { FILE: archon-ui-main/src/features/shared/hooks/useSmartPolling.ts function useSmartPolling (line 13) | function useSmartPolling(baseInterval: number = 10000) { FILE: archon-ui-main/src/features/shared/hooks/useThemeAware.ts function useThemeAware (line 8) | function useThemeAware() { FILE: archon-ui-main/src/features/shared/hooks/useToast.ts type Toast (line 6) | interface Toast { type ToastContextType (line 14) | interface ToastContextType { function useToast (line 26) | function useToast() { function createToastContext (line 38) | function createToastContext() { function getToastIcon (line 88) | function getToastIcon(type: Toast["type"]) { FILE: archon-ui-main/src/features/shared/types/errors.ts class APIServiceError (line 19) | class APIServiceError extends Error { method constructor (line 20) | constructor( class ValidationError (line 33) | class ValidationError extends APIServiceError { method constructor (line 34) | constructor(message: string) { class MCPToolError (line 43) | class MCPToolError extends APIServiceError { method constructor (line 44) | constructor( type ValidationErrorDetail (line 56) | interface ValidationErrorDetail { type ValidationErrorObject (line 61) | interface ValidationErrorObject { function formatValidationErrors (line 68) | function formatValidationErrors(errors: ValidationErrorObject): string { function formatZodErrors (line 75) | function formatZodErrors(zodError: { issues: Array<{ path: (string | num... FILE: archon-ui-main/src/features/shared/utils/clipboard.ts type ClipboardResult (line 6) | interface ClipboardResult { FILE: archon-ui-main/src/features/shared/utils/optimistic.ts type OptimisticEntity (line 6) | interface OptimisticEntity { function isOptimistic (line 16) | function isOptimistic(entity: T & Partial): entity ... function createOptimisticId (line 23) | function createOptimisticId(): string { function createOptimisticEntity (line 30) | function createOptimisticEntity( function replaceOptimisticEntity (line 48) | function replaceOptimisticEntity( function removeDuplicateEntities (line 65) | function removeDuplicateEntities(entities: T[]... function cleanOptimisticMetadata (line 79) | function cleanOptimisticMetadata(entity: T & Partial = { FILE: archon-ui-main/src/features/style-guide/standards/modalStandards.ts constant MODAL_TYPES (line 1) | const MODAL_TYPES = { FILE: archon-ui-main/src/features/style-guide/types/index.ts type GlowColor (line 4) | type GlowColor = "none" | "purple" | "blue" | "cyan" | "green" | "orange... type GlowType (line 5) | type GlowType = "none" | "inner" | "outer"; type EdgePosition (line 6) | type EdgePosition = "none" | "top" | "left" | "right" | "bottom"; type EdgeColor (line 7) | type EdgeColor = "purple" | "blue" | "cyan" | "green" | "orange" | "pink... type CardSize (line 8) | type CardSize = "sm" | "md" | "lg" | "xl"; type Transparency (line 9) | type Transparency = "clear" | "light" | "medium" | "frosted" | "solid"; type BlurLevel (line 10) | type BlurLevel = "none" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl"; type GlassTint (line 11) | type GlassTint = "none" | "purple" | "blue" | "cyan" | "green" | "orange... type ButtonVariant (line 14) | type ButtonVariant = "default" | "destructive" | "outline" | "ghost" | "... type ButtonSize (line 15) | type ButtonSize = "xs" | "sm" | "default" | "lg" | "icon"; type InputType (line 18) | type InputType = "text" | "email" | "password" | "number" | "search" | "... type LabelPosition (line 19) | type LabelPosition = "left" | "right" | "top" | "bottom"; type ModalSize (line 22) | type ModalSize = "sm" | "md" | "lg" | "xl"; type ToggleSize (line 25) | type ToggleSize = "sm" | "md" | "lg"; FILE: archon-ui-main/src/features/testing/test-utils.tsx function renderWithProviders (line 12) | function renderWithProviders( FILE: archon-ui-main/src/features/ui/components/DeleteConfirmModal.tsx type DeleteConfirmModalProps (line 16) | interface DeleteConfirmModalProps { FILE: archon-ui-main/src/features/ui/components/FeatureErrorBoundary.tsx type Props (line 6) | interface Props { type State (line 12) | interface State { class FeatureErrorBoundary (line 18) | class FeatureErrorBoundary extends Component { method constructor (line 19) | constructor(props: Props) { method getDerivedStateFromError (line 24) | static getDerivedStateFromError(error: Error): Partial { method componentDidCatch (line 28) | componentDidCatch(error: Error, errorInfo: ErrorInfo) { method render (line 52) | render() { FILE: archon-ui-main/src/features/ui/components/ToastProvider.tsx type ToastProviderProps (line 11) | interface ToastProviderProps { function ToastProvider (line 22) | function ToastProvider({ children, duration = 4000, swipeDirection = "ri... FILE: archon-ui-main/src/features/ui/primitives/OptimisticIndicator.tsx type OptimisticIndicatorProps (line 5) | interface OptimisticIndicatorProps { function OptimisticIndicator (line 16) | function OptimisticIndicator({ function withOptimisticStyles (line 35) | function withOptimisticStyles( FILE: archon-ui-main/src/features/ui/primitives/button.tsx type ButtonProps (line 4) | interface ButtonProps extends React.ButtonHTMLAttributes; type ButtonSize (line 117) | type ButtonSize = NonNullable; type IconButtonProps (line 158) | interface IconButtonProps extends Omit { FILE: archon-ui-main/src/features/ui/primitives/card.tsx type CardProps (line 4) | interface CardProps extends React.HTMLAttributes { FILE: archon-ui-main/src/features/ui/primitives/checkbox.tsx type CheckboxColor (line 6) | type CheckboxColor = "purple" | "blue" | "green" | "pink" | "orange" | "... type CheckboxProps (line 8) | interface CheckboxProps extends React.ComponentPropsWithoutRef { type DataCardHeaderProps (line 17) | interface DataCardHeaderProps extends React.HTMLAttributes { FILE: archon-ui-main/src/features/ui/primitives/grouped-card.tsx type GroupedCardProps (line 5) | interface GroupedCardProps extends React.HTMLAttributes { FILE: archon-ui-main/src/features/ui/primitives/input.tsx type InputProps (line 4) | interface InputProps extends React.InputHTMLAttributes { type TextAreaProps (line 33) | interface TextAreaProps extends React.TextareaHTMLAttributes { type FormFieldProps (line 86) | interface FormFieldProps { type FormGridProps (line 96) | interface FormGridProps { FILE: archon-ui-main/src/features/ui/primitives/pill-navigation.tsx type PillNavigationItem (line 6) | interface PillNavigationItem { type PillNavigationProps (line 13) | interface PillNavigationProps { FILE: archon-ui-main/src/features/ui/primitives/pill.tsx type PillColor (line 4) | type PillColor = "blue" | "orange" | "cyan" | "purple" | "pink" | "green... type StatPillProps (line 6) | interface StatPillProps extends React.HTMLAttributes { constant SIZE_MAP (line 14) | const SIZE_MAP = { constant COLOR_MAP (line 19) | const COLOR_MAP: Record { FILE: archon-ui-main/src/features/ui/primitives/styles.ts function cn (line 605) | function cn(...classes: (string | undefined | false)[]): string { FILE: archon-ui-main/src/features/ui/primitives/switch.tsx type SwitchSize (line 5) | type SwitchSize = "sm" | "md" | "lg"; type SwitchColor (line 6) | type SwitchColor = "purple" | "blue" | "green" | "pink" | "orange" | "cy... type SwitchProps (line 8) | interface SwitchProps extends React.ComponentPropsWithoutRef { method validateSession (line 83) | async validateSession(sessionId: string): Promise { method createSession (line 102) | async createSession(agentType: string, projectId?: string): Promise { method deleteSession (line 260) | async deleteSession(sessionId: string): Promise { method getServerStatus (line 284) | async getServerStatus(): Promise<'online' | 'offline' | 'unknown'> { method cleanup (line 297) | cleanup(): void { FILE: archon-ui-main/src/services/bugReportService.ts type BugContext (line 9) | interface BugContext { type BugReportData (line 33) | interface BugReportData { class BugReportService (line 44) | class BugReportService { method collectBugContext (line 48) | async collectBugContext(error?: Error): Promise { method getVersion (line 79) | private async getVersion(): Promise { method getMemoryInfo (line 96) | private getMemoryInfo(): string { method quickHealthCheck (line 111) | private async quickHealthCheck(): Promise<{ server: boolean; mcp: bool... method getRecentLogs (line 135) | private async getRecentLogs(limit: number): Promise { method submitBugReport (line 150) | async submitBugReport(bugReport: BugReportData): Promise<{ success: bo... method formatReportForClipboard (line 198) | formatReportForClipboard(bugReport: BugReportData): string { FILE: archon-ui-main/src/services/credentialsService.ts type Credential (line 1) | interface Credential { type RagSettings (line 13) | interface RagSettings { type CodeExtractionSettings (line 45) | interface CodeExtractionSettings { type OllamaInstance (line 60) | interface OllamaInstance { class CredentialsService (line 76) | class CredentialsService { method notifyCredentialUpdate (line 79) | private notifyCredentialUpdate(keys: string[]): void { method handleCredentialError (line 89) | private handleCredentialError(error: any, context: string): Error { method getAllCredentials (line 108) | async getAllCredentials(): Promise { method getCredentialsByCategory (line 116) | async getCredentialsByCategory(category: string): Promise { method getCredential (line 156) | async getCredential( method checkCredentialStatus (line 170) | async checkCredentialStatus( method getRagSettings (line 188) | async getRagSettings(): Promise { method updateCredential (line 276) | async updateCredential(credential: Credential): Promise { method createCredential (line 305) | async createCredential(credential: Credential): Promise { method deleteCredential (line 331) | async deleteCredential(key: string): Promise { method updateRagSettings (line 348) | async updateRagSettings(settings: RagSettings): Promise { method getCodeExtractionSettings (line 369) | async getCodeExtractionSettings(): Promise { method updateCodeExtractionSettings (line 410) | async updateCodeExtractionSettings( method getOllamaInstances (line 431) | async getOllamaInstances(): Promise { method setOllamaInstances (line 488) | async setOllamaInstances(instances: OllamaInstance[]): Promise { method addOllamaInstance (line 542) | async addOllamaInstance(instance: OllamaInstance): Promise { method updateOllamaInstance (line 548) | async updateOllamaInstance(instanceId: string, updates: Partial { method migrateOllamaFromLocalStorage (line 571) | async migrateOllamaFromLocalStorage(): Promise<{ migrated: boolean; in... FILE: archon-ui-main/src/services/ollamaService.ts type OllamaModel (line 11) | interface OllamaModel { type ModelDiscoveryResponse (line 36) | interface ModelDiscoveryResponse { type InstanceHealthResponse (line 74) | interface InstanceHealthResponse { type InstanceValidationResponse (line 91) | interface InstanceValidationResponse { type EmbeddingRouteResponse (line 107) | interface EmbeddingRouteResponse { type EmbeddingRoutesResponse (line 118) | interface EmbeddingRoutesResponse { type ModelDiscoveryOptions (line 137) | interface ModelDiscoveryOptions { type InstanceValidationOptions (line 142) | interface InstanceValidationOptions { type EmbeddingRouteOptions (line 148) | interface EmbeddingRouteOptions { class OllamaService (line 154) | class OllamaService { method handleApiError (line 157) | private handleApiError(error: any, context: string): Error { method discoverModels (line 186) | async discoverModels(options: ModelDiscoveryOptions): Promise { method testConnection (line 386) | async testConnection(instanceUrl: string, retryCount = 3): Promise<{ i... method getModelCapabilities (line 434) | async getModelCapabilities(modelName: string, instanceUrl: string): Pr... FILE: archon-ui-main/src/services/openrouterService.ts type OpenRouterEmbeddingModel (line 10) | interface OpenRouterEmbeddingModel { type OpenRouterModelListResponse (line 20) | interface OpenRouterModelListResponse { class OpenRouterService (line 25) | class OpenRouterService { method handleApiError (line 30) | private handleApiError(error: unknown, context: string): Error { method isCacheEntry (line 59) | private isCacheEntry( method getCachedModels (line 114) | private getCachedModels(): OpenRouterModelListResponse | null { method cacheModels (line 147) | private cacheModels(data: OpenRouterModelListResponse): void { method discoverModels (line 162) | async discoverModels(): Promise { method clearCache (line 234) | clearCache(): void { FILE: archon-ui-main/src/services/serverHealthService.ts type HealthCheckCallback (line 3) | interface HealthCheckCallback { constant HEALTH_CHECK_INTERVAL_MS (line 9) | const HEALTH_CHECK_INTERVAL_MS = 30000; class ServerHealthService (line 11) | class ServerHealthService { method loadSettings (line 22) | async loadSettings() { method checkHealth (line 32) | async checkHealth(): Promise { method startMonitoring (line 55) | startMonitoring(callbacks: HealthCheckCallback) { method handleConnectionRestored (line 104) | private handleConnectionRestored() { method stopMonitoring (line 114) | stopMonitoring() { method isServerConnected (line 122) | isServerConnected(): boolean { method handleImmediateDisconnect (line 130) | handleImmediateDisconnect() { method handleConnectionReconnect (line 144) | handleConnectionReconnect() { method getSettings (line 150) | getSettings() { method updateSettings (line 156) | async updateSettings(settings: { enabled?: boolean }) { FILE: archon-ui-main/src/utils/onboarding.ts type NormalizedCredential (line 1) | interface NormalizedCredential { type ProviderInfo (line 9) | interface ProviderInfo { function isLmConfigured (line 23) | function isLmConfigured( FILE: archon-ui-main/tests/manual/test-knowledge-api.ts function testKnowledgeAPI (line 21) | async function testKnowledgeAPI() { FILE: archon-ui-main/vite.config.ts method configureServer (line 34) | configureServer(server) { FILE: migration/0.1.0/001_add_source_url_display_name.sql type idx_archon_sources_url (line 18) | CREATE INDEX IF NOT EXISTS idx_archon_sources_url ON archon_sources(sour... type idx_archon_sources_display_name (line 19) | CREATE INDEX IF NOT EXISTS idx_archon_sources_display_name ON archon_sou... FILE: migration/0.1.0/002_add_hybrid_search_tsvector.sql type idx_archon_crawled_pages_content_search (line 26) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_content_search ON ar... type idx_archon_code_examples_content_search (line 27) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_content_search ON ar... type idx_archon_crawled_pages_content_trgm (line 30) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_content_trgm ON arch... type idx_archon_code_examples_content_trgm (line 31) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_content_trgm ON arch... type idx_archon_code_examples_summary_trgm (line 32) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_summary_trgm ON arch... function hybrid_search_archon_crawled_pages_multi (line 39) | CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages_multi( function hybrid_search_archon_crawled_pages (line 147) | CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages( function hybrid_search_archon_code_examples_multi (line 172) | CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples_multi( function hybrid_search_archon_code_examples (line 284) | CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples( FILE: migration/0.1.0/005_ollama_create_functions.sql function detect_embedding_dimension (line 9) | CREATE OR REPLACE FUNCTION detect_embedding_dimension(embedding_vector v... function get_embedding_column_name (line 17) | CREATE OR REPLACE FUNCTION get_embedding_column_name(dimension INTEGER) function match_archon_crawled_pages_multi (line 32) | CREATE OR REPLACE FUNCTION match_archon_crawled_pages_multi ( function match_archon_code_examples (line 148) | CREATE OR REPLACE FUNCTION match_archon_code_examples ( FILE: migration/0.1.0/006_ollama_create_indexes_optional.sql type idx_archon_crawled_pages_embedding_1536 (line 17) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_1536 type idx_archon_code_examples_embedding_1536 (line 22) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_1536 type idx_archon_crawled_pages_embedding_768 (line 27) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_768 type idx_archon_code_examples_embedding_768 (line 32) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_768 type idx_archon_crawled_pages_embedding_384 (line 37) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_384 type idx_archon_code_examples_embedding_384 (line 42) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_384 type idx_archon_crawled_pages_embedding_1024 (line 47) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_1024 type idx_archon_code_examples_embedding_1024 (line 52) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_1024 type idx_archon_crawled_pages_embedding_model (line 57) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_model ON a... type idx_archon_crawled_pages_embedding_dimension (line 58) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_dimension ... type idx_archon_crawled_pages_llm_chat_model (line 59) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_llm_chat_model ON ar... type idx_archon_code_examples_embedding_model (line 60) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_model ON a... type idx_archon_code_examples_embedding_dimension (line 61) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_dimension ... type idx_archon_code_examples_llm_chat_model (line 62) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_llm_chat_model ON ar... FILE: migration/0.1.0/007_add_priority_column_to_tasks.sql type idx_archon_tasks_priority (line 66) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_priority ON archon_tasks(pri... FILE: migration/0.1.0/008_add_migration_tracking.sql type archon_migrations (line 8) | CREATE TABLE IF NOT EXISTS archon_migrations ( type idx_archon_migrations_version (line 18) | CREATE INDEX IF NOT EXISTS idx_archon_migrations_version ON archon_migra... type idx_archon_migrations_applied_at (line 21) | CREATE INDEX IF NOT EXISTS idx_archon_migrations_applied_at ON archon_mi... FILE: migration/0.1.0/011_add_page_metadata_table.sql type archon_page_metadata (line 14) | CREATE TABLE IF NOT EXISTS archon_page_metadata ( type idx_archon_page_metadata_source_id (line 52) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_source_id ON archon_... type idx_archon_page_metadata_url (line 53) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_url ON archon_page_m... type idx_archon_page_metadata_section (line 54) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_section ON archon_pa... type idx_archon_page_metadata_created_at (line 55) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_created_at ON archon... type idx_archon_page_metadata_metadata (line 56) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_metadata ON archon_p... type idx_archon_crawled_pages_page_id (line 57) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_page_id ON archon_cr... FILE: migration/agent_work_orders_repositories.sql type archon_configured_repositories (line 23) | CREATE TABLE IF NOT EXISTS archon_configured_repositories ( type idx_configured_repositories_url (line 59) | CREATE UNIQUE INDEX IF NOT EXISTS idx_configured_repositories_url type idx_configured_repositories_verified (line 63) | CREATE INDEX IF NOT EXISTS idx_configured_repositories_verified type idx_configured_repositories_created_at (line 67) | CREATE INDEX IF NOT EXISTS idx_configured_repositories_created_at type idx_configured_repositories_commands (line 71) | CREATE INDEX IF NOT EXISTS idx_configured_repositories_commands FILE: migration/agent_work_orders_state.sql type archon_agent_work_orders (line 25) | CREATE TABLE IF NOT EXISTS archon_agent_work_orders ( type archon_agent_work_order_steps (line 47) | CREATE TABLE IF NOT EXISTS archon_agent_work_order_steps ( type idx_agent_work_orders_status (line 73) | CREATE INDEX IF NOT EXISTS idx_agent_work_orders_status type idx_agent_work_orders_created_at (line 77) | CREATE INDEX IF NOT EXISTS idx_agent_work_orders_created_at type idx_agent_work_orders_repository (line 81) | CREATE INDEX IF NOT EXISTS idx_agent_work_orders_repository type idx_agent_work_orders_metadata (line 85) | CREATE INDEX IF NOT EXISTS idx_agent_work_orders_metadata type idx_agent_work_order_steps_work_order_id (line 91) | CREATE INDEX IF NOT EXISTS idx_agent_work_order_steps_work_order_id type idx_agent_work_order_steps_executed_at (line 95) | CREATE INDEX IF NOT EXISTS idx_agent_work_order_steps_executed_at FILE: migration/backup_database.sql function get_backup_timestamp (line 13) | CREATE OR REPLACE FUNCTION get_backup_timestamp() FILE: migration/complete_setup.sql type archon_settings (line 26) | CREATE TABLE IF NOT EXISTS archon_settings ( type idx_archon_settings_key (line 39) | CREATE INDEX IF NOT EXISTS idx_archon_settings_key ON archon_settings(key) type idx_archon_settings_category (line 40) | CREATE INDEX IF NOT EXISTS idx_archon_settings_category ON archon_settin... function update_updated_at_column (line 43) | CREATE OR REPLACE FUNCTION update_updated_at_column() type archon_sources (line 175) | CREATE TABLE IF NOT EXISTS archon_sources ( type idx_archon_sources_title (line 188) | CREATE INDEX IF NOT EXISTS idx_archon_sources_title ON archon_sources(ti... type idx_archon_sources_url (line 189) | CREATE INDEX IF NOT EXISTS idx_archon_sources_url ON archon_sources(sour... type idx_archon_sources_display_name (line 190) | CREATE INDEX IF NOT EXISTS idx_archon_sources_display_name ON archon_sou... type idx_archon_sources_metadata (line 191) | CREATE INDEX IF NOT EXISTS idx_archon_sources_metadata ON archon_sources... type idx_archon_sources_knowledge_type (line 192) | CREATE INDEX IF NOT EXISTS idx_archon_sources_knowledge_type ON archon_s... type archon_crawled_pages (line 202) | CREATE TABLE IF NOT EXISTS archon_crawled_pages ( type idx_archon_crawled_pages_embedding_384 (line 231) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_384 ON arc... type idx_archon_crawled_pages_embedding_768 (line 232) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_768 ON arc... type idx_archon_crawled_pages_embedding_1024 (line 233) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_1024 ON ar... type idx_archon_crawled_pages_embedding_1536 (line 234) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_embedding_1536 ON ar... type idx_archon_crawled_pages_metadata (line 239) | CREATE INDEX idx_archon_crawled_pages_metadata ON archon_crawled_pages U... type idx_archon_crawled_pages_source_id (line 240) | CREATE INDEX idx_archon_crawled_pages_source_id ON archon_crawled_pages ... type idx_archon_crawled_pages_content_search (line 242) | CREATE INDEX idx_archon_crawled_pages_content_search ON archon_crawled_p... type idx_archon_crawled_pages_content_trgm (line 243) | CREATE INDEX idx_archon_crawled_pages_content_trgm ON archon_crawled_pag... type idx_archon_crawled_pages_embedding_model (line 245) | CREATE INDEX idx_archon_crawled_pages_embedding_model ON archon_crawled_... type idx_archon_crawled_pages_embedding_dimension (line 246) | CREATE INDEX idx_archon_crawled_pages_embedding_dimension ON archon_craw... type idx_archon_crawled_pages_llm_chat_model (line 247) | CREATE INDEX idx_archon_crawled_pages_llm_chat_model ON archon_crawled_p... type archon_code_examples (line 250) | CREATE TABLE IF NOT EXISTS archon_code_examples ( type archon_page_metadata (line 281) | CREATE TABLE IF NOT EXISTS archon_page_metadata ( type idx_archon_page_metadata_source_id (line 319) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_source_id ON archon_... type idx_archon_page_metadata_url (line 320) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_url ON archon_page_m... type idx_archon_page_metadata_section (line 321) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_section ON archon_pa... type idx_archon_page_metadata_created_at (line 322) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_created_at ON archon... type idx_archon_page_metadata_metadata (line 323) | CREATE INDEX IF NOT EXISTS idx_archon_page_metadata_metadata ON archon_p... type idx_archon_crawled_pages_page_id (line 324) | CREATE INDEX IF NOT EXISTS idx_archon_crawled_pages_page_id ON archon_cr... type idx_archon_code_examples_embedding_384 (line 343) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_384 ON arc... type idx_archon_code_examples_embedding_768 (line 344) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_768 ON arc... type idx_archon_code_examples_embedding_1024 (line 345) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_1024 ON ar... type idx_archon_code_examples_embedding_1536 (line 346) | CREATE INDEX IF NOT EXISTS idx_archon_code_examples_embedding_1536 ON ar... type idx_archon_code_examples_metadata (line 351) | CREATE INDEX idx_archon_code_examples_metadata ON archon_code_examples U... type idx_archon_code_examples_source_id (line 352) | CREATE INDEX idx_archon_code_examples_source_id ON archon_code_examples ... type idx_archon_code_examples_content_search (line 354) | CREATE INDEX idx_archon_code_examples_content_search ON archon_code_exam... type idx_archon_code_examples_content_trgm (line 355) | CREATE INDEX idx_archon_code_examples_content_trgm ON archon_code_exampl... type idx_archon_code_examples_summary_trgm (line 356) | CREATE INDEX idx_archon_code_examples_summary_trgm ON archon_code_exampl... type idx_archon_code_examples_embedding_model (line 358) | CREATE INDEX idx_archon_code_examples_embedding_model ON archon_code_exa... type idx_archon_code_examples_embedding_dimension (line 359) | CREATE INDEX idx_archon_code_examples_embedding_dimension ON archon_code... type idx_archon_code_examples_llm_chat_model (line 360) | CREATE INDEX idx_archon_code_examples_llm_chat_model ON archon_code_exam... function detect_embedding_dimension (line 367) | CREATE OR REPLACE FUNCTION detect_embedding_dimension(embedding_vector v... function get_embedding_column_name (line 375) | CREATE OR REPLACE FUNCTION get_embedding_column_name(dimension INTEGER) function match_archon_crawled_pages_multi (line 394) | CREATE OR REPLACE FUNCTION match_archon_crawled_pages_multi ( function match_archon_crawled_pages (line 444) | CREATE OR REPLACE FUNCTION match_archon_crawled_pages ( function match_archon_code_examples_multi (line 466) | CREATE OR REPLACE FUNCTION match_archon_code_examples_multi ( function match_archon_code_examples (line 517) | CREATE OR REPLACE FUNCTION match_archon_code_examples ( function hybrid_search_archon_crawled_pages_multi (line 544) | CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages_multi( function hybrid_search_archon_crawled_pages (line 652) | CREATE OR REPLACE FUNCTION hybrid_search_archon_crawled_pages( function hybrid_search_archon_code_examples_multi (line 677) | CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples_multi( function hybrid_search_archon_code_examples (line 789) | CREATE OR REPLACE FUNCTION hybrid_search_archon_code_examples( type archon_projects (line 877) | CREATE TABLE IF NOT EXISTS archon_projects ( type archon_tasks (line 891) | CREATE TABLE IF NOT EXISTS archon_tasks ( type archon_project_sources (line 912) | CREATE TABLE IF NOT EXISTS archon_project_sources ( type archon_document_versions (line 924) | CREATE TABLE IF NOT EXISTS archon_document_versions ( type idx_archon_tasks_project_id (line 946) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_project_id ON archon_tasks(p... type idx_archon_tasks_status (line 947) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_status ON archon_tasks(status) type idx_archon_tasks_assignee (line 948) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_assignee ON archon_tasks(ass... type idx_archon_tasks_order (line 949) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_order ON archon_tasks(task_o... type idx_archon_tasks_priority (line 950) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_priority ON archon_tasks(pri... type idx_archon_tasks_archived (line 951) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_archived ON archon_tasks(arc... type idx_archon_tasks_archived_at (line 952) | CREATE INDEX IF NOT EXISTS idx_archon_tasks_archived_at ON archon_tasks(... type idx_archon_project_sources_project_id (line 953) | CREATE INDEX IF NOT EXISTS idx_archon_project_sources_project_id ON arch... type idx_archon_project_sources_source_id (line 954) | CREATE INDEX IF NOT EXISTS idx_archon_project_sources_source_id ON archo... type idx_archon_document_versions_project_id (line 955) | CREATE INDEX IF NOT EXISTS idx_archon_document_versions_project_id ON ar... type idx_archon_document_versions_task_id (line 956) | CREATE INDEX IF NOT EXISTS idx_archon_document_versions_task_id ON archo... type idx_archon_document_versions_field_name (line 957) | CREATE INDEX IF NOT EXISTS idx_archon_document_versions_field_name ON ar... type idx_archon_document_versions_version_number (line 958) | CREATE INDEX IF NOT EXISTS idx_archon_document_versions_version_number O... type idx_archon_document_versions_created_at (line 959) | CREATE INDEX IF NOT EXISTS idx_archon_document_versions_created_at ON ar... function archive_task (line 971) | CREATE OR REPLACE FUNCTION archive_task( type archon_migrations (line 1031) | CREATE TABLE IF NOT EXISTS archon_migrations ( type idx_archon_migrations_version (line 1041) | CREATE INDEX IF NOT EXISTS idx_archon_migrations_version ON archon_migra... type idx_archon_migrations_applied_at (line 1042) | CREATE INDEX IF NOT EXISTS idx_archon_migrations_applied_at ON archon_mi... type archon_prompts (line 1090) | CREATE TABLE IF NOT EXISTS archon_prompts ( type idx_archon_prompts_name (line 1100) | CREATE INDEX IF NOT EXISTS idx_archon_prompts_name ON archon_prompts(pro... FILE: python/src/agent_work_orders/agent_executor/agent_cli_executor.py class AgentCLIExecutor (line 18) | class AgentCLIExecutor: method __init__ (line 21) | def __init__(self, cli_path: str | None = None): method build_command (line 25) | def build_command( method execute_async (line 95) | async def execute_async( method _save_prompt (line 260) | def _save_prompt(self, prompt_text: str, work_order_id: str) -> Path |... method _save_output_artifacts (line 291) | def _save_output_artifacts(self, jsonl_output: str, work_order_id: str... method _extract_session_id (line 332) | def _extract_session_id(self, jsonl_output: str) -> str | None: method _extract_result_message (line 360) | def _extract_result_message(self, jsonl_output: str) -> dict[str, obje... FILE: python/src/agent_work_orders/api/routes.py function _create_task_done_callback (line 49) | def _create_task_done_callback(agent_work_order_id: str) -> Callable[[as... function create_agent_work_order (line 149) | async def create_agent_work_order( function list_configured_repositories (line 275) | async def list_configured_repositories() -> list[ConfiguredRepository]: function create_configured_repository (line 302) | async def create_configured_repository( function update_configured_repository (line 418) | async def update_configured_repository( function delete_configured_repository (line 470) | async def delete_configured_repository(repository_id: str) -> None: function verify_repository_access (line 507) | async def verify_repository_access(repository_id: str) -> dict[str, bool... function get_agent_work_order (line 582) | async def get_agent_work_order(agent_work_order_id: str) -> AgentWorkOrder: function list_agent_work_orders (line 628) | async def list_agent_work_orders( function send_prompt_to_agent (line 671) | async def send_prompt_to_agent( function get_git_progress (line 696) | async def get_git_progress(agent_work_order_id: str) -> GitProgressSnaps... function get_agent_work_order_logs (line 744) | async def get_agent_work_order_logs( function stream_agent_work_order_logs (line 799) | async def stream_agent_work_order_logs( function get_agent_work_order_steps (line 859) | async def get_agent_work_order_steps(agent_work_order_id: str) -> StepHi... function verify_github_repository (line 904) | async def verify_github_repository( FILE: python/src/agent_work_orders/api/sse_streams.py function stream_work_order_logs (line 16) | async def stream_work_order_logs( function format_log_event (line 98) | def format_log_event(log_dict: dict[str, Any]) -> dict[str, str]: function get_current_timestamp (line 124) | def get_current_timestamp() -> str: FILE: python/src/agent_work_orders/command_loader/claude_command_loader.py class ClaudeCommandLoader (line 15) | class ClaudeCommandLoader: method __init__ (line 18) | def __init__(self, commands_directory: str | None = None): method load_command (line 22) | def load_command(self, command_name: str) -> str: method list_available_commands (line 49) | def list_available_commands(self) -> list[str]: FILE: python/src/agent_work_orders/config.py function get_project_root (line 10) | def get_project_root() -> Path: class AgentWorkOrdersConfig (line 17) | class AgentWorkOrdersConfig: method ensure_temp_dir (line 75) | def ensure_temp_dir(cls) -> Path: method get_archon_server_url (line 82) | def get_archon_server_url(cls) -> str: method get_archon_mcp_url (line 95) | def get_archon_mcp_url(cls) -> str: FILE: python/src/agent_work_orders/database/client.py function get_agent_work_orders_client (line 17) | def get_agent_work_orders_client() -> Client: function check_database_health (line 45) | async def check_database_health() -> dict[str, Any]: FILE: python/src/agent_work_orders/github_integration/github_client.py class GitHubClient (line 17) | class GitHubClient: method __init__ (line 20) | def __init__(self, gh_cli_path: str | None = None): method verify_repository_access (line 24) | async def verify_repository_access(self, repository_url: str) -> bool: method get_repository_info (line 71) | async def get_repository_info(self, repository_url: str) -> GitHubRepo... method get_issue (line 134) | async def get_issue(self, repository_url: str, issue_number: str) -> d... method create_pull_request (line 180) | async def create_pull_request( method _parse_repository_url (line 277) | def _parse_repository_url(self, repository_url: str) -> tuple[str, str]: FILE: python/src/agent_work_orders/main.py function health (line 36) | async def health() -> dict: FILE: python/src/agent_work_orders/models.py class AgentWorkOrderStatus (line 12) | class AgentWorkOrderStatus(str, Enum): class AgentWorkflowType (line 21) | class AgentWorkflowType(str, Enum): class SandboxType (line 27) | class SandboxType(str, Enum): class AgentWorkflowPhase (line 36) | class AgentWorkflowPhase(str, Enum): class WorkflowStep (line 43) | class WorkflowStep(str, Enum): class AgentWorkOrderState (line 54) | class AgentWorkOrderState(BaseModel): class AgentWorkOrder (line 68) | class AgentWorkOrder(BaseModel): class CreateAgentWorkOrderRequest (line 96) | class CreateAgentWorkOrderRequest(BaseModel): method validate_commands (line 118) | def validate_commands(cls, v: list[str]) -> list[str]: class AgentWorkOrderResponse (line 127) | class AgentWorkOrderResponse(BaseModel): class AgentPromptRequest (line 135) | class AgentPromptRequest(BaseModel): class GitProgressSnapshot (line 142) | class GitProgressSnapshot(BaseModel): class GitHubRepositoryVerificationRequest (line 153) | class GitHubRepositoryVerificationRequest(BaseModel): class GitHubRepositoryVerificationResponse (line 159) | class GitHubRepositoryVerificationResponse(BaseModel): class GitHubRepository (line 169) | class GitHubRepository(BaseModel): class ConfiguredRepository (line 178) | class ConfiguredRepository(BaseModel): class CreateRepositoryRequest (line 211) | class CreateRepositoryRequest(BaseModel): class UpdateRepositoryRequest (line 226) | class UpdateRepositoryRequest(BaseModel): class GitHubPullRequest (line 243) | class GitHubPullRequest(BaseModel): class GitHubIssue (line 253) | class GitHubIssue(BaseModel): class CommandExecutionResult (line 263) | class CommandExecutionResult(BaseModel): class StepExecutionResult (line 277) | class StepExecutionResult(BaseModel): class StepHistory (line 290) | class StepHistory(BaseModel): method get_current_step (line 296) | def get_current_step(self) -> WorkflowStep | None: class CommandNotFoundError (line 323) | class CommandNotFoundError(Exception): class WorkflowExecutionError (line 329) | class WorkflowExecutionError(Exception): class SandboxSetupError (line 335) | class SandboxSetupError(Exception): class GitHubOperationError (line 341) | class GitHubOperationError(Exception): FILE: python/src/agent_work_orders/sandbox_manager/git_branch_sandbox.py class GitBranchSandbox (line 20) | class GitBranchSandbox: method __init__ (line 27) | def __init__(self, repository_url: str, sandbox_identifier: str): method setup (line 38) | async def setup(self) -> None: method execute_command (line 72) | async def execute_command( method get_git_branch_name (line 168) | async def get_git_branch_name(self) -> str | None: method cleanup (line 180) | async def cleanup(self) -> None: FILE: python/src/agent_work_orders/sandbox_manager/git_worktree_sandbox.py class GitWorktreeSandbox (line 27) | class GitWorktreeSandbox: method __init__ (line 35) | def __init__(self, repository_url: str, sandbox_identifier: str): method setup (line 48) | async def setup(self) -> None: method execute_command (line 107) | async def execute_command( method get_git_branch_name (line 192) | async def get_git_branch_name(self) -> str | None: method cleanup (line 204) | async def cleanup(self) -> None: method _delete_temp_branch (line 243) | async def _delete_temp_branch(self) -> None: FILE: python/src/agent_work_orders/sandbox_manager/sandbox_factory.py class SandboxFactory (line 12) | class SandboxFactory: method create_sandbox (line 15) | def create_sandbox( FILE: python/src/agent_work_orders/sandbox_manager/sandbox_protocol.py class AgentSandbox (line 11) | class AgentSandbox(Protocol): method setup (line 22) | async def setup(self) -> None: method execute_command (line 31) | async def execute_command(self, command: str, timeout: int = 300) -> C... method get_git_branch_name (line 43) | async def get_git_branch_name(self) -> str | None: method cleanup (line 51) | async def cleanup(self) -> None: FILE: python/src/agent_work_orders/server.py function lifespan (line 27) | async def lifespan(app: FastAPI) -> AsyncGenerator[None, None]: function health_check (line 123) | async def health_check() -> dict[str, Any]: function root (line 259) | async def root() -> dict: FILE: python/src/agent_work_orders/state_manager/file_state_repository.py class FileStateRepository (line 22) | class FileStateRepository: method __init__ (line 29) | def __init__(self, state_directory: str): method _get_state_file_path (line 38) | def _get_state_file_path(self, agent_work_order_id: str) -> Path: method _serialize_datetime (line 49) | def _serialize_datetime(self, obj): method _read_state_file (line 62) | async def _read_state_file(self, agent_work_order_id: str) -> dict[str... method _write_state_file (line 88) | async def _write_state_file(self, agent_work_order_id: str, data: dict... method create (line 109) | async def create(self, work_order: AgentWorkOrderState, metadata: dict... method get (line 130) | async def get(self, agent_work_order_id: str) -> tuple[AgentWorkOrderS... method list (line 149) | async def list(self, status_filter: AgentWorkOrderStatus | None = None... method update_status (line 183) | async def update_status( method update_git_branch (line 219) | async def update_git_branch( method update_session_id (line 248) | async def update_session_id( method save_step_history (line 277) | async def save_step_history( method get_step_history (line 306) | async def get_step_history(self, agent_work_order_id: str) -> StepHist... method delete (line 322) | async def delete(self, agent_work_order_id: str) -> None: method list_state_ids (line 337) | def list_state_ids(self) -> "list[str]": # type: ignore[valid-type] FILE: python/src/agent_work_orders/state_manager/repository_config_repository.py function get_supabase_client (line 19) | def get_supabase_client() -> Client: class RepositoryConfigRepository (line 39) | class RepositoryConfigRepository: method __init__ (line 59) | def __init__(self) -> None: method _row_to_model (line 66) | def _row_to_model(self, row: dict[str, Any]) -> ConfiguredRepository: method list_repositories (line 126) | async def list_repositories(self) -> list[ConfiguredRepository]: method get_repository (line 155) | async def get_repository(self, repository_id: str) -> ConfiguredReposi... method create_repository (line 196) | async def create_repository( method update_repository (line 254) | async def update_repository( method delete_repository (line 317) | async def delete_repository(self, repository_id: str) -> bool: FILE: python/src/agent_work_orders/state_manager/repository_factory.py function create_repository (line 21) | def create_repository() -> WorkOrderRepository | FileStateRepository | S... FILE: python/src/agent_work_orders/state_manager/supabase_repository.py class SupabaseWorkOrderRepository (line 31) | class SupabaseWorkOrderRepository: method __init__ (line 48) | def __init__(self) -> None: method _row_to_state_and_metadata (line 60) | def _row_to_state_and_metadata(self, row: dict[str, Any]) -> tuple[Age... method create (line 90) | async def create(self, work_order: AgentWorkOrderState, metadata: dict... method get (line 142) | async def get(self, agent_work_order_id: str) -> tuple[AgentWorkOrderS... method list (line 176) | async def list(self, status_filter: AgentWorkOrderStatus | None = None... method update_status (line 219) | async def update_status( method update_git_branch (line 292) | async def update_git_branch( method update_session_id (line 326) | async def update_session_id( method save_step_history (line 360) | async def save_step_history( method get_step_history (line 429) | async def get_step_history(self, agent_work_order_id: str) -> StepHist... FILE: python/src/agent_work_orders/state_manager/work_order_repository.py class WorkOrderRepository (line 16) | class WorkOrderRepository: method __init__ (line 23) | def __init__(self): method create (line 30) | async def create(self, work_order: AgentWorkOrderState, metadata: dict... method get (line 45) | async def get(self, agent_work_order_id: str) -> tuple[AgentWorkOrderS... method list (line 62) | async def list(self, status_filter: AgentWorkOrderStatus | None = None... method update_status (line 82) | async def update_status( method update_git_branch (line 109) | async def update_git_branch( method update_session_id (line 128) | async def update_session_id( method save_step_history (line 147) | async def save_step_history( method get_step_history (line 164) | async def get_step_history(self, agent_work_order_id: str) -> StepHist... FILE: python/src/agent_work_orders/utils/git_operations.py function get_commit_count (line 10) | async def get_commit_count(branch_name: str, repo_path: str | Path, base... function get_files_changed (line 36) | async def get_files_changed(branch_name: str, repo_path: str | Path, bas... function get_latest_commit_message (line 63) | async def get_latest_commit_message(branch_name: str, repo_path: str | P... function has_planning_commits (line 88) | async def has_planning_commits(branch_name: str, repo_path: str | Path) ... function get_current_branch (line 138) | async def get_current_branch(repo_path: str | Path) -> str | None: FILE: python/src/agent_work_orders/utils/id_generator.py function generate_work_order_id (line 9) | def generate_work_order_id() -> str: function generate_sandbox_identifier (line 21) | def generate_sandbox_identifier(agent_work_order_id: str) -> str: FILE: python/src/agent_work_orders/utils/log_buffer.py class WorkOrderLogBuffer (line 15) | class WorkOrderLogBuffer: method __init__ (line 26) | def __init__(self) -> None: method add_log (line 35) | def add_log( method get_logs (line 72) | def get_logs( method get_logs_since (line 127) | def get_logs_since( method clear_work_order (line 151) | def clear_work_order(self, work_order_id: str) -> None: method cleanup_old_work_orders (line 166) | def cleanup_old_work_orders(self) -> int: method start_cleanup_task (line 196) | async def start_cleanup_task(self, interval_seconds: int = 300) -> None: method stop_cleanup_task (line 219) | async def stop_cleanup_task(self) -> None: method get_work_order_count (line 233) | def get_work_order_count(self) -> int: method get_log_count (line 242) | def get_log_count(self, work_order_id: str) -> int: FILE: python/src/agent_work_orders/utils/port_allocation.py function get_port_range_for_work_order (line 23) | def get_port_range_for_work_order(work_order_id: str) -> tuple[int, int]: function is_port_available (line 54) | def is_port_available(port: int) -> bool: function find_available_port_range (line 72) | def find_available_port_range( function create_ports_env_file (line 118) | def create_ports_env_file( function get_ports_for_work_order (line 177) | def get_ports_for_work_order(work_order_id: str) -> tuple[int, int]: function find_next_available_ports (line 195) | def find_next_available_ports(work_order_id: str, max_attempts: int = 20... FILE: python/src/agent_work_orders/utils/state_reconciliation.py function find_orphaned_worktrees (line 21) | async def find_orphaned_worktrees(repository: SupabaseWorkOrderRepositor... function find_dangling_state (line 66) | async def find_dangling_state(repository: SupabaseWorkOrderRepository) -... function reconcile_state (line 106) | async def reconcile_state( FILE: python/src/agent_work_orders/utils/structured_logger.py class BufferProcessor (line 16) | class BufferProcessor: method __init__ (line 23) | def __init__(self, buffer: WorkOrderLogBuffer) -> None: method __call__ (line 31) | def __call__( function configure_structured_logging (line 70) | def configure_structured_logging(log_level: str = "INFO") -> None: function configure_structured_logging_with_buffer (line 98) | def configure_structured_logging_with_buffer( function bind_work_order_context (line 130) | def bind_work_order_context(work_order_id: str) -> None: function clear_work_order_context (line 147) | def clear_work_order_context() -> None: function get_logger (line 164) | def get_logger(name: str | None = None) -> structlog.stdlib.BoundLogger: FILE: python/src/agent_work_orders/utils/worktree_operations.py function _get_repo_hash (line 21) | def _get_repo_hash(repository_url: str) -> str: function get_base_repo_path (line 33) | def get_base_repo_path(repository_url: str) -> str: function get_worktree_path (line 47) | def get_worktree_path(repository_url: str, work_order_id: str) -> str: function ensure_base_repository (line 62) | def ensure_base_repository(repository_url: str, logger: "structlog.stdli... function create_worktree (line 107) | def create_worktree( function validate_worktree (line 172) | def validate_worktree( function remove_worktree (line 218) | def remove_worktree( function setup_worktree_environment (line 267) | def setup_worktree_environment( FILE: python/src/agent_work_orders/workflow_engine/workflow_operations.py function run_create_branch_step (line 25) | async def run_create_branch_step( function run_planning_step (line 97) | async def run_planning_step( function run_execute_step (line 170) | async def run_execute_step( function run_commit_step (line 244) | async def run_commit_step( function run_create_pr_step (line 314) | async def run_create_pr_step( function run_review_step (line 390) | async def run_review_step( FILE: python/src/agent_work_orders/workflow_engine/workflow_orchestrator.py class WorkflowOrchestrator (line 32) | class WorkflowOrchestrator: method __init__ (line 35) | def __init__( method execute_workflow (line 50) | async def execute_workflow( method _calculate_git_stats (line 272) | async def _calculate_git_stats( FILE: python/src/agents/base_agent.py class ArchonDependencies (line 21) | class ArchonDependencies: class BaseAgentOutput (line 34) | class BaseAgentOutput(BaseModel): class RateLimitHandler (line 43) | class RateLimitHandler: method __init__ (line 46) | def __init__(self, max_retries: int = 5, base_delay: float = 1.0): method execute_with_rate_limit (line 52) | async def execute_with_rate_limit(self, func, *args, progress_callback... method _extract_wait_time (line 127) | def _extract_wait_time(self, error_message: str) -> float | None: class BaseAgent (line 141) | class BaseAgent(ABC, Generic[DepsT, OutputT]): method __init__ (line 153) | def __init__( method _create_agent (line 179) | def _create_agent(self, **kwargs) -> Agent: method get_system_prompt (line 184) | def get_system_prompt(self) -> str: method run (line 188) | async def run(self, user_prompt: str, deps: DepsT) -> OutputT: method _run_agent (line 208) | async def _run_agent(self, user_prompt: str, deps: DepsT) -> OutputT: method run_stream (line 226) | def run_stream(self, user_prompt: str, deps: DepsT): method add_tool (line 243) | def add_tool(self, func, **tool_kwargs): method add_system_prompt_function (line 253) | def add_system_prompt_function(self, func): method agent (line 263) | def agent(self) -> Agent: FILE: python/src/agents/document_agent.py class DocumentDependencies (line 27) | class DocumentDependencies(ArchonDependencies): class DocumentOperation (line 35) | class DocumentOperation(BaseModel): class DocumentAgent (line 52) | class DocumentAgent(BaseAgent[DocumentDependencies, DocumentOperation]): method __init__ (line 64) | def __init__(self, model: str = None, **kwargs): method _create_agent (line 73) | def _create_agent(self, **kwargs) -> Agent: method _generate_block_id (line 662) | def _generate_block_id(self) -> str: method _create_block (line 666) | def _create_block( method _convert_to_blocks (line 677) | def _convert_to_blocks( method get_system_prompt (line 795) | def get_system_prompt(self) -> str: method run_conversation (line 810) | async def run_conversation( FILE: python/src/agents/mcp_client.py class MCPClient (line 18) | class MCPClient: method __init__ (line 21) | def __init__(self, mcp_url: str = None): method __aenter__ (line 49) | async def __aenter__(self): method __aexit__ (line 53) | async def __aexit__(self, exc_type, exc_val, exc_tb): method close (line 57) | async def close(self): method call_tool (line 61) | async def call_tool(self, tool_name: str, **kwargs) -> dict[str, Any]: method perform_rag_query (line 101) | async def perform_rag_query(self, query: str, source: str = None, matc... method get_available_sources (line 108) | async def get_available_sources(self) -> str: method search_code_examples (line 113) | async def search_code_examples( method manage_project (line 122) | async def manage_project(self, action: str, **kwargs) -> str: method manage_document (line 127) | async def manage_document(self, action: str, project_id: str, **kwargs... method manage_task (line 134) | async def manage_task(self, action: str, project_id: str, **kwargs) ->... function get_mcp_client (line 144) | async def get_mcp_client() -> MCPClient: FILE: python/src/agents/rag_agent.py class RagDependencies (line 25) | class RagDependencies(ArchonDependencies): class RagQueryResult (line 34) | class RagQueryResult(BaseModel): class RagAgent (line 50) | class RagAgent(BaseAgent[RagDependencies, str]): method __init__ (line 62) | def __init__(self, model: str = None, **kwargs): method _create_agent (line 71) | def _create_agent(self, **kwargs) -> Agent: method get_system_prompt (line 316) | def get_system_prompt(self) -> str: method run_conversation (line 329) | async def run_conversation( FILE: python/src/agents/server.py class AgentRequest (line 36) | class AgentRequest(BaseModel): class AgentResponse (line 45) | class AgentResponse(BaseModel): function fetch_credentials_from_server (line 64) | async def fetch_credentials_from_server(): function lifespan (line 112) | async def lifespan(app: FastAPI): function health_check (line 152) | async def health_check(): function run_agent (line 163) | async def run_agent(request: AgentRequest): function list_agents (line 198) | async def list_agents(): function stream_agent (line 214) | async def stream_agent(agent_type: str, request: AgentRequest): FILE: python/src/mcp_server/features/documents/document_tools.py function optimize_document_response (line 24) | def optimize_document_response(doc: dict) -> dict: function register_document_tools (line 35) | def register_document_tools(mcp: FastMCP): FILE: python/src/mcp_server/features/documents/version_tools.py function optimize_version_response (line 24) | def optimize_version_response(version: dict) -> dict: function register_version_tools (line 35) | def register_version_tools(mcp: FastMCP): FILE: python/src/mcp_server/features/feature_tools.py function register_feature_tools (line 21) | def register_feature_tools(mcp: FastMCP): FILE: python/src/mcp_server/features/projects/project_tools.py function truncate_text (line 30) | def truncate_text(text: str, max_length: int = MAX_DESCRIPTION_LENGTH) -... function optimize_project_response (line 36) | def optimize_project_response(project: dict) -> dict: function register_project_tools (line 53) | def register_project_tools(mcp: FastMCP): FILE: python/src/mcp_server/features/rag/rag_tools.py function get_setting (line 27) | def get_setting(key: str, default: str = "false") -> str: function get_bool_setting (line 32) | def get_bool_setting(key: str, default: bool = False) -> bool: function register_rag_tools (line 38) | def register_rag_tools(mcp: FastMCP): FILE: python/src/mcp_server/features/tasks/task_tools.py function truncate_text (line 25) | def truncate_text(text: str, max_length: int = MAX_DESCRIPTION_LENGTH) -... function optimize_task_response (line 31) | def optimize_task_response(task: dict) -> dict: function register_task_tools (line 51) | def register_task_tools(mcp: FastMCP): FILE: python/src/mcp_server/mcp_server.py class ArchonContext (line 85) | class ArchonContext: method __post_init__ (line 95) | def __post_init__(self): function perform_health_checks (line 107) | async def perform_health_checks(context: ArchonContext): function lifespan (line 134) | async def lifespan(server: FastMCP) -> AsyncIterator[ArchonContext]: function health_check (line 338) | async def health_check(ctx: Context) -> str: function session_info (line 387) | async def session_info(ctx: Context) -> str: function register_modules (line 424) | def register_modules(): function http_health_endpoint (line 555) | async def http_health_endpoint(request: Request): function main (line 600) | def main(): FILE: python/src/mcp_server/models.py class DocumentType (line 17) | class DocumentType(str, Enum): class Priority (line 28) | class Priority(str, Enum): class UserStory (line 37) | class UserStory(BaseModel): class Goal (line 53) | class Goal(BaseModel): class TechnicalRequirement (line 65) | class TechnicalRequirement(BaseModel): class ProjectRequirementsDocument (line 75) | class ProjectRequirementsDocument(BaseModel): method set_last_updated (line 118) | def set_last_updated(cls, v): class GeneralDocument (line 122) | class GeneralDocument(BaseModel): method set_timestamps (line 150) | def set_timestamps(cls, v): class CreateDocumentRequest (line 154) | class CreateDocumentRequest(BaseModel): class UpdateDocumentRequest (line 165) | class UpdateDocumentRequest(BaseModel): function create_default_prd (line 179) | def create_default_prd(project_title: str) -> ProjectRequirementsDocument: function create_default_document (line 217) | def create_default_document( FILE: python/src/mcp_server/utils/error_handling.py class MCPErrorFormatter (line 16) | class MCPErrorFormatter: method format_error (line 20) | def format_error( method from_http_error (line 60) | def from_http_error(response: httpx.Response, operation: str) -> str: method from_exception (line 103) | def from_exception(exception: Exception, operation: str, context: dict... function _get_suggestion_for_status (line 151) | def _get_suggestion_for_status(status_code: int) -> str | None: FILE: python/src/mcp_server/utils/http_client.py function get_http_client (line 16) | async def get_http_client( FILE: python/src/mcp_server/utils/timeout_config.py function get_default_timeout (line 12) | def get_default_timeout() -> httpx.Timeout: function get_polling_timeout (line 33) | def get_polling_timeout() -> httpx.Timeout: function get_max_polling_attempts (line 50) | def get_max_polling_attempts() -> int: function get_polling_interval (line 64) | def get_polling_interval(attempt: int) -> float: FILE: python/src/server/api_routes/agent_chat_api.py class CreateSessionRequest (line 22) | class CreateSessionRequest(BaseModel): class ChatMessage (line 27) | class ChatMessage(BaseModel): function create_session (line 37) | async def create_session(request: CreateSessionRequest): function get_session (line 53) | async def get_session(session_id: str): function get_messages (line 61) | async def get_messages(session_id: str): function send_message (line 69) | async def send_message(session_id: str, request: dict): FILE: python/src/server/api_routes/agent_work_orders_proxy.py function proxy_to_agent_work_orders (line 23) | async def proxy_to_agent_work_orders(request: Request, path: str = "") -... FILE: python/src/server/api_routes/bug_report_api.py class BugContext (line 22) | class BugContext(BaseModel): class BugReportRequest (line 30) | class BugReportRequest(BaseModel): class BugReportResponse (line 41) | class BugReportResponse(BaseModel): class GitHubService (line 48) | class GitHubService: method __init__ (line 49) | def __init__(self): method create_issue (line 55) | async def create_issue(self, bug_report: BugReportRequest) -> dict[str... method _format_issue_body (line 115) | def _format_issue_body(self, bug_report: BugReportRequest) -> str: function create_github_issue (line 195) | async def create_github_issue(bug_report: BugReportRequest): function _create_manual_submission_response (line 239) | def _create_manual_submission_response(bug_report: BugReportRequest) -> ... function bug_report_health (line 271) | async def bug_report_health(): FILE: python/src/server/api_routes/internal_api.py function is_internal_request (line 30) | def is_internal_request(request: Request) -> bool: function internal_health (line 55) | async def internal_health(): function get_agent_credentials (line 61) | async def get_agent_credentials(request: Request) -> dict[str, Any]: function get_mcp_credentials (line 118) | async def get_mcp_credentials(request: Request) -> dict[str, Any]: FILE: python/src/server/api_routes/knowledge_api.py function _validate_provider_api_key (line 62) | async def _validate_provider_api_key(provider: str = None) -> None: class KnowledgeItemRequest (line 147) | class KnowledgeItemRequest(BaseModel): class Config (line 155) | class Config: class CrawlRequest (line 168) | class CrawlRequest(BaseModel): class RagQueryRequest (line 176) | class RagQueryRequest(BaseModel): function get_crawl_progress (line 184) | async def get_crawl_progress(progress_id: str): function get_knowledge_sources (line 227) | async def get_knowledge_sources(): function get_knowledge_items (line 239) | async def get_knowledge_items( function get_knowledge_items_summary (line 259) | async def get_knowledge_items_summary( function update_knowledge_item (line 290) | async def update_knowledge_item(source_id: str, updates: dict): function delete_knowledge_item (line 315) | async def delete_knowledge_item(source_id: str): function get_knowledge_item_chunks (line 364) | async def get_knowledge_item_chunks( function get_knowledge_item_code_examples (line 523) | async def get_knowledge_item_code_examples( function refresh_knowledge_item (line 613) | async def refresh_knowledge_item(source_id: str): function crawl_knowledge_item (line 731) | async def crawl_knowledge_item(request: KnowledgeItemRequest): function _perform_crawl_with_progress (line 807) | async def _perform_crawl_with_progress( function upload_document (line 895) | async def upload_document( function _perform_upload_with_progress (line 975) | async def _perform_upload_with_progress( function search_knowledge_items (line 1096) | async def search_knowledge_items(request: RagQueryRequest): function perform_rag_query (line 1110) | async def perform_rag_query(request: RagQueryRequest): function search_code_examples (line 1147) | async def search_code_examples(request: RagQueryRequest): function search_code_examples_simple (line 1183) | async def search_code_examples_simple(request: RagQueryRequest): function get_available_sources (line 1190) | async def get_available_sources(): function delete_source (line 1208) | async def delete_source(source_id: str): function get_database_metrics (line 1243) | async def get_database_metrics(): function knowledge_health (line 1256) | async def knowledge_health(): function stop_crawl_task (line 1285) | async def stop_crawl_task(progress_id: str): FILE: python/src/server/api_routes/mcp_api.py function get_container_status_http (line 25) | async def get_container_status_http() -> dict[str, Any]: function get_container_status_docker (line 80) | def get_container_status_docker() -> dict[str, Any]: function get_container_status (line 148) | async def get_container_status() -> dict[str, Any]: function get_status (line 168) | async def get_status(): function get_mcp_config (line 191) | async def get_mcp_config(): function get_mcp_clients (line 234) | async def get_mcp_clients(): function get_mcp_sessions (line 253) | async def get_mcp_sessions(): function mcp_health (line 283) | async def mcp_health(): FILE: python/src/server/api_routes/migration_api.py class MigrationRecord (line 17) | class MigrationRecord(BaseModel): class PendingMigration (line 26) | class PendingMigration(BaseModel): class MigrationStatusResponse (line 36) | class MigrationStatusResponse(BaseModel): class MigrationHistoryResponse (line 48) | class MigrationHistoryResponse(BaseModel): function get_migration_status (line 61) | async def get_migration_status( function get_migration_history (line 99) | async def get_migration_history(response: Response, if_none_match: str |... function get_pending_migrations (line 146) | async def get_pending_migrations(): FILE: python/src/server/api_routes/ollama_api.py class InstanceValidationRequest (line 29) | class InstanceValidationRequest(BaseModel): class InstanceValidationResponse (line 36) | class InstanceValidationResponse(BaseModel): class ModelDiscoveryRequest (line 47) | class ModelDiscoveryRequest(BaseModel): class ModelDiscoveryResponse (line 54) | class ModelDiscoveryResponse(BaseModel): class EmbeddingRouteRequest (line 64) | class EmbeddingRouteRequest(BaseModel): class EmbeddingRouteResponse (line 71) | class EmbeddingRouteResponse(BaseModel): function discover_models_endpoint (line 84) | async def discover_models_endpoint( function health_check_endpoint (line 143) | async def health_check_endpoint( function validate_instance_endpoint (line 208) | async def validate_instance_endpoint(request: InstanceValidationRequest)... function analyze_embedding_route_endpoint (line 258) | async def analyze_embedding_route_endpoint(request: EmbeddingRouteReques... function get_available_embedding_routes_endpoint (line 295) | async def get_available_embedding_routes_endpoint( function clear_ollama_cache_endpoint (line 351) | async def clear_ollama_cache_endpoint() -> dict[str, str]: class ModelDiscoveryAndStoreRequest (line 378) | class ModelDiscoveryAndStoreRequest(BaseModel): class StoredModelInfo (line 384) | class StoredModelInfo(BaseModel): class ModelListResponse (line 402) | class ModelListResponse(BaseModel): function discover_and_store_models_endpoint (line 412) | async def discover_and_store_models_endpoint(request: ModelDiscoveryAndS... function get_stored_models_endpoint (line 500) | async def get_stored_models_endpoint() -> ModelListResponse: function _warm_model_cache (line 583) | async def _warm_model_cache(instance_urls: list[str]) -> None: function _assess_archon_compatibility_with_testing (line 602) | async def _assess_archon_compatibility_with_testing(model, instance_url:... function _assess_archon_compatibility (line 653) | def _assess_archon_compatibility(model) -> dict[str, Any]: function _determine_model_type (line 714) | def _determine_model_type(model) -> str: function _extract_model_size (line 754) | def _extract_model_size(model) -> int | None: function _extract_context_length (line 776) | def _extract_context_length(model) -> int | None: function _extract_parameters (line 793) | def _extract_parameters(model) -> str | None: function _assess_performance_rating (line 806) | def _assess_performance_rating(model) -> str | None: function _generate_model_description (line 825) | def _generate_model_description(model) -> str | None: function _test_function_calling_capability (line 842) | async def _test_function_calling_capability(model_name: str, instance_ur... function _test_structured_output_capability (line 901) | async def _test_structured_output_capability(model_name: str, instance_u... function discover_models_with_real_details (line 958) | async def discover_models_with_real_details(request: ModelDiscoveryAndSt... function _determine_model_type_from_name_only (line 1184) | def _determine_model_type_from_name_only(model_name: str) -> str: class ModelCapabilityTestRequest (line 1212) | class ModelCapabilityTestRequest(BaseModel): class ModelCapabilityTestResponse (line 1221) | class ModelCapabilityTestResponse(BaseModel): function test_model_capabilities_endpoint (line 1232) | async def test_model_capabilities_endpoint(request: ModelCapabilityTestR... FILE: python/src/server/api_routes/openrouter_api.py function get_openrouter_models (line 15) | async def get_openrouter_models() -> OpenRouterModelListResponse: FILE: python/src/server/api_routes/pages_api.py class PageSummary (line 26) | class PageSummary(BaseModel): class PageResponse (line 38) | class PageResponse(BaseModel): class PageListResponse (line 55) | class PageListResponse(BaseModel): function _handle_large_page_content (line 63) | def _handle_large_page_content(page_data: dict) -> dict: function list_pages (line 93) | async def list_pages( function get_page_by_url (line 137) | async def get_page_by_url(url: str = Query(..., description="The URL of ... function get_page_by_id (line 171) | async def get_page_by_id(page_id: str): FILE: python/src/server/api_routes/progress_api.py function get_progress (line 23) | async def get_progress( function list_active_operations (line 101) | async def list_active_operations(): FILE: python/src/server/api_routes/projects_api.py class CreateProjectRequest (line 43) | class CreateProjectRequest(BaseModel): class UpdateProjectRequest (line 55) | class UpdateProjectRequest(BaseModel): class CreateTaskRequest (line 67) | class CreateTaskRequest(BaseModel): function list_projects (line 79) | async def list_projects( function create_project (line 163) | async def create_project(request: CreateProjectRequest): function projects_health (line 215) | async def projects_health(): function get_all_task_counts (line 278) | async def get_all_task_counts( function get_project (line 339) | async def get_project(project_id: str): function update_project (line 379) | async def update_project(project_id: str, request: UpdateProjectRequest): function delete_project (line 490) | async def delete_project(project_id: str): function get_project_features (line 522) | async def get_project_features(project_id: str): function list_project_tasks (line 552) | async def list_project_tasks( function create_task (line 658) | async def create_task(request: CreateTaskRequest): function list_tasks (line 692) | async def list_tasks( function get_task (line 773) | async def get_task(task_id: str): class UpdateTaskRequest (line 801) | class UpdateTaskRequest(BaseModel): class CreateDocumentRequest (line 811) | class CreateDocumentRequest(BaseModel): class UpdateDocumentRequest (line 819) | class UpdateDocumentRequest(BaseModel): class CreateVersionRequest (line 826) | class CreateVersionRequest(BaseModel): class RestoreVersionRequest (line 835) | class RestoreVersionRequest(BaseModel): function update_task (line 840) | async def update_task(task_id: str, request: UpdateTaskRequest): function delete_task (line 886) | async def delete_task(task_id: str): function mcp_update_task_status (line 916) | async def mcp_update_task_status(task_id: str, status: str): function list_project_documents (line 957) | async def list_project_documents(project_id: str, include_content: bool ... function create_project_document (line 995) | async def create_project_document(project_id: str, request: CreateDocume... function get_project_document (line 1033) | async def get_project_document(project_id: str, doc_id: str): function update_project_document (line 1062) | async def update_project_document(project_id: str, doc_id: str, request:... function delete_project_document (line 1102) | async def delete_project_document(project_id: str, doc_id: str): function list_project_versions (line 1134) | async def list_project_versions(project_id: str, field_name: str = None): function create_project_version (line 1165) | async def create_project_version(project_id: str, request: CreateVersion... function get_project_version (line 1204) | async def get_project_version(project_id: str, field_name: str, version_... function restore_project_version (line 1239) | async def restore_project_version( FILE: python/src/server/api_routes/providers_api.py function test_openai_connection (line 17) | async def test_openai_connection(api_key: str) -> bool: function test_google_connection (line 31) | async def test_google_connection(api_key: str) -> bool: function test_anthropic_connection (line 45) | async def test_anthropic_connection(api_key: str) -> bool: function test_openrouter_connection (line 62) | async def test_openrouter_connection(api_key: str) -> bool: function test_grok_connection (line 76) | async def test_grok_connection(api_key: str) -> bool: function get_provider_status (line 100) | async def get_provider_status( FILE: python/src/server/api_routes/settings_api.py class CredentialRequest (line 24) | class CredentialRequest(BaseModel): class CredentialUpdateRequest (line 32) | class CredentialUpdateRequest(BaseModel): class CredentialResponse (line 39) | class CredentialResponse(BaseModel): function list_credentials (line 46) | async def list_credentials(category: str | None = None): function get_credentials_by_category (line 78) | async def get_credentials_by_category(category: str): function create_credential (line 97) | async def create_credential(request: CredentialRequest): function get_credential (line 142) | async def get_credential(key: str): function update_credential (line 187) | async def update_credential(key: str, request: dict[str, Any]): function delete_credential (line 247) | async def delete_credential(key: str): function initialize_credentials_endpoint (line 267) | async def initialize_credentials_endpoint(): function database_metrics (line 282) | async def database_metrics(): function settings_health (line 338) | async def settings_health(): function check_credential_status (line 347) | async def check_credential_status(request: dict[str, list[str]]): FILE: python/src/server/api_routes/version_api.py class ReleaseAsset (line 18) | class ReleaseAsset(BaseModel): class VersionCheckResponse (line 28) | class VersionCheckResponse(BaseModel): class CurrentVersionResponse (line 42) | class CurrentVersionResponse(BaseModel): function check_for_updates (line 54) | async def check_for_updates(response: Response, if_none_match: str | Non... function get_current_version (line 99) | async def get_current_version(): function clear_version_cache (line 109) | async def clear_version_cache(): FILE: python/src/server/config/config.py class ConfigurationError (line 13) | class ConfigurationError(Exception): class EnvironmentConfig (line 20) | class EnvironmentConfig: class RAGStrategyConfig (line 32) | class RAGStrategyConfig: class MCPMonitoringConfig (line 42) | class MCPMonitoringConfig: function validate_openai_api_key (line 58) | def validate_openai_api_key(api_key: str) -> bool: function validate_openrouter_api_key (line 69) | def validate_openrouter_api_key(api_key: str) -> bool: function validate_supabase_key (line 82) | def validate_supabase_key(supabase_key: str) -> tuple[bool, str]: function validate_supabase_url (line 125) | def validate_supabase_url(url: str) -> bool: function load_environment_config (line 168) | def load_environment_config() -> EnvironmentConfig: function get_config (line 245) | def get_config() -> EnvironmentConfig: function get_rag_strategy_config (line 250) | def get_rag_strategy_config() -> RAGStrategyConfig: function get_mcp_monitoring_config (line 267) | def get_mcp_monitoring_config() -> MCPMonitoringConfig: FILE: python/src/server/config/logfire_config.py function is_logfire_enabled (line 39) | def is_logfire_enabled() -> bool: function setup_logfire (line 53) | def setup_logfire( function get_logger (line 137) | def get_logger(name: str) -> logging.Logger: function safe_span (line 151) | def safe_span(name: str, **kwargs): class NoOpSpan (line 175) | class NoOpSpan: method set_attribute (line 178) | def set_attribute(self, key: str, value: Any) -> None: method record_exception (line 182) | def record_exception(self, exception: Exception) -> None: method __enter__ (line 186) | def __enter__(self): method __exit__ (line 189) | def __exit__(self, exc_type, exc_val, exc_tb): function safe_set_attribute (line 193) | def safe_set_attribute(span: Any, key: str, value: Any) -> None: function safe_record_exception (line 209) | def safe_record_exception(span: Any, exception: Exception) -> None: function safe_logfire_info (line 224) | def safe_logfire_info(message: str, **kwargs) -> None: function safe_logfire_error (line 239) | def safe_logfire_error(message: str, **kwargs) -> None: function safe_logfire_warning (line 254) | def safe_logfire_warning(message: str, **kwargs) -> None: function safe_logfire_debug (line 269) | def safe_logfire_debug(message: str, **kwargs) -> None: FILE: python/src/server/config/service_discovery.py class Environment (line 15) | class Environment(Enum): class ServiceDiscovery (line 22) | class ServiceDiscovery: method __init__ (line 30) | def __init__(self): method _detect_environment (line 82) | def _detect_environment() -> Environment: method is_service_available (line 91) | def is_service_available(self, service: str) -> bool: method get_service_url (line 104) | def get_service_url(self, service: str, protocol: str = "http") -> str... method get_service_host_port (line 140) | def get_service_host_port(self, service: str) -> tuple[str | None, int]: method health_check (line 153) | async def health_check(self, service: str, timeout: float = 5.0) -> bool: method wait_for_service (line 174) | async def wait_for_service( method get_all_services (line 199) | def get_all_services(self) -> dict[str, str]: method is_docker (line 208) | def is_docker(self) -> bool: method is_local (line 213) | def is_local(self) -> bool: function get_discovery (line 222) | def get_discovery() -> ServiceDiscovery: class _LazyDiscovery (line 231) | class _LazyDiscovery: method __getattr__ (line 232) | def __getattr__(self, name): function get_api_url (line 240) | def get_api_url() -> str: function get_mcp_url (line 245) | def get_mcp_url() -> str: function get_agents_url (line 250) | def get_agents_url() -> str: function get_agent_work_orders_url (line 255) | def get_agent_work_orders_url() -> str | None: function is_service_available (line 265) | def is_service_available(service: str) -> bool: function is_service_healthy (line 278) | async def is_service_healthy(service: str) -> bool: FILE: python/src/server/main.py function lifespan (line 70) | async def lifespan(app: FastAPI): function skip_health_check_logs (line 169) | async def skip_health_check_logs(request, call_next): function root (line 205) | async def root(): function health_check (line 218) | async def health_check(response: Response): function api_health_check (line 260) | async def api_health_check(response: Response): function _check_database_schema (line 268) | async def _check_database_schema(): function main (line 345) | def main(): FILE: python/src/server/middleware/logging_middleware.py class LoggingMiddleware (line 18) | class LoggingMiddleware(BaseHTTPMiddleware): method __init__ (line 27) | def __init__(self, app): method dispatch (line 31) | async def dispatch(self, request: Request, call_next: Callable) -> Res... function instrument_fastapi (line 67) | def instrument_fastapi(app): class LoggingRoute (line 93) | class LoggingRoute(APIRoute): method get_route_handler (line 100) | def get_route_handler(self) -> Callable: FILE: python/src/server/models/progress_models.py class ProgressDetails (line 8) | class ProgressDetails(BaseModel): class BaseProgressResponse (line 27) | class BaseProgressResponse(BaseModel): method ensure_logs_is_list (line 44) | def ensure_logs_is_list(cls, v): class CrawlProgressResponse (line 68) | class CrawlProgressResponse(BaseProgressResponse): method convert_duration_to_string (line 109) | def convert_duration_to_string(cls, v): class UploadProgressResponse (line 120) | class UploadProgressResponse(BaseProgressResponse): class ProjectCreationProgressResponse (line 142) | class ProjectCreationProgressResponse(BaseProgressResponse): function create_progress_response (line 158) | def create_progress_response( FILE: python/src/server/services/client_manager.py function get_supabase_client (line 15) | def get_supabase_client() -> Client: FILE: python/src/server/services/crawler_manager.py class CrawlerManager (line 22) | class CrawlerManager: method __new__ (line 29) | def __new__(cls): method get_crawler (line 34) | async def get_crawler(self) -> AsyncWebCrawler: method initialize (line 40) | async def initialize(self): method cleanup (line 135) | async def cleanup(self): function get_crawler (line 152) | async def get_crawler() -> AsyncWebCrawler | None: function initialize_crawler (line 168) | async def initialize_crawler(): function cleanup_crawler (line 173) | async def cleanup_crawler(): FILE: python/src/server/services/crawling/code_extraction_service.py class CodeExtractionService (line 20) | class CodeExtractionService: method __init__ (line 59) | def __init__(self, supabase_client): method _get_setting (line 69) | async def _get_setting(self, key: str, default: Any) -> Any: method _get_min_code_length (line 91) | async def _get_min_code_length(self) -> int: method _get_max_code_length (line 95) | async def _get_max_code_length(self) -> int: method _is_complete_block_detection_enabled (line 99) | async def _is_complete_block_detection_enabled(self) -> bool: method _is_language_patterns_enabled (line 103) | async def _is_language_patterns_enabled(self) -> bool: method _is_prose_filtering_enabled (line 107) | async def _is_prose_filtering_enabled(self) -> bool: method _get_max_prose_ratio (line 111) | async def _get_max_prose_ratio(self) -> float: method _get_min_code_indicators (line 115) | async def _get_min_code_indicators(self) -> int: method _is_diagram_filtering_enabled (line 119) | async def _is_diagram_filtering_enabled(self) -> bool: method _is_contextual_length_enabled (line 123) | async def _is_contextual_length_enabled(self) -> bool: method _get_context_window_size (line 127) | async def _get_context_window_size(self) -> int: method _is_code_summaries_enabled (line 131) | async def _is_code_summaries_enabled(self) -> bool: method extract_and_store_code_examples (line 135) | async def extract_and_store_code_examples( method _extract_code_blocks_from_documents (line 258) | async def _extract_code_blocks_from_documents( method _extract_html_code_blocks (line 426) | async def _extract_html_code_blocks(self, content: str) -> list[dict[s... method _extract_text_file_code_blocks (line 759) | async def _extract_text_file_code_blocks( method _extract_pdf_code_blocks (line 971) | async def _extract_pdf_code_blocks( method _is_pdf_section_code_like (line 1035) | def _is_pdf_section_code_like(self, section: str) -> bool: method _detect_language_from_content (line 1100) | def _detect_language_from_content(self, code: str) -> str: method _find_complete_code_block (line 1152) | async def _find_complete_code_block( method _calculate_min_length (line 1224) | async def _calculate_min_length(self, language: str, context: str) -> ... method _decode_html_entities (line 1276) | def _decode_html_entities(self, text: str) -> str: method _clean_code_content (line 1330) | def _clean_code_content(self, code: str, language: str = "") -> str: method _validate_code_quality (line 1405) | async def _validate_code_quality(self, code: str, language: str = "") ... method _generate_code_summaries (line 1561) | async def _generate_code_summaries( method _prepare_code_examples_for_storage (line 1651) | def _prepare_code_examples_for_storage( method _store_code_examples (line 1706) | async def _store_code_examples( FILE: python/src/server/services/crawling/crawling_service.py function get_root_domain (line 43) | def get_root_domain(host: str) -> str: function _ensure_orchestration_lock (line 71) | def _ensure_orchestration_lock() -> asyncio.Lock: function get_active_orchestration (line 78) | async def get_active_orchestration(progress_id: str) -> Optional["Crawli... function register_orchestration (line 85) | async def register_orchestration(progress_id: str, orchestration: "Crawl... function unregister_orchestration (line 92) | async def unregister_orchestration(progress_id: str): class CrawlingService (line 99) | class CrawlingService: method __init__ (line 105) | def __init__(self, crawler=None, supabase_client=None, progress_id=None): method set_progress_id (line 143) | def set_progress_id(self, progress_id: str): method cancel (line 151) | def cancel(self): method is_cancelled (line 156) | def is_cancelled(self) -> bool: method _check_cancellation (line 160) | def _check_cancellation(self): method _create_crawl_progress_callback (line 165) | async def _create_crawl_progress_callback( method _handle_progress_update (line 203) | async def _handle_progress_update(self, task_id: str, update: dict[str... method crawl_single_page (line 221) | async def crawl_single_page(self, url: str, retry_count: int = 3) -> d... method crawl_markdown_file (line 230) | async def crawl_markdown_file( method parse_sitemap (line 243) | def parse_sitemap(self, sitemap_url: str) -> list[str]: method crawl_batch_with_progress (line 247) | async def crawl_batch_with_progress( method crawl_recursive_with_progress (line 265) | async def crawl_recursive_with_progress( method orchestrate_crawl (line 284) | async def orchestrate_crawl(self, request: dict[str, Any]) -> dict[str... method _async_orchestrate_crawl (line 321) | async def _async_orchestrate_crawl(self, request: dict[str, Any], task... method _is_same_domain (line 753) | def _is_same_domain(self, url: str, base_domain: str) -> bool: method _is_same_domain_or_subdomain (line 774) | def _is_same_domain_or_subdomain(self, url: str, base_domain: str) -> ... method _is_self_link (line 813) | def _is_self_link(self, link: str, base_url: str) -> bool: method _crawl_by_url_type (line 847) | async def _crawl_by_url_type(self, url: str, request: dict[str, Any]) ... FILE: python/src/server/services/crawling/discovery_service.py class SitemapHTMLParser (line 20) | class SitemapHTMLParser(HTMLParser): method __init__ (line 23) | def __init__(self): method handle_starttag (line 27) | def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]): class DiscoveryService (line 50) | class DiscoveryService: method discover_files (line 78) | def discover_files(self, base_url: str) -> str | None: method _extract_directory (line 116) | def _extract_directory(self, base_url: str) -> str: method _try_locations (line 140) | def _try_locations(self, base_url: str, base_dir: str, filename: str) ... method _get_subdirs_for_file (line 179) | def _get_subdirs_for_file(self, base_dir: str, filename: str) -> list[... method _is_safe_ip (line 208) | def _is_safe_ip(self, ip_str: str) -> bool: method _resolve_and_validate_hostname (line 263) | def _resolve_and_validate_hostname(self, hostname: str) -> bool: method _check_url_exists (line 293) | def _check_url_exists(self, url: str) -> bool: method _parse_robots_txt (line 382) | def _parse_robots_txt(self, base_url: str) -> list[str]: method _parse_html_meta_tags (line 447) | def _parse_html_meta_tags(self, base_url: str) -> list[str]: method _read_response_with_limit (line 511) | def _read_response_with_limit(self, response: requests.Response, url: ... FILE: python/src/server/services/crawling/document_storage_operations.py class DocumentStorageOperations (line 21) | class DocumentStorageOperations: method __init__ (line 26) | def __init__(self, supabase_client): method process_and_store_documents (line 37) | async def process_and_store_documents( method _create_source_records (line 291) | async def _create_source_records( method extract_and_store_code_examples (line 438) | async def extract_and_store_code_examples( FILE: python/src/server/services/crawling/helpers/llms_full_parser.py class LLMsFullSection (line 13) | class LLMsFullSection(BaseModel): function create_section_slug (line 23) | def create_section_slug(h1_heading: str) -> str: function create_section_url (line 59) | def create_section_url(base_url: str, h1_heading: str, section_order: in... function parse_llms_full_sections (line 75) | def parse_llms_full_sections(content: str, base_url: str) -> list[LLMsFu... FILE: python/src/server/services/crawling/helpers/site_config.py class SiteConfig (line 14) | class SiteConfig: method is_documentation_site (line 51) | def is_documentation_site(url: str) -> bool: method get_markdown_generator (line 78) | def get_markdown_generator(): method get_link_pruning_markdown_generator (line 102) | def get_link_pruning_markdown_generator(): FILE: python/src/server/services/crawling/helpers/url_handler.py class URLHandler (line 17) | class URLHandler: method is_sitemap (line 21) | def is_sitemap(url: str) -> bool: method is_markdown (line 41) | def is_markdown(url: str) -> bool: method is_txt (line 61) | def is_txt(url: str) -> bool: method is_binary_file (line 80) | def is_binary_file(url: str) -> bool: method transform_github_url (line 180) | def transform_github_url(url: str) -> str: method generate_unique_source_id (line 212) | def generate_unique_source_id(url: str) -> str: method extract_markdown_links (line 282) | def extract_markdown_links(content: str, base_url: str | None = None) ... method extract_markdown_links_with_text (line 298) | def extract_markdown_links_with_text(content: str, base_url: Optional[... method is_link_collection_file (line 390) | def is_link_collection_file(url: str, content: str | None = None) -> b... method extract_display_name (line 460) | def extract_display_name(url: str) -> str: method is_robots_txt (line 609) | def is_robots_txt(url: str) -> bool: method is_llms_variant (line 630) | def is_llms_variant(url: str) -> bool: method is_well_known_file (line 665) | def is_well_known_file(url: str) -> bool: method get_base_url (line 687) | def get_base_url(url: str) -> str: FILE: python/src/server/services/crawling/page_storage_operations.py class PageStorageOperations (line 18) | class PageStorageOperations: method __init__ (line 26) | def __init__(self, supabase_client): method store_pages (line 35) | async def store_pages( method store_llms_full_sections (line 127) | async def store_llms_full_sections( method update_page_chunk_count (line 226) | async def update_page_chunk_count(self, page_id: str, chunk_count: int... FILE: python/src/server/services/crawling/progress_mapper.py class ProgressMapper (line 9) | class ProgressMapper: method __init__ (line 44) | def __init__(self): method map_progress (line 49) | def map_progress(self, stage: str, stage_progress: float) -> int: method get_stage_range (line 103) | def get_stage_range(self, stage: str) -> tuple: method calculate_stage_progress (line 107) | def calculate_stage_progress(self, current_value: int, max_value: int)... method map_batch_progress (line 123) | def map_batch_progress(self, stage: str, current_batch: int, total_bat... method map_with_substage (line 143) | def map_with_substage(self, stage: str, substage: str, stage_progress:... method reset (line 159) | def reset(self): method get_current_stage (line 164) | def get_current_stage(self) -> str: method get_current_progress (line 168) | def get_current_progress(self) -> int: FILE: python/src/server/services/crawling/strategies/batch.py class BatchCrawlStrategy (line 19) | class BatchCrawlStrategy: method __init__ (line 22) | def __init__(self, crawler, markdown_generator): method crawl_batch_with_progress (line 33) | async def crawl_batch_with_progress( FILE: python/src/server/services/crawling/strategies/recursive.py class RecursiveCrawlStrategy (line 21) | class RecursiveCrawlStrategy: method __init__ (line 24) | def __init__(self, crawler, markdown_generator): method crawl_recursive_with_progress (line 36) | async def crawl_recursive_with_progress( FILE: python/src/server/services/crawling/strategies/single_page.py class SinglePageCrawlStrategy (line 18) | class SinglePageCrawlStrategy: method __init__ (line 21) | def __init__(self, crawler, markdown_generator): method _get_wait_selector_for_docs (line 32) | def _get_wait_selector_for_docs(self, url: str) -> str: method crawl_single_page (line 57) | async def crawl_single_page( method crawl_markdown_file (line 222) | async def crawl_markdown_file( FILE: python/src/server/services/crawling/strategies/sitemap.py class SitemapCrawlStrategy (line 17) | class SitemapCrawlStrategy: method parse_sitemap (line 20) | def parse_sitemap(self, sitemap_url: str, cancellation_check: Callable... FILE: python/src/server/services/credential_service.py class CredentialItem (line 28) | class CredentialItem: class CredentialService (line 41) | class CredentialService: method __init__ (line 44) | def __init__(self): method _get_supabase_client (line 52) | def _get_supabase_client(self) -> Client: method _get_encryption_key (line 84) | def _get_encryption_key(self) -> bytes: method _encrypt_value (line 99) | def _encrypt_value(self, value: str) -> str: method _decrypt_value (line 112) | def _decrypt_value(self, encrypted_value: str) -> str: method load_all_credentials (line 126) | async def load_all_credentials(self) -> dict[str, Any]: method get_credential (line 160) | async def get_credential(self, key: str, default: Any = None, decrypt:... method get_encrypted_credential_raw (line 179) | async def get_encrypted_credential_raw(self, key: str) -> str | None: method set_credential (line 190) | async def set_credential( method delete_credential (line 275) | async def delete_credential(self, key: str) -> bool: method get_credentials_by_category (line 323) | async def get_credentials_by_category(self, category: str) -> dict[str... method list_all_credentials (line 371) | async def list_all_credentials(self) -> list[CredentialItem]: method get_config_as_env_dict (line 405) | def get_config_as_env_dict(self) -> dict[str, str]: method get_active_provider (line 426) | async def get_active_provider(self, service_type: str = "llm") -> dict... method _get_provider_api_key (line 503) | async def _get_provider_api_key(self, provider: str) -> str | None: method _get_provider_base_url (line 519) | def _get_provider_base_url(self, provider: str, rag_settings: dict) ->... method set_active_provider (line 533) | async def set_active_provider(self, provider: str, service_type: str =... function get_credential (line 552) | async def get_credential(key: str, default: Any = None) -> Any: function set_credential (line 557) | async def set_credential( function initialize_credentials (line 564) | async def initialize_credentials() -> None: FILE: python/src/server/services/embeddings/contextual_embedding_service.py function generate_contextual_embedding (line 23) | async def generate_contextual_embedding( function process_chunk_with_context (line 103) | async def process_chunk_with_context( function _get_model_choice (line 122) | async def _get_model_choice(provider: str | None = None) -> str: function generate_contextual_embeddings_batch (line 166) | async def generate_contextual_embeddings_batch( FILE: python/src/server/services/embeddings/embedding_exceptions.py class EmbeddingError (line 11) | class EmbeddingError(Exception): method __init__ (line 14) | def __init__( method to_dict (line 35) | def to_dict(self) -> dict[str, Any]: class EmbeddingQuotaExhaustedError (line 46) | class EmbeddingQuotaExhaustedError(EmbeddingError): method __init__ (line 54) | def __init__(self, message: str, tokens_used: int | None = None, **kwa... class EmbeddingRateLimitError (line 61) | class EmbeddingRateLimitError(EmbeddingError): method __init__ (line 69) | def __init__(self, message: str, retry_count: int = 0, **kwargs): class EmbeddingAsyncContextError (line 75) | class EmbeddingAsyncContextError(EmbeddingError): class EmbeddingAPIError (line 86) | class EmbeddingAPIError(EmbeddingError): method __init__ (line 94) | def __init__(self, message: str, original_error: Exception | None = No... class EmbeddingAuthenticationError (line 102) | class EmbeddingAuthenticationError(EmbeddingError): method __init__ (line 110) | def __init__(self, message: str, api_key_prefix: str | None = None, **... class EmbeddingValidationError (line 118) | class EmbeddingValidationError(EmbeddingError): method __init__ (line 126) | def __init__(self, message: str, embedding_sample: list | None = None,... FILE: python/src/server/services/embeddings/embedding_service.py class EmbeddingBatchResult (line 31) | class EmbeddingBatchResult: method add_success (line 40) | def add_success(self, embedding: list[float], text: str): method add_failure (line 46) | def add_failure(self, text: str, error: Exception, batch_index: int | ... method has_failures (line 63) | def has_failures(self) -> bool: method total_requested (line 67) | def total_requested(self) -> int: class EmbeddingProviderAdapter (line 71) | class EmbeddingProviderAdapter(ABC): method create_embeddings (line 75) | async def create_embeddings( class OpenAICompatibleEmbeddingAdapter (line 84) | class OpenAICompatibleEmbeddingAdapter(EmbeddingProviderAdapter): method __init__ (line 87) | def __init__(self, client: Any): method create_embeddings (line 90) | async def create_embeddings( class GoogleEmbeddingAdapter (line 107) | class GoogleEmbeddingAdapter(EmbeddingProviderAdapter): method create_embeddings (line 110) | async def create_embeddings( method _fetch_single_embedding (line 147) | async def _fetch_single_embedding( method _normalize_embedding (line 203) | def _normalize_embedding(self, embedding: list[float]) -> list[float]: function _get_embedding_adapter (line 220) | def _get_embedding_adapter(provider: str, client: Any) -> EmbeddingProvi... function _maybe_await (line 227) | async def _maybe_await(value: Any) -> Any: function create_embedding (line 236) | async def create_embedding(text: str, provider: str | None = None) -> li... function create_embeddings_batch (line 296) | async def create_embeddings_batch( function get_openai_api_key (line 528) | async def get_openai_api_key() -> str | None: FILE: python/src/server/services/embeddings/multi_dimensional_embedding_service.py class MultiDimensionalEmbeddingService (line 25) | class MultiDimensionalEmbeddingService: method __init__ (line 28) | def __init__(self): method get_supported_dimensions (line 31) | def get_supported_dimensions(self) -> dict[int, list[str]]: method get_dimension_for_model (line 35) | def get_dimension_for_model(self, model_name: str) -> int: method get_embedding_column_name (line 63) | def get_embedding_column_name(self, dimension: int) -> str: method is_dimension_supported (line 71) | def is_dimension_supported(self, dimension: int) -> bool: FILE: python/src/server/services/embeddings/provider_error_adapters.py class ProviderErrorAdapter (line 12) | class ProviderErrorAdapter(ABC): method get_provider_name (line 16) | def get_provider_name(self) -> str: method sanitize_error_message (line 20) | def sanitize_error_message(self, message: str) -> str: class OpenAIErrorAdapter (line 24) | class OpenAIErrorAdapter(ProviderErrorAdapter): method get_provider_name (line 25) | def get_provider_name(self) -> str: method sanitize_error_message (line 28) | def sanitize_error_message(self, message: str) -> str: class GoogleAIErrorAdapter (line 55) | class GoogleAIErrorAdapter(ProviderErrorAdapter): method get_provider_name (line 56) | def get_provider_name(self) -> str: method sanitize_error_message (line 59) | def sanitize_error_message(self, message: str) -> str: class AnthropicErrorAdapter (line 86) | class AnthropicErrorAdapter(ProviderErrorAdapter): method get_provider_name (line 87) | def get_provider_name(self) -> str: method sanitize_error_message (line 90) | def sanitize_error_message(self, message: str) -> str: class OpenRouterErrorAdapter (line 114) | class OpenRouterErrorAdapter(ProviderErrorAdapter): method get_provider_name (line 115) | def get_provider_name(self) -> str: method sanitize_error_message (line 118) | def sanitize_error_message(self, message: str) -> str: class ProviderErrorFactory (line 142) | class ProviderErrorFactory: method get_adapter (line 153) | def get_adapter(cls, provider: str) -> ProviderErrorAdapter: method sanitize_provider_error (line 157) | def sanitize_provider_error(cls, message: str, provider: str) -> str: method detect_provider_from_error (line 162) | def detect_provider_from_error(cls, error_str: str) -> str: FILE: python/src/server/services/knowledge/database_metrics_service.py class DatabaseMetricsService (line 13) | class DatabaseMetricsService: method __init__ (line 18) | def __init__(self, supabase_client): method get_metrics (line 27) | async def get_metrics(self) -> dict[str, Any]: method get_storage_statistics (line 83) | async def get_storage_statistics(self) -> dict[str, Any]: FILE: python/src/server/services/knowledge/knowledge_item_service.py class KnowledgeItemService (line 12) | class KnowledgeItemService: method __init__ (line 17) | def __init__(self, supabase_client): method list_items (line 26) | async def list_items( method get_item (line 202) | async def get_item(self, source_id: str) -> dict[str, Any] | None: method update_item (line 237) | async def update_item( method get_available_sources (line 313) | async def get_available_sources(self) -> dict[str, Any]: method _get_all_sources (line 345) | async def _get_all_sources(self) -> list[dict[str, Any]]: method _transform_source_to_item (line 350) | async def _transform_source_to_item(self, source: dict[str, Any]) -> d... method _get_first_page_url (line 402) | async def _get_first_page_url(self, source_id: str) -> str: method _get_code_examples (line 421) | async def _get_code_examples(self, source_id: str) -> list[dict[str, A... method _determine_source_type (line 436) | def _determine_source_type(self, metadata: dict[str, Any], url: str) -... method _filter_by_search (line 445) | def _filter_by_search(self, items: list[dict[str, Any]], search: str) ... method _filter_by_knowledge_type (line 456) | def _filter_by_knowledge_type( method _get_chunks_count (line 462) | async def _get_chunks_count(self, source_id: str) -> int: FILE: python/src/server/services/knowledge/knowledge_summary_service.py class KnowledgeSummaryService (line 13) | class KnowledgeSummaryService: method __init__ (line 19) | def __init__(self, supabase_client): method get_summaries (line 28) | async def get_summaries( method _get_document_counts_batch (line 167) | async def _get_document_counts_batch(self, source_ids: list[str]) -> d... method _get_code_example_counts_batch (line 198) | async def _get_code_example_counts_batch(self, source_ids: list[str]) ... method _get_first_urls_batch (line 227) | async def _get_first_urls_batch(self, source_ids: list[str]) -> dict[s... FILE: python/src/server/services/llm_provider_service.py function _is_valid_provider (line 22) | def _is_valid_provider(provider: str) -> bool: function _sanitize_for_log (line 29) | def _sanitize_for_log(text: str) -> str: function _calculate_cache_checksum (line 45) | def _calculate_cache_checksum(value: Any) -> str: function _log_cache_access (line 59) | def _log_cache_access(key: str, action: str, hit: bool = None, security_... function _get_cached_settings (line 81) | def _get_cached_settings(key: str) -> Any | None: function _set_cached_settings (line 126) | def _set_cached_settings(key: str, value: Any) -> None: function clear_provider_cache (line 150) | def clear_provider_cache() -> None: function invalidate_provider_cache (line 160) | def invalidate_provider_cache(provider: str = None) -> None: function get_cache_stats (line 196) | def get_cache_stats() -> dict[str, Any]: function get_cache_security_report (line 273) | def get_cache_security_report() -> dict[str, Any]: function get_llm_client (line 313) | async def get_llm_client( function _get_optimal_ollama_instance (line 552) | async def _get_optimal_ollama_instance(instance_type: str | None = None, function get_embedding_model (line 600) | async def get_embedding_model(provider: str | None = None) -> str: function is_openai_embedding_model (line 678) | def is_openai_embedding_model(model: str) -> bool: function is_google_embedding_model (line 706) | def is_google_embedding_model(model: str) -> bool: function is_valid_embedding_model_for_provider (line 723) | def is_valid_embedding_model_for_provider(model: str, provider: str) -> ... function get_supported_embedding_models (line 756) | def get_supported_embedding_models(provider: str) -> list[str]: function is_reasoning_model (line 799) | def is_reasoning_model(model_name: str) -> bool: function _extract_reasoning_strings (line 839) | def _extract_reasoning_strings(value: Any) -> list[str]: function _get_message_attr (line 875) | def _get_message_attr(message: Any, attribute: str) -> Any: function extract_message_text (line 885) | def extract_message_text(choice: Any) -> tuple[str, str, bool]: function _is_reasoning_text (line 925) | def _is_reasoning_text(text: str) -> bool: function extract_json_from_reasoning (line 942) | def extract_json_from_reasoning(reasoning_text: str, context_code: str =... function synthesize_json_from_reasoning (line 979) | def synthesize_json_from_reasoning(reasoning_text: str, context_code: st... function prepare_chat_completion_params (line 1095) | def prepare_chat_completion_params(model: str, params: dict) -> dict: function get_embedding_model_with_routing (line 1135) | async def get_embedding_model_with_routing(provider: str | None = None, ... function validate_provider_instance (line 1171) | async def validate_provider_instance(provider: str, instance_url: str | ... function requires_max_completion_tokens (line 1248) | def requires_max_completion_tokens(model_name: str) -> bool: FILE: python/src/server/services/mcp_service_client.py class MCPServiceClient (line 18) | class MCPServiceClient: method __init__ (line 24) | def __init__(self): method _get_headers (line 35) | def _get_headers(self, request_id: str | None = None) -> dict[str, str]: method crawl_url (line 44) | async def crawl_url(self, url: str, options: dict[str, Any] | None = N... method search (line 97) | async def search( method store_documents (line 149) | async def store_documents( method generate_embeddings (line 173) | async def generate_embeddings( method health_check (line 192) | async def health_check(self) -> dict[str, Any]: function get_mcp_service_client (line 228) | def get_mcp_service_client() -> MCPServiceClient: FILE: python/src/server/services/mcp_session_manager.py class SimplifiedSessionManager (line 17) | class SimplifiedSessionManager: method __init__ (line 20) | def __init__(self, timeout: int = 3600): method create_session (line 30) | def create_session(self) -> str: method validate_session (line 37) | def validate_session(self, session_id: str) -> bool: method cleanup_expired_sessions (line 53) | def cleanup_expired_sessions(self) -> int: method get_active_session_count (line 68) | def get_active_session_count(self) -> int: function get_session_manager (line 79) | def get_session_manager() -> SimplifiedSessionManager: FILE: python/src/server/services/migration_service.py class MigrationRecord (line 16) | class MigrationRecord: method __init__ (line 19) | def __init__(self, data: dict[str, Any]): class PendingMigration (line 27) | class PendingMigration: method __init__ (line 30) | def __init__(self, version: str, name: str, sql_content: str, file_pat... method _calculate_checksum (line 37) | def _calculate_checksum(self, content: str) -> str: class MigrationService (line 42) | class MigrationService: method __init__ (line 45) | def __init__(self): method _get_supabase_client (line 53) | def _get_supabase_client(self) -> Client: method check_migrations_table_exists (line 59) | async def check_migrations_table_exists(self) -> bool: method get_applied_migrations (line 99) | async def get_applied_migrations(self) -> list[MigrationRecord]: method scan_migration_directory (line 121) | async def scan_migration_directory(self) -> list[PendingMigration]: method get_pending_migrations (line 164) | async def get_pending_migrations(self) -> list[PendingMigration]: method get_migration_status (line 191) | async def get_migration_status(self) -> dict[str, Any]: FILE: python/src/server/services/ollama/embedding_router.py class RoutingDecision (line 20) | class RoutingDecision: class EmbeddingRoute (line 33) | class EmbeddingRoute: class EmbeddingRouter (line 43) | class EmbeddingRouter: method __init__ (line 71) | def __init__(self): method route_embedding (line 75) | async def route_embedding(self, model_name: str, instance_url: str, method _detect_model_dimensions (line 132) | async def _detect_model_dimensions(self, model_name: str, instance_url... method _route_by_dimensions (line 169) | async def _route_by_dimensions(self, model_name: str, instance_url: str, method _route_by_model_mapping (line 206) | async def _route_by_model_mapping(self, model_name: str, instance_url:... method _get_target_column (line 233) | def _get_target_column(self, dimensions: int) -> str: method get_optimal_index_type (line 261) | def get_optimal_index_type(self, dimensions: int) -> str: method get_available_embedding_routes (line 273) | async def get_available_embedding_routes(self, instance_urls: list[str... method _calculate_performance_score (line 323) | def _calculate_performance_score(self, dimensions: int) -> float: method validate_routing_decision (line 363) | async def validate_routing_decision(self, decision: RoutingDecision) -... method clear_routing_cache (line 394) | def clear_routing_cache(self) -> None: method get_routing_statistics (line 399) | def get_routing_statistics(self) -> dict[str, Any]: FILE: python/src/server/services/ollama/model_discovery_service.py class OllamaModel (line 22) | class OllamaModel: class ModelCapabilities (line 61) | class ModelCapabilities: class InstanceHealthStatus (line 75) | class InstanceHealthStatus: class ModelDiscoveryService (line 85) | class ModelDiscoveryService: method __init__ (line 88) | def __init__(self): method _get_cached_models (line 95) | def _get_cached_models(self, instance_url: str) -> list[OllamaModel] |... method _cache_models (line 112) | def _cache_models(self, instance_url: str, models: list[OllamaModel]) ... method discover_models (line 122) | async def discover_models(self, instance_url: str, fetch_details: bool... method _enrich_model_capabilities (line 239) | async def _enrich_model_capabilities(self, models: list[OllamaModel], ... method _detect_model_capabilities_optimized (line 429) | async def _detect_model_capabilities_optimized(self, model_name: str, ... method _detect_model_capabilities (line 488) | async def _detect_model_capabilities(self, model_name: str, instance_u... method _test_embedding_capability_fast (line 550) | async def _test_embedding_capability_fast(self, model_name: str, insta... method _test_chat_capability_fast (line 574) | async def _test_chat_capability_fast(self, model_name: str, instance_u... method _test_structured_output_capability_fast (line 595) | async def _test_structured_output_capability_fast(self, model_name: st... method _test_embedding_capability (line 623) | async def _test_embedding_capability(self, model_name: str, instance_u... method _test_chat_capability (line 654) | async def _test_chat_capability(self, model_name: str, instance_url: s... method _get_model_details (line 682) | async def _get_model_details(self, model_name: str, instance_url: str)... method _test_function_calling_capability (line 817) | async def _test_function_calling_capability(self, model_name: str, ins... method _test_structured_output_capability (line 859) | async def _test_structured_output_capability(self, model_name: str, in... method validate_model_capabilities (line 902) | async def validate_model_capabilities(self, model_name: str, instance_... method get_model_info (line 933) | async def get_model_info(self, model_name: str, instance_url: str) -> ... method check_instance_health (line 958) | async def check_instance_health(self, instance_url: str) -> InstanceHe... method discover_models_from_multiple_instances (line 1014) | async def discover_models_from_multiple_instances(self, instance_urls:... FILE: python/src/server/services/openrouter_discovery_service.py class OpenRouterEmbeddingModel (line 10) | class OpenRouterEmbeddingModel(BaseModel): method validate_model_id_has_prefix (line 23) | def validate_model_id_has_prefix(cls, v: str) -> str: class OpenRouterModelListResponse (line 30) | class OpenRouterModelListResponse(BaseModel): class OpenRouterDiscoveryService (line 37) | class OpenRouterDiscoveryService: method discover_embedding_models (line 40) | async def discover_embedding_models(self) -> list[OpenRouterEmbeddingM... FILE: python/src/server/services/projects/document_service.py class DocumentService (line 21) | class DocumentService: method __init__ (line 24) | def __init__(self, supabase_client=None): method add_document (line 28) | def add_document( method list_documents (line 99) | def list_documents(self, project_id: str, include_content: bool = Fals... method get_document (line 157) | def get_document(self, project_id: str, doc_id: str) -> tuple[bool, di... method update_document (line 195) | def update_document( method delete_document (line 297) | def delete_document(self, project_id: str, doc_id: str) -> tuple[bool,... method _build_change_summary (line 343) | def _build_change_summary(self, doc_id: str, update_fields: dict[str, ... FILE: python/src/server/services/projects/project_creation_service.py class ProjectCreationService (line 19) | class ProjectCreationService: method __init__ (line 22) | def __init__(self, supabase_client=None): method create_project_with_ai (line 26) | async def create_project_with_ai( method _generate_ai_documentation (line 131) | async def _generate_ai_documentation( FILE: python/src/server/services/projects/project_service.py class ProjectService (line 20) | class ProjectService: method __init__ (line 23) | def __init__(self, supabase_client=None): method create_project (line 27) | def create_project(self, title: str, github_repo: str = None) -> tuple... method list_projects (line 76) | def list_projects(self, include_content: bool = True) -> tuple[bool, d... method get_project (line 150) | def get_project(self, project_id: str) -> tuple[bool, dict[str, Any]]: method delete_project (line 227) | def delete_project(self, project_id: str) -> tuple[bool, dict[str, Any]]: method get_project_features (line 274) | def get_project_features(self, project_id: str) -> tuple[bool, dict[st... method update_project (line 317) | def update_project( FILE: python/src/server/services/projects/source_linking_service.py class SourceLinkingService (line 18) | class SourceLinkingService: method __init__ (line 21) | def __init__(self, supabase_client=None): method get_project_sources (line 25) | def get_project_sources(self, project_id: str) -> tuple[bool, dict[str... method update_project_sources (line 61) | def update_project_sources( method format_project_with_sources (line 130) | def format_project_with_sources(self, project: dict[str, Any]) -> dict... method format_projects_with_sources (line 167) | def format_projects_with_sources(self, projects: list[dict[str, Any]])... FILE: python/src/server/services/projects/task_service.py class TaskService (line 21) | class TaskService: method __init__ (line 26) | def __init__(self, supabase_client=None): method validate_status (line 30) | def validate_status(self, status: str) -> tuple[bool, str]: method validate_assignee (line 39) | def validate_assignee(self, assignee: str) -> tuple[bool, str]: method validate_priority (line 45) | def validate_priority(self, priority: str) -> tuple[bool, str]: method create_task (line 55) | async def create_task( method list_tasks (line 159) | def list_tasks( method get_task (line 339) | def get_task(self, task_id: str) -> tuple[bool, dict[str, Any]]: method update_task (line 361) | async def update_task( method archive_task (line 425) | async def archive_task( method get_all_project_task_counts (line 472) | def get_all_project_task_counts(self) -> tuple[bool, dict[str, dict[st... FILE: python/src/server/services/projects/versioning_service.py class VersioningService (line 19) | class VersioningService: method __init__ (line 22) | def __init__(self, supabase_client=None): method create_version (line 26) | def create_version( method list_versions (line 91) | def list_versions(self, project_id: str, field_name: str = None) -> tu... method get_version_content (line 126) | def get_version_content( method restore_version (line 161) | def restore_version( FILE: python/src/server/services/prompt_service.py class PromptService (line 18) | class PromptService: method __new__ (line 25) | def __new__(cls): method load_prompts (line 31) | async def load_prompts(self) -> None: method get_prompt (line 56) | def get_prompt(self, prompt_name: str, default: str | None = None) -> ... method reload_prompts (line 77) | async def reload_prompts(self) -> None: method get_all_prompt_names (line 85) | def get_all_prompt_names(self) -> list[str]: method get_last_loaded_time (line 89) | def get_last_loaded_time(self) -> datetime | None: FILE: python/src/server/services/provider_discovery_service.py class ModelSpec (line 51) | class ModelSpec: method __post_init__ (line 65) | def __post_init__(self): class ProviderStatus (line 70) | class ProviderStatus: class ProviderDiscoveryService (line 80) | class ProviderDiscoveryService: method __init__ (line 83) | def __init__(self): method _get_session (line 86) | async def _get_session(self) -> aiohttp.ClientSession: method close (line 93) | async def close(self): method _get_cached_result (line 99) | def _get_cached_result(self, cache_key: str) -> Any | None: method _cache_result (line 109) | def _cache_result(self, cache_key: str, result: Any) -> None: method _test_tool_support (line 113) | async def _test_tool_support(self, model_name: str, api_url: str) -> b... method discover_openai_models (line 177) | async def discover_openai_models(self, api_key: str) -> list[ModelSpec]: method discover_google_models (line 220) | async def discover_google_models(self, api_key: str) -> list[ModelSpec]: method discover_ollama_models (line 255) | async def discover_ollama_models(self, base_urls: list[str]) -> list[M... method discover_anthropic_models (line 332) | async def discover_anthropic_models(self, api_key: str) -> list[ModelS... method discover_grok_models (line 362) | async def discover_grok_models(self, api_key: str) -> list[ModelSpec]: method check_provider_health (line 392) | async def check_provider_health(self, provider: str, config: dict[str,... method get_all_available_models (line 519) | async def get_all_available_models(self) -> dict[str, list[ModelSpec]]: FILE: python/src/server/services/search/agentic_rag_strategy.py class AgenticRAGStrategy (line 25) | class AgenticRAGStrategy: method __init__ (line 28) | def __init__(self, supabase_client: Client, base_strategy): method is_enabled (line 39) | def is_enabled(self) -> bool: method search_code_examples (line 68) | async def search_code_examples( method perform_agentic_search (line 124) | async def perform_agentic_search( method _extract_code_context (line 222) | def _extract_code_context(self, result: dict[str, Any]) -> dict[str, A... method analyze_code_query (line 260) | def analyze_code_query(self, query: str) -> dict[str, Any]: function create_agentic_rag_strategy (line 368) | def create_agentic_rag_strategy(supabase_client: Client) -> AgenticRAGSt... function search_code_examples_agentic (line 373) | async def search_code_examples_agentic( function analyze_query_for_code_search (line 397) | def analyze_query_for_code_search(query: str) -> dict[str, Any]: FILE: python/src/server/services/search/base_search_strategy.py class BaseSearchStrategy (line 20) | class BaseSearchStrategy: method __init__ (line 23) | def __init__(self, supabase_client: Client): method vector_search (line 27) | async def vector_search( FILE: python/src/server/services/search/hybrid_search_strategy.py class HybridSearchStrategy (line 24) | class HybridSearchStrategy: method __init__ (line 27) | def __init__(self, supabase_client: Client, base_strategy): method search_documents_hybrid (line 31) | async def search_documents_hybrid( method search_code_examples_hybrid (line 108) | async def search_code_examples_hybrid( FILE: python/src/server/services/search/keyword_extractor.py class KeywordExtractor (line 242) | class KeywordExtractor: method __init__ (line 245) | def __init__(self): method extract_keywords (line 249) | def extract_keywords( method _prioritize_keywords (line 320) | def _prioritize_keywords(self, keywords: list[str], original_query: st... method build_search_terms (line 364) | def build_search_terms(self, keywords: list[str]) -> list[str]: function extract_keywords (line 424) | def extract_keywords(query: str, min_length: int = 2, max_keywords: int ... function build_search_terms (line 439) | def build_search_terms(keywords: list[str]) -> list[str]: FILE: python/src/server/services/search/rag_service.py class RAGService (line 31) | class RAGService: method __init__ (line 39) | def __init__(self, supabase_client=None): method get_setting (line 61) | def get_setting(self, key: str, default: str = "false") -> str: method get_bool_setting (line 82) | def get_bool_setting(self, key: str, default: bool = False) -> bool: method search_documents (line 87) | async def search_documents( method search_code_examples (line 148) | async def search_code_examples( method _group_chunks_by_pages (line 175) | async def _group_chunks_by_pages( method perform_rag_query (line 244) | async def perform_rag_query( method search_code_examples_service (line 380) | async def search_code_examples_service( FILE: python/src/server/services/search/reranking_strategy.py class RerankingStrategy (line 30) | class RerankingStrategy: method __init__ (line 33) | def __init__( method from_model (line 47) | def from_model(cls, model: Any, model_name: str = "custom_model") -> "... method _load_model (line 62) | def _load_model(self) -> CrossEncoder: method is_available (line 75) | def is_available(self) -> bool: method build_query_document_pairs (line 79) | def build_query_document_pairs( method apply_rerank_scores (line 107) | def apply_rerank_scores( method rerank_results (line 139) | async def rerank_results( method get_model_info (line 196) | def get_model_info(self) -> dict[str, Any]: class RerankingConfig (line 206) | class RerankingConfig: method from_credential_service (line 210) | def from_credential_service(credential_service) -> dict[str, Any]: method from_env (line 227) | def from_env() -> dict[str, Any]: FILE: python/src/server/services/source_management_service.py function extract_source_summary (line 19) | async def extract_source_summary( function generate_source_title_and_metadata (line 100) | async def generate_source_title_and_metadata( function update_source_info (line 214) | async def update_source_info( class SourceManagementService (line 362) | class SourceManagementService: method __init__ (line 365) | def __init__(self, supabase_client=None): method get_available_sources (line 369) | def get_available_sources(self) -> tuple[bool, dict[str, Any]]: method delete_source (line 397) | def delete_source(self, source_id: str) -> tuple[bool, dict[str, Any]]: method update_source_metadata (line 440) | def update_source_metadata( method create_source_info (line 511) | async def create_source_info( method get_source_details (line 565) | def get_source_details(self, source_id: str) -> tuple[bool, dict[str, ... method list_sources_by_type (line 617) | def list_sources_by_type(self, knowledge_type: str = None) -> tuple[bo... FILE: python/src/server/services/storage/base_storage_service.py class BaseStorageService (line 22) | class BaseStorageService(ABC): method __init__ (line 25) | def __init__(self, supabase_client=None): method smart_chunk_text (line 39) | def smart_chunk_text(self, text: str, chunk_size: int = 5000) -> list[... method smart_chunk_text_async (line 122) | async def smart_chunk_text_async( method extract_metadata (line 166) | def extract_metadata( method extract_source_id (line 199) | def extract_source_id(self, url: str) -> str: method batch_process_with_progress (line 216) | async def batch_process_with_progress( method store_documents (line 258) | async def store_documents(self, documents: list[dict[str, Any]], **kwa... method process_document (line 272) | async def process_document(self, document: dict[str, Any], **kwargs) -... FILE: python/src/server/services/storage/code_storage_service.py function _extract_json_payload (line 33) | def _extract_json_payload(raw_response: str, context_code: str = "", lan... function _is_reasoning_text_response (line 78) | def _is_reasoning_text_response(text: str) -> bool: function _get_model_choice (line 96) | async def _get_model_choice() -> str: function _get_max_workers (line 125) | def _get_max_workers() -> int: function _normalize_code_for_comparison (line 130) | def _normalize_code_for_comparison(code: str) -> str: function _calculate_code_similarity (line 163) | def _calculate_code_similarity(code1: str, code2: str) -> float: function _select_best_code_variant (line 184) | def _select_best_code_variant(similar_blocks: list[dict[str, Any]]) -> d... function extract_code_blocks (line 243) | def extract_code_blocks(markdown_content: str, min_length: int = None) -... function generate_code_example_summary (line 576) | def generate_code_example_summary( function _generate_code_example_summary_async (line 598) | async def _generate_code_example_summary_async( function _generate_summary_with_client (line 683) | async def _generate_summary_with_client( function generate_code_summaries_batch (line 1016) | async def generate_code_summaries_batch( function add_code_examples_to_supabase (line 1131) | async def add_code_examples_to_supabase( FILE: python/src/server/services/storage/document_storage_service.py function add_documents_to_supabase (line 16) | async def add_documents_to_supabase( FILE: python/src/server/services/storage/storage_services.py class DocumentStorageService (line 17) | class DocumentStorageService(BaseStorageService): method upload_document (line 20) | async def upload_document( method store_documents (line 235) | async def store_documents(self, documents: list[dict[str, Any]], **kwa... method process_document (line 266) | async def process_document(self, document: dict[str, Any], **kwargs) -... method store_code_examples (line 297) | def store_code_examples( FILE: python/src/server/services/threading_service.py class ProcessingMode (line 32) | class ProcessingMode(str, Enum): class RateLimitConfig (line 41) | class RateLimitConfig: class SystemMetrics (line 52) | class SystemMetrics: class ThreadingConfig (line 63) | class ThreadingConfig: class RateLimiter (line 75) | class RateLimiter: method __init__ (line 78) | def __init__(self, config: RateLimitConfig): method acquire (line 85) | async def acquire(self, estimated_tokens: int = 8000, progress_callbac... method _can_make_request (line 143) | def _can_make_request(self, estimated_tokens: int) -> bool: method _clean_old_entries (line 156) | def _clean_old_entries(self, current_time: float): method _calculate_wait_time (line 166) | def _calculate_wait_time(self, estimated_tokens: int) -> float: method _get_current_usage (line 179) | def _get_current_usage(self) -> dict[str, int]: class MemoryAdaptiveDispatcher (line 190) | class MemoryAdaptiveDispatcher: method __init__ (line 193) | def __init__(self, config: ThreadingConfig): method get_system_metrics (line 198) | def get_system_metrics(self) -> SystemMetrics: method calculate_optimal_workers (line 211) | def calculate_optimal_workers(self, mode: ProcessingMode = ProcessingM... method process_with_adaptive_concurrency (line 257) | async def process_with_adaptive_concurrency( class ThreadingService (line 406) | class ThreadingService: method __init__ (line 409) | def __init__( method start (line 429) | async def start(self): method stop (line 438) | async def stop(self): method rate_limited_operation (line 459) | async def rate_limited_operation(self, estimated_tokens: int = 8000, p... method run_cpu_intensive (line 481) | async def run_cpu_intensive(self, func: Callable, *args, **kwargs) -> ... method run_io_bound (line 486) | async def run_io_bound(self, func: Callable, *args, **kwargs) -> Any: method batch_process (line 491) | async def batch_process( method get_system_metrics (line 509) | def get_system_metrics(self) -> SystemMetrics: method _health_check_loop (line 513) | async def _health_check_loop(self): function get_threading_service (line 565) | def get_threading_service() -> ThreadingService: function start_threading_service (line 573) | async def start_threading_service() -> ThreadingService: function stop_threading_service (line 580) | async def stop_threading_service(): FILE: python/src/server/services/version_service.py class VersionService (line 15) | class VersionService: method __init__ (line 18) | def __init__(self): method _is_cache_valid (line 23) | def _is_cache_valid(self) -> bool: method get_latest_release (line 31) | async def get_latest_release(self) -> dict[str, Any] | None: method check_for_updates (line 89) | async def check_for_updates(self) -> dict[str, Any]: method clear_cache (line 155) | def clear_cache(self): FILE: python/src/server/utils/__init__.py function initialize_threading_service (line 54) | async def initialize_threading_service( function get_utils_threading_service (line 68) | def get_utils_threading_service(): FILE: python/src/server/utils/document_processing.py function _preserve_code_blocks_across_pages (line 39) | def _preserve_code_blocks_across_pages(text: str) -> str: function _clean_html_to_text (line 78) | def _clean_html_to_text(html_content: str) -> str: function extract_text_from_document (line 158) | def extract_text_from_document(file_content: bytes, filename: str, conte... function extract_text_from_pdf (line 224) | def extract_text_from_pdf(file_content: bytes) -> str: function extract_text_from_docx (line 307) | def extract_text_from_docx(file_content: bytes) -> str: FILE: python/src/server/utils/etag_utils.py function generate_etag (line 8) | def generate_etag(data: Any) -> str: function check_etag (line 27) | def check_etag(request_etag: str | None, current_etag: str) -> bool: FILE: python/src/server/utils/progress/progress_tracker.py class ProgressTracker (line 14) | class ProgressTracker: method __init__ (line 23) | def __init__(self, progress_id: str, operation_type: str = "crawl"): method get_progress (line 45) | def get_progress(cls, progress_id: str) -> dict[str, Any] | None: method clear_progress (line 50) | def clear_progress(cls, progress_id: str) -> None: method list_active (line 56) | def list_active(cls) -> dict[str, dict[str, Any]]: method _delayed_cleanup (line 61) | async def _delayed_cleanup(cls, progress_id: str, delay_seconds: int =... method start (line 75) | async def start(self, initial_data: dict[str, Any] | None = None): method update (line 93) | async def update(self, status: str, progress: int, log: str, **kwargs): method complete (line 166) | async def complete(self, completion_data: dict[str, Any] | None = None): method error (line 196) | async def error(self, error_message: str, error_details: dict[str, Any... method update_batch_progress (line 221) | async def update_batch_progress( method update_crawl_stats (line 243) | async def update_crawl_stats( method update_storage_progress (line 278) | async def update_storage_progress( method update_code_extraction_progress (line 313) | async def update_code_extraction_progress( method _update_state (line 345) | def _update_state(self): method _format_duration (line 355) | def _format_duration(self, seconds: float) -> str: method get_state (line 366) | def get_state(self) -> dict[str, Any]: FILE: python/src/server/utils/semantic_version.py function parse_version (line 8) | def parse_version(version_string: str) -> tuple[int, int, int, str | None]: function compare_versions (line 52) | def compare_versions(version1: str, version2: str) -> int: function is_newer_version (line 92) | def is_newer_version(current: str, latest: str) -> bool: FILE: python/tests/agent_work_orders/conftest.py function reset_structlog (line 22) | def reset_structlog(): FILE: python/tests/agent_work_orders/test_agent_executor.py function test_build_command (line 13) | def test_build_command(): function test_build_command_no_args (line 50) | def test_build_command_no_args(): function test_build_command_with_custom_max_turns (line 75) | def test_build_command_with_custom_max_turns(): function test_build_command_missing_file (line 100) | def test_build_command_missing_file(): function test_execute_async_success (line 112) | async def test_execute_async_success(): function test_execute_async_failure (line 141) | async def test_execute_async_failure(): function test_execute_async_timeout (line 165) | async def test_execute_async_timeout(): function test_extract_session_id (line 193) | def test_extract_session_id(): function test_extract_session_id_not_found (line 207) | def test_extract_session_id_not_found(): function test_extract_session_id_invalid_json (line 220) | def test_extract_session_id_invalid_json(): function test_execute_async_extracts_result_text (line 231) | async def test_execute_async_extracts_result_text(): function test_build_command_replaces_arguments_placeholder (line 257) | def test_build_command_replaces_arguments_placeholder(): function test_build_command_replaces_positional_arguments (line 281) | def test_build_command_replaces_positional_arguments(): FILE: python/tests/agent_work_orders/test_api.py function test_health_endpoint (line 18) | def test_health_endpoint(): function test_create_agent_work_order (line 35) | def test_create_agent_work_order(): function test_create_agent_work_order_without_issue (line 57) | def test_create_agent_work_order_without_issue(): function test_create_agent_work_order_invalid_data (line 76) | def test_create_agent_work_order_invalid_data(): function test_list_agent_work_orders_empty (line 88) | def test_list_agent_work_orders_empty(): function test_list_agent_work_orders_with_data (line 102) | def test_list_agent_work_orders_with_data(): function test_list_agent_work_orders_with_status_filter (line 136) | def test_list_agent_work_orders_with_status_filter(): function test_get_agent_work_order (line 147) | def test_get_agent_work_order(): function test_get_agent_work_order_not_found (line 186) | def test_get_agent_work_order_not_found(): function test_get_git_progress (line 196) | def test_get_git_progress(): function test_get_git_progress_not_found (line 232) | def test_get_git_progress_not_found(): function test_send_prompt_to_agent (line 242) | def test_send_prompt_to_agent(): function test_get_logs (line 257) | def test_get_logs(): function test_verify_repository_success (line 273) | def test_verify_repository_success(): function test_verify_repository_failure (line 300) | def test_verify_repository_failure(): function test_get_agent_work_order_steps (line 315) | def test_get_agent_work_order_steps(): function test_get_agent_work_order_steps_not_found (line 374) | def test_get_agent_work_order_steps_not_found(): function test_get_agent_work_order_steps_empty (line 387) | def test_get_agent_work_order_steps_empty(): FILE: python/tests/agent_work_orders/test_command_loader.py function test_load_command_success (line 14) | def test_load_command_success(): function test_load_command_not_found (line 30) | def test_load_command_not_found(): function test_list_available_commands (line 44) | def test_list_available_commands(): function test_list_available_commands_empty_directory (line 64) | def test_list_available_commands_empty_directory(): function test_list_available_commands_nonexistent_directory (line 76) | def test_list_available_commands_nonexistent_directory(): FILE: python/tests/agent_work_orders/test_config.py function test_config_default_values (line 13) | def test_config_default_values(): function test_config_local_service_discovery (line 28) | def test_config_local_service_discovery(): function test_config_docker_service_discovery (line 41) | def test_config_docker_service_discovery(): function test_config_explicit_server_url_override (line 56) | def test_config_explicit_server_url_override(): function test_config_explicit_mcp_url_override (line 67) | def test_config_explicit_mcp_url_override(): function test_config_claude_cli_path_override (line 78) | def test_config_claude_cli_path_override(): function test_config_log_level_override (line 91) | def test_config_log_level_override(): function test_config_cors_origins_override (line 104) | def test_config_cors_origins_override(): function test_config_ensure_temp_dir (line 116) | def test_config_ensure_temp_dir(tmp_path): function test_config_explicit_url_overrides_discovery_mode (line 143) | def test_config_explicit_url_overrides_discovery_mode(): function test_config_state_storage_type (line 157) | def test_config_state_storage_type(): function test_config_file_state_directory (line 182) | def test_config_file_state_directory(): FILE: python/tests/agent_work_orders/test_github_integration.py function test_verify_repository_access_success (line 13) | async def test_verify_repository_access_success(): function test_verify_repository_access_failure (line 29) | async def test_verify_repository_access_failure(): function test_get_repository_info_success (line 45) | async def test_get_repository_info_success(): function test_get_repository_info_failure (line 65) | async def test_get_repository_info_failure(): function test_create_pull_request_success (line 80) | async def test_create_pull_request_success(): function test_create_pull_request_failure (line 108) | async def test_create_pull_request_failure(): function test_parse_repository_url_https (line 128) | def test_parse_repository_url_https(): function test_parse_repository_url_https_with_git (line 137) | def test_parse_repository_url_https_with_git(): function test_parse_repository_url_short_format (line 146) | def test_parse_repository_url_short_format(): function test_parse_repository_url_invalid (line 155) | def test_parse_repository_url_invalid(): function test_get_issue_success (line 167) | async def test_get_issue_success(): function test_get_issue_failure (line 192) | async def test_get_issue_failure(): FILE: python/tests/agent_work_orders/test_id_generator.py function test_generate_work_order_id_format (line 9) | def test_generate_work_order_id_format(): function test_generate_work_order_id_uniqueness (line 20) | def test_generate_work_order_id_uniqueness(): function test_generate_sandbox_identifier (line 26) | def test_generate_sandbox_identifier(): FILE: python/tests/agent_work_orders/test_log_buffer.py function test_add_and_get_logs (line 16) | def test_add_and_get_logs(): function test_circular_buffer_overflow (line 35) | def test_circular_buffer_overflow(): function test_filter_by_level (line 54) | def test_filter_by_level(): function test_filter_by_step (line 78) | def test_filter_by_step(): function test_filter_by_timestamp (line 95) | def test_filter_by_timestamp(): function test_multiple_work_orders (line 115) | def test_multiple_work_orders(): function test_clear_work_order (line 133) | def test_clear_work_order(): function test_thread_safety (line 150) | def test_thread_safety(): function test_cleanup_old_work_orders (line 175) | def test_cleanup_old_work_orders(): function test_get_logs_with_pagination (line 196) | def test_get_logs_with_pagination(): function test_get_logs_since_convenience_method (line 219) | def test_get_logs_since_convenience_method(): function test_get_work_order_count (line 235) | def test_get_work_order_count(): function test_empty_buffer_returns_empty_list (line 252) | def test_empty_buffer_returns_empty_list(): function test_timestamp_auto_generation (line 262) | def test_timestamp_auto_generation(): function test_cleanup_task_lifecycle (line 277) | async def test_cleanup_task_lifecycle(): function test_combined_filters (line 295) | def test_combined_filters(): FILE: python/tests/agent_work_orders/test_models.py function test_agent_work_order_status_enum (line 20) | def test_agent_work_order_status_enum(): function test_agent_workflow_type_enum (line 28) | def test_agent_workflow_type_enum(): function test_sandbox_type_enum (line 33) | def test_sandbox_type_enum(): function test_agent_workflow_phase_enum (line 41) | def test_agent_workflow_phase_enum(): function test_agent_work_order_state_creation (line 47) | def test_agent_work_order_state_creation(): function test_agent_work_order_creation (line 64) | def test_agent_work_order_creation(): function test_create_agent_work_order_request (line 92) | def test_create_agent_work_order_request(): function test_create_agent_work_order_request_optional_fields (line 108) | def test_create_agent_work_order_request_optional_fields(): function test_create_agent_work_order_request_with_user_request (line 121) | def test_create_agent_work_order_request_with_user_request(): function test_create_agent_work_order_request_with_github_issue (line 135) | def test_create_agent_work_order_request_with_github_issue(): function test_workflow_step_enum (line 149) | def test_workflow_step_enum(): function test_step_execution_result_success (line 159) | def test_step_execution_result_success(): function test_step_execution_result_failure (line 180) | def test_step_execution_result_failure(): function test_step_history_creation (line 199) | def test_step_history_creation(): function test_step_history_with_steps (line 207) | def test_step_history_with_steps(): function test_step_history_get_current_step_initial (line 233) | def test_step_history_get_current_step_initial(): function test_step_history_get_current_step_retry_failed (line 240) | def test_step_history_get_current_step_retry_failed(): function test_step_history_get_current_step_next (line 255) | def test_step_history_get_current_step_next(): function test_command_execution_result_with_result_text (line 270) | def test_command_execution_result_with_result_text(): function test_command_execution_result_without_result_text (line 285) | def test_command_execution_result_without_result_text(): FILE: python/tests/agent_work_orders/test_port_allocation.py function test_get_port_range_for_work_order_deterministic (line 19) | def test_get_port_range_for_work_order_deterministic(): function test_get_port_range_for_work_order_size (line 33) | def test_get_port_range_for_work_order_size(): function test_get_port_range_for_work_order_uses_different_slots (line 43) | def test_get_port_range_for_work_order_uses_different_slots(): function test_get_port_range_for_work_order_fallback_hash (line 60) | def test_get_port_range_for_work_order_fallback_hash(): function test_is_port_available_mock_available (line 73) | def test_is_port_available_mock_available(): function test_is_port_available_mock_unavailable (line 86) | def test_is_port_available_mock_unavailable(): function test_find_available_port_range_all_available (line 98) | def test_find_available_port_range_all_available(): function test_find_available_port_range_some_unavailable (line 117) | def test_find_available_port_range_some_unavailable(): function test_find_available_port_range_fallback_to_next_slot (line 140) | def test_find_available_port_range_fallback_to_next_slot(): function test_find_available_port_range_exhausted (line 167) | def test_find_available_port_range_exhausted(): function test_create_ports_env_file (line 183) | def test_create_ports_env_file(tmp_path): function test_create_ports_env_file_partial_availability (line 214) | def test_create_ports_env_file_partial_availability(tmp_path): function test_create_ports_env_file_overwrites (line 243) | def test_create_ports_env_file_overwrites(tmp_path): function test_port_ranges_do_not_overlap (line 262) | def test_port_ranges_do_not_overlap(): function test_max_concurrent_work_orders (line 281) | def test_max_concurrent_work_orders(): FILE: python/tests/agent_work_orders/test_repository_config_repository.py function mock_supabase_client (line 15) | def mock_supabase_client(): function repository_instance (line 35) | def repository_instance(mock_supabase_client): function test_list_repositories_returns_all_repositories (line 43) | async def test_list_repositories_returns_all_repositories(repository_ins... function test_list_repositories_with_empty_result (line 79) | async def test_list_repositories_with_empty_result(repository_instance, ... function test_get_repository_success (line 91) | async def test_get_repository_success(repository_instance, mock_supabase... function test_get_repository_not_found (line 118) | async def test_get_repository_not_found(repository_instance, mock_supaba... function test_create_repository_success (line 129) | async def test_create_repository_success(repository_instance, mock_supab... function test_create_repository_with_verification (line 163) | async def test_create_repository_with_verification(repository_instance, ... function test_update_repository_success (line 191) | async def test_update_repository_success(repository_instance, mock_supab... function test_update_repository_not_found (line 222) | async def test_update_repository_not_found(repository_instance, mock_sup... function test_delete_repository_success (line 236) | async def test_delete_repository_success(repository_instance, mock_supab... function test_delete_repository_not_found (line 250) | async def test_delete_repository_not_found(repository_instance, mock_sup... function test_row_to_model_with_invalid_workflow_step (line 266) | async def test_row_to_model_with_invalid_workflow_step(repository_instan... function test_row_to_model_with_invalid_sandbox_type (line 291) | async def test_row_to_model_with_invalid_sandbox_type(repository_instance): function test_create_repository_with_all_fields (line 316) | async def test_create_repository_with_all_fields(repository_instance, mo... function test_update_repository_with_multiple_fields (line 351) | async def test_update_repository_with_multiple_fields(repository_instanc... function test_list_repositories_with_multiple_items (line 384) | async def test_list_repositories_with_multiple_items(repository_instance... function test_create_repository_database_error (line 415) | async def test_create_repository_database_error(repository_instance, moc... function test_get_repository_with_minimal_data (line 430) | async def test_get_repository_with_minimal_data(repository_instance, moc... FILE: python/tests/agent_work_orders/test_sandbox_manager.py function test_git_branch_sandbox_setup_success (line 15) | async def test_git_branch_sandbox_setup_success(): function test_git_branch_sandbox_setup_failure (line 34) | async def test_git_branch_sandbox_setup_failure(): function test_git_branch_sandbox_execute_command_success (line 54) | async def test_git_branch_sandbox_execute_command_success(): function test_git_branch_sandbox_execute_command_failure (line 77) | async def test_git_branch_sandbox_execute_command_failure(): function test_git_branch_sandbox_execute_command_timeout (line 100) | async def test_git_branch_sandbox_execute_command_timeout(): function test_git_branch_sandbox_get_git_branch_name (line 131) | async def test_git_branch_sandbox_get_git_branch_name(): function test_git_branch_sandbox_cleanup (line 150) | async def test_git_branch_sandbox_cleanup(): function test_sandbox_factory_git_branch (line 168) | def test_sandbox_factory_git_branch(): function test_sandbox_factory_not_implemented (line 183) | def test_sandbox_factory_not_implemented(): FILE: python/tests/agent_work_orders/test_server.py function test_server_health_endpoint (line 13) | def test_server_health_endpoint(): function test_server_root_endpoint (line 30) | def test_server_root_endpoint(): function test_health_check_claude_cli_available (line 50) | def test_health_check_claude_cli_available(mock_run): function test_health_check_claude_cli_unavailable (line 70) | def test_health_check_claude_cli_unavailable(mock_run): function test_health_check_git_availability (line 90) | def test_health_check_git_availability(mock_which): function test_health_check_server_connectivity (line 109) | async def test_health_check_server_connectivity(mock_client_class): function test_health_check_mcp_connectivity (line 128) | async def test_health_check_mcp_connectivity(mock_client_class): function test_health_check_server_unavailable (line 147) | async def test_health_check_server_unavailable(mock_client_class): function test_cors_middleware_configured (line 163) | def test_cors_middleware_configured(): function test_router_included_with_prefix (line 173) | def test_router_included_with_prefix(): function test_startup_logs_local_mode (line 184) | def test_startup_logs_local_mode(caplog): function test_startup_logs_docker_mode (line 194) | def test_startup_logs_docker_mode(caplog): FILE: python/tests/agent_work_orders/test_sse_streams.py function test_format_log_event (line 21) | def test_format_log_event(): function test_get_current_timestamp (line 44) | def test_get_current_timestamp(): function test_stream_empty_buffer (line 61) | async def test_stream_empty_buffer(): function test_stream_with_existing_logs (line 79) | async def test_stream_with_existing_logs(): function test_stream_with_level_filter (line 108) | async def test_stream_with_level_filter(): function test_stream_with_step_filter (line 131) | async def test_stream_with_step_filter(): function test_stream_with_since_timestamp (line 154) | async def test_stream_with_since_timestamp(): function test_stream_heartbeat (line 180) | async def test_stream_heartbeat(): function test_stream_disconnect (line 201) | async def test_stream_disconnect(): function test_stream_yields_new_logs (line 225) | async def test_stream_yields_new_logs(): function test_stream_combined_filters (line 260) | async def test_stream_combined_filters(): function test_format_log_event_with_extra_fields (line 292) | def test_format_log_event_with_extra_fields(): function test_stream_no_duplicate_events (line 314) | async def test_stream_no_duplicate_events(): FILE: python/tests/agent_work_orders/test_state_manager.py function test_create_work_order (line 22) | async def test_create_work_order(): function test_get_nonexistent_work_order (line 52) | async def test_get_nonexistent_work_order(): function test_list_work_orders (line 61) | async def test_list_work_orders(): function test_list_work_orders_with_status_filter (line 88) | async def test_list_work_orders_with_status_filter(): function test_update_status (line 117) | async def test_update_status(): function test_update_status_with_additional_fields (line 147) | async def test_update_status_with_additional_fields(): function test_update_git_branch (line 182) | async def test_update_git_branch(): function test_update_session_id (line 212) | async def test_update_session_id(): function test_save_and_get_step_history (line 242) | async def test_save_and_get_step_history(): function test_get_nonexistent_step_history (line 275) | async def test_get_nonexistent_step_history(): function test_update_step_history (line 284) | async def test_update_step_history(): FILE: python/tests/agent_work_orders/test_workflow_operations.py function test_run_create_branch_step_success (line 23) | async def test_run_create_branch_step_success(): function test_run_create_branch_step_failure (line 58) | async def test_run_create_branch_step_failure(): function test_run_planning_step_success (line 89) | async def test_run_planning_step_success(): function test_run_planning_step_with_none_issue_number (line 125) | async def test_run_planning_step_with_none_issue_number(): function test_run_execute_step_success (line 160) | async def test_run_execute_step_success(): function test_run_execute_step_missing_plan_file (line 193) | async def test_run_execute_step_missing_plan_file(): function test_run_commit_step_success (line 213) | async def test_run_commit_step_success(): function test_run_create_pr_step_success (line 245) | async def test_run_create_pr_step_success(): function test_run_create_pr_step_missing_branch (line 281) | async def test_run_create_pr_step_missing_branch(): function test_run_review_step_success (line 301) | async def test_run_review_step_success(): function test_run_review_step_missing_plan (line 333) | async def test_run_review_step_missing_plan(): function test_context_passing_between_steps (line 353) | async def test_context_passing_between_steps(): FILE: python/tests/agent_work_orders/test_workflow_orchestrator.py function mock_dependencies (line 17) | def mock_dependencies(): function test_execute_workflow_default_commands (line 56) | async def test_execute_workflow_default_commands(mock_dependencies): function test_execute_workflow_custom_commands (line 139) | async def test_execute_workflow_custom_commands(mock_dependencies): function test_execute_workflow_stop_on_failure (line 177) | async def test_execute_workflow_stop_on_failure(mock_dependencies): function test_execute_workflow_context_passing (line 224) | async def test_execute_workflow_context_passing(mock_dependencies): function test_execute_workflow_updates_git_branch (line 277) | async def test_execute_workflow_updates_git_branch(mock_dependencies): function test_execute_workflow_updates_pr_url (line 306) | async def test_execute_workflow_updates_pr_url(mock_dependencies): function test_execute_workflow_unknown_command (line 344) | async def test_execute_workflow_unknown_command(mock_dependencies): function test_execute_workflow_sandbox_cleanup (line 366) | async def test_execute_workflow_sandbox_cleanup(mock_dependencies): FILE: python/tests/conftest.py function ensure_test_environment (line 46) | def ensure_test_environment(): function prevent_real_db_calls (line 60) | def prevent_real_db_calls(): function mock_supabase_client (line 90) | def mock_supabase_client(): function client (line 137) | def client(mock_supabase_client): function test_project (line 167) | def test_project(): function test_task (line 173) | def test_task(): function test_knowledge_item (line 184) | def test_knowledge_item(): FILE: python/tests/mcp_server/features/documents/test_document_tools.py function mock_mcp (line 13) | def mock_mcp(): function mock_context (line 31) | def mock_context(): function test_create_document_success (line 37) | async def test_create_document_success(mock_mcp, mock_context): function test_find_documents_success (line 76) | async def test_find_documents_success(mock_mcp, mock_context): function test_update_document_partial_update (line 108) | async def test_update_document_partial_update(mock_mcp, mock_context): function test_delete_document_not_found (line 145) | async def test_delete_document_not_found(mock_mcp, mock_context): FILE: python/tests/mcp_server/features/documents/test_version_tools.py function mock_mcp (line 13) | def mock_mcp(): function mock_context (line 31) | def mock_context(): function test_create_version_success (line 37) | async def test_create_version_success(mock_mcp, mock_context): function test_create_version_invalid_field (line 75) | async def test_create_version_invalid_field(mock_mcp, mock_context): function test_restore_version_success (line 106) | async def test_restore_version_success(mock_mcp, mock_context): function test_find_versions_with_filter (line 139) | async def test_find_versions_with_filter(mock_mcp, mock_context): FILE: python/tests/mcp_server/features/projects/test_project_tools.py function mock_mcp (line 14) | def mock_mcp(): function mock_context (line 32) | def mock_context(): function test_create_project_success (line 38) | async def test_create_project_success(mock_mcp, mock_context): function test_create_project_direct_response (line 91) | async def test_create_project_direct_response(mock_mcp, mock_context): function test_find_projects_success (line 119) | async def test_find_projects_success(mock_mcp, mock_context): function test_get_project_not_found (line 153) | async def test_get_project_not_found(mock_mcp, mock_context): FILE: python/tests/mcp_server/features/tasks/test_task_tools.py function mock_mcp (line 13) | def mock_mcp(): function mock_context (line 31) | def mock_context(): function test_create_task_with_sources (line 37) | async def test_create_task_with_sources(mock_mcp, mock_context): function test_find_tasks_with_project_filter (line 80) | async def test_find_tasks_with_project_filter(mock_mcp, mock_context): function test_find_tasks_with_status_filter (line 116) | async def test_find_tasks_with_status_filter(mock_mcp, mock_context): function test_update_task_status (line 147) | async def test_update_task_status(mock_mcp, mock_context): function test_update_task_no_fields (line 185) | async def test_update_task_no_fields(mock_mcp, mock_context): function test_delete_task_already_archived (line 206) | async def test_delete_task_already_archived(mock_mcp, mock_context): FILE: python/tests/mcp_server/features/test_feature_tools.py function mock_mcp (line 13) | def mock_mcp(): function mock_context (line 31) | def mock_context(): function test_get_project_features_success (line 37) | async def test_get_project_features_success(mock_mcp, mock_context): function test_get_project_features_empty (line 79) | async def test_get_project_features_empty(mock_mcp, mock_context): function test_get_project_features_not_found (line 104) | async def test_get_project_features_not_found(mock_mcp, mock_context): FILE: python/tests/mcp_server/utils/test_error_handling.py function test_format_error_basic (line 12) | def test_format_error_basic(): function test_format_error_with_all_fields (line 27) | def test_format_error_with_all_fields(): function test_from_http_error_with_json_body (line 46) | def test_from_http_error_with_json_body(): function test_from_http_error_with_text_body (line 65) | def test_from_http_error_with_text_body(): function test_from_exception_timeout (line 82) | def test_from_exception_timeout(): function test_from_exception_connection (line 100) | def test_from_exception_connection(): function test_from_exception_request_error (line 114) | def test_from_exception_request_error(): function test_from_exception_generic (line 127) | def test_from_exception_generic(): function test_from_exception_connect_timeout (line 141) | def test_from_exception_connect_timeout(): function test_from_exception_read_timeout (line 154) | def test_from_exception_read_timeout(): FILE: python/tests/mcp_server/utils/test_timeout_config.py function test_get_default_timeout_defaults (line 17) | def test_get_default_timeout_defaults(): function test_get_default_timeout_from_env (line 28) | def test_get_default_timeout_from_env(): function test_get_polling_timeout_defaults (line 44) | def test_get_polling_timeout_defaults(): function test_get_polling_timeout_from_env (line 53) | def test_get_polling_timeout_from_env(): function test_get_max_polling_attempts_default (line 66) | def test_get_max_polling_attempts_default(): function test_get_max_polling_attempts_from_env (line 74) | def test_get_max_polling_attempts_from_env(): function test_get_max_polling_attempts_invalid_env (line 82) | def test_get_max_polling_attempts_invalid_env(): function test_get_polling_interval_base (line 91) | def test_get_polling_interval_base(): function test_get_polling_interval_exponential_backoff (line 99) | def test_get_polling_interval_exponential_backoff(): function test_get_polling_interval_custom_base (line 113) | def test_get_polling_interval_custom_base(): function test_get_polling_interval_custom_max (line 122) | def test_get_polling_interval_custom_max(): function test_get_polling_interval_all_custom (line 132) | def test_get_polling_interval_all_custom(): function test_timeout_values_are_floats (line 147) | def test_timeout_values_are_floats(): FILE: python/tests/progress_tracking/integration/test_crawl_orchestration_progress.py function mock_crawler (line 14) | def mock_crawler(): function crawl_progress_mock_supabase_client (line 21) | def crawl_progress_mock_supabase_client(): function crawling_service (line 36) | def crawling_service(mock_crawler, crawl_progress_mock_supabase_client): class TestCrawlOrchestrationProgressIntegration (line 48) | class TestCrawlOrchestrationProgressIntegration: method test_full_crawl_orchestration_progress (line 54) | async def test_full_crawl_orchestration_progress(self, mock_batch_craw... method test_progress_mapper_integration (line 165) | async def test_progress_mapper_integration(self, crawling_service): method test_cancellation_during_orchestration (line 204) | async def test_cancellation_during_orchestration(self, crawling_service): method test_progress_callback_signature_compatibility (line 244) | async def test_progress_callback_signature_compatibility(self, crawlin... method test_error_recovery_in_progress_tracking (line 286) | async def test_error_recovery_in_progress_tracking(self, crawling_serv... FILE: python/tests/progress_tracking/integration/test_document_storage_progress.py function create_mock_embedding_result (line 13) | def create_mock_embedding_result(embedding_count: int) -> EmbeddingBatch... function progress_mock_supabase_client (line 22) | def progress_mock_supabase_client(): function mock_progress_callback (line 37) | def mock_progress_callback(): function sample_document_data (line 50) | def sample_document_data(): class TestDocumentStorageProgressIntegration (line 79) | class TestDocumentStorageProgressIntegration: method test_batch_progress_reporting (line 85) | async def test_batch_progress_reporting(self, mock_credentials, mock_c... method test_progress_callback_signature (line 132) | async def test_progress_callback_signature(self, mock_credentials, moc... method test_cancellation_support (line 185) | async def test_cancellation_support(self, mock_credentials, mock_creat... method test_error_handling_in_progress_reporting (line 219) | async def test_error_handling_in_progress_reporting(self, mock_credent... class TestProgressTrackerIntegration (line 251) | class TestProgressTrackerIntegration: method test_full_crawl_progress_sequence (line 255) | async def test_full_crawl_progress_sequence(self): method test_progress_tracker_with_batch_data (line 305) | async def test_progress_tracker_with_batch_data(self): method test_concurrent_progress_trackers (line 342) | async def test_concurrent_progress_trackers(self): FILE: python/tests/progress_tracking/test_batch_progress_bug.py class TestBatchProgressBug (line 17) | class TestBatchProgressBug: method test_document_storage_completion_maps_correctly (line 21) | async def test_document_storage_completion_maps_correctly(self): method test_progress_tracker_prevents_raw_value_contamination (line 59) | async def test_progress_tracker_prevents_raw_value_contamination(self): method test_batch_processing_progress_sequence (line 101) | async def test_batch_processing_progress_sequence(self): FILE: python/tests/progress_tracking/test_progress_api.py function client (line 14) | def client(): function mock_progress_data (line 23) | def mock_progress_data(): class TestProgressAPI (line 48) | class TestProgressAPI: method test_get_progress_success (line 53) | def test_get_progress_success(self, mock_create_response, mock_get_pro... method test_get_progress_not_found (line 90) | def test_get_progress_not_found(self, mock_get_progress, client): method test_get_progress_with_etag_cache (line 102) | def test_get_progress_with_etag_cache(self, mock_create_response, mock... method test_get_progress_poll_interval_headers (line 127) | def test_get_progress_poll_interval_headers(self, mock_create_response... method test_list_active_operations_success (line 148) | def test_list_active_operations_success(self, client): method test_list_active_operations_empty (line 185) | def test_list_active_operations_empty(self, client): method test_get_progress_server_error (line 208) | def test_get_progress_server_error(self, mock_get_progress, client): method test_progress_response_model_validation (line 220) | def test_progress_response_model_validation(self, mock_create_response... method test_get_progress_different_operation_types (line 233) | def test_get_progress_different_operation_types(self, mock_create_resp... FILE: python/tests/progress_tracking/test_progress_mapper.py class TestProgressMapper (line 10) | class TestProgressMapper: method test_initialization (line 13) | def test_initialization(self): method test_map_progress_basic (line 20) | def test_map_progress_basic(self): method test_progress_never_goes_backwards (line 40) | def test_progress_never_goes_backwards(self): method test_completion_handling (line 56) | def test_completion_handling(self): method test_error_handling (line 73) | def test_error_handling(self): method test_cancelled_handling (line 87) | def test_cancelled_handling(self): method test_unknown_stage (line 101) | def test_unknown_stage(self): method test_stage_ranges_with_discovery (line 113) | def test_stage_ranges_with_discovery(self): method test_calculate_stage_progress (line 137) | def test_calculate_stage_progress(self): method test_map_batch_progress (line 157) | def test_map_batch_progress(self): method test_map_with_substage (line 173) | def test_map_with_substage(self): method test_reset (line 181) | def test_reset(self): method test_get_current_stage (line 195) | def test_get_current_stage(self): method test_get_current_progress (line 207) | def test_get_current_progress(self): method test_get_stage_range (line 219) | def test_get_stage_range(self): method test_realistic_crawl_sequence_with_discovery (line 228) | def test_realistic_crawl_sequence_with_discovery(self): method test_aliases_work_correctly (line 281) | def test_aliases_work_correctly(self): FILE: python/tests/progress_tracking/test_progress_models.py class TestProgressDetails (line 16) | class TestProgressDetails: method test_create_with_snake_case_fields (line 19) | def test_create_with_snake_case_fields(self): method test_create_with_camel_case_fields (line 35) | def test_create_with_camel_case_fields(self): method test_model_dump_uses_aliases (line 51) | def test_model_dump_uses_aliases(self): class TestBaseProgressResponse (line 68) | class TestBaseProgressResponse: method test_create_minimal_response (line 71) | def test_create_minimal_response(self): method test_progress_validation (line 85) | def test_progress_validation(self): method test_logs_validation_and_conversion (line 111) | def test_logs_validation_and_conversion(self): method test_camel_case_aliases (line 143) | def test_camel_case_aliases(self): class TestCrawlProgressResponse (line 158) | class TestCrawlProgressResponse: method test_create_crawl_response_with_batch_info (line 161) | def test_create_crawl_response_with_batch_info(self): method test_create_with_code_extraction_fields (line 185) | def test_create_with_code_extraction_fields(self): method test_status_validation (line 206) | def test_status_validation(self): method test_camel_case_field_aliases (line 230) | def test_camel_case_field_aliases(self): method test_duration_conversion (line 251) | def test_duration_conversion(self): class TestUploadProgressResponse (line 281) | class TestUploadProgressResponse: method test_create_upload_response (line 284) | def test_create_upload_response(self): method test_upload_status_validation (line 305) | def test_upload_status_validation(self): class TestProjectCreationProgressResponse (line 322) | class TestProjectCreationProgressResponse: method test_project_creation_status_validation (line 325) | def test_project_creation_status_validation(self): class TestProgressResponseFactory (line 349) | class TestProgressResponseFactory: method test_create_crawl_response (line 352) | def test_create_crawl_response(self): method test_create_upload_response (line 373) | def test_create_upload_response(self): method test_create_response_with_details (line 392) | def test_create_response_with_details(self): method test_factory_handles_missing_fields (line 414) | def test_factory_handles_missing_fields(self): method test_factory_unknown_operation_type (line 434) | def test_factory_unknown_operation_type(self): method test_factory_validation_error_fallback (line 446) | def test_factory_validation_error_fallback(self): FILE: python/tests/progress_tracking/test_progress_tracker.py class TestProgressTracker (line 11) | class TestProgressTracker: method test_initialization (line 14) | def test_initialization(self): method test_get_progress (line 25) | def test_get_progress(self): method test_clear_progress (line 36) | def test_clear_progress(self): method test_start (line 51) | async def test_start(self): method test_update (line 67) | async def test_update(self): method test_progress_never_goes_backwards (line 85) | async def test_progress_never_goes_backwards(self): method test_complete (line 102) | async def test_complete(self): method test_error (line 120) | async def test_error(self): method test_update_crawl_stats (line 135) | async def test_update_crawl_stats(self): method test_update_storage_progress (line 154) | async def test_update_storage_progress(self): method test_update_code_extraction_progress (line 174) | async def test_update_code_extraction_progress(self): method test_update_batch_progress (line 193) | async def test_update_batch_progress(self): method test_multiple_trackers (line 210) | def test_multiple_trackers(self): FILE: python/tests/progress_tracking/utils/test_helpers.py function mock_progress_tracker (line 14) | def mock_progress_tracker(): function progress_mapper (line 42) | def progress_mapper(): function sample_progress_data (line 48) | def sample_progress_data(): function mock_progress_callback (line 75) | def mock_progress_callback(): class ProgressTestHelper (line 88) | class ProgressTestHelper: method assert_progress_update (line 92) | def assert_progress_update( method assert_batch_progress (line 112) | def assert_batch_progress( method create_crawl_results (line 131) | def create_crawl_results(count: int = 5) -> List[Dict[str, Any]]: method simulate_progress_sequence (line 144) | def simulate_progress_sequence() -> List[Dict[str, Any]]: function progress_test_helper (line 162) | def progress_test_helper(): FILE: python/tests/server/api_routes/test_bug_report_api.py function client (line 16) | def client(): function mock_bug_report (line 22) | def mock_bug_report(): function test_health_check_with_defaults (line 57) | def test_health_check_with_defaults(client): function test_health_check_with_github_token (line 76) | def test_health_check_with_github_token(client): function test_health_check_with_custom_repo (line 91) | def test_health_check_with_custom_repo(client): function test_manual_submission_url_uses_correct_repo (line 102) | def test_manual_submission_url_uses_correct_repo(client, mock_bug_report): function test_api_submission_with_token (line 128) | def test_api_submission_with_token(client, mock_bug_report): function test_github_service_initialization (line 154) | def test_github_service_initialization(): function test_github_service_with_custom_repo (line 171) | def test_github_service_with_custom_repo(): FILE: python/tests/server/api_routes/test_mcp_api.py function mock_mcp_url (line 21) | def mock_mcp_url(): function mock_config_http (line 27) | def mock_config_http(): function mock_config_docker (line 33) | def mock_config_docker(): function test_get_container_status_http_running (line 42) | async def test_get_container_status_http_running(mock_mcp_url): function test_get_container_status_http_unreachable (line 70) | async def test_get_container_status_http_unreachable(mock_mcp_url): function test_get_container_status_http_timeout (line 93) | async def test_get_container_status_http_timeout(mock_mcp_url): function test_get_container_status_http_unhealthy (line 116) | async def test_get_container_status_http_unhealthy(mock_mcp_url): function test_get_container_status_http_zero_uptime (line 142) | async def test_get_container_status_http_zero_uptime(mock_mcp_url): function test_get_container_status_http_error (line 169) | async def test_get_container_status_http_error(mock_mcp_url): function test_get_container_status_docker_running (line 194) | def test_get_container_status_docker_running(): function test_get_container_status_docker_stopped (line 221) | def test_get_container_status_docker_stopped(): function test_get_container_status_docker_not_found (line 244) | def test_get_container_status_docker_not_found(): function test_get_container_status_docker_error (line 267) | def test_get_container_status_docker_error(): function test_get_container_status_routes_to_http (line 292) | async def test_get_container_status_routes_to_http(mock_mcp_url): function test_get_container_status_routes_to_docker (line 318) | async def test_get_container_status_routes_to_docker(): function test_config_defaults_to_http_mode (line 352) | async def test_config_defaults_to_http_mode(): function test_config_respects_environment_variables (line 367) | async def test_config_respects_environment_variables(): FILE: python/tests/server/api_routes/test_migration_api.py function client (line 17) | def client(): function mock_applied_migrations (line 23) | def mock_applied_migrations(): function mock_pending_migrations (line 42) | def mock_pending_migrations(): function mock_migration_status (line 61) | def mock_migration_status(mock_applied_migrations, mock_pending_migratio... function test_get_migration_status_success (line 80) | def test_get_migration_status_success(client, mock_migration_status): function test_get_migration_status_bootstrap_required (line 98) | def test_get_migration_status_bootstrap_required(client): function test_get_migration_status_error (line 121) | def test_get_migration_status_error(client): function test_get_migration_history_success (line 132) | def test_get_migration_history_success(client, mock_applied_migrations): function test_get_migration_history_empty (line 147) | def test_get_migration_history_empty(client): function test_get_migration_history_error (line 160) | def test_get_migration_history_error(client): function test_get_pending_migrations_success (line 171) | def test_get_pending_migrations_success(client, mock_pending_migrations): function test_get_pending_migrations_none (line 186) | def test_get_pending_migrations_none(client): function test_get_pending_migrations_error (line 198) | def test_get_pending_migrations_error(client): FILE: python/tests/server/api_routes/test_projects_api_polling.py function test_client (line 12) | def test_client(): class TestProjectsListPolling (line 22) | class TestProjectsListPolling: method test_list_projects_with_etag_generation (line 26) | async def test_list_projects_with_etag_generation(self): method test_list_projects_returns_304_with_matching_etag (line 62) | async def test_list_projects_returns_304_with_matching_etag(self): method test_list_projects_etag_changes_with_data (line 96) | async def test_list_projects_etag_changes_with_data(self): method test_list_projects_http_with_etag (line 129) | def test_list_projects_http_with_etag(self, test_client): class TestProjectTasksPolling (line 158) | class TestProjectTasksPolling: method test_list_project_tasks_with_etag (line 162) | async def test_list_project_tasks_with_etag(self): method test_list_project_tasks_304_response (line 198) | async def test_list_project_tasks_304_response(self): method test_list_project_tasks_http_polling (line 237) | def test_list_project_tasks_http_polling(self, test_client): class TestPollingEdgeCases (line 269) | class TestPollingEdgeCases: method test_empty_projects_list_etag (line 273) | async def test_empty_projects_list_etag(self): method test_project_not_found_no_etag (line 301) | async def test_project_not_found_no_etag(self): FILE: python/tests/server/api_routes/test_version_api.py function client (line 16) | def client(): function mock_version_data (line 22) | def mock_version_data(): function test_check_for_updates_success (line 37) | def test_check_for_updates_success(client, mock_version_data): function test_check_for_updates_no_update (line 52) | def test_check_for_updates_no_update(client): function test_check_for_updates_with_etag_modified (line 78) | def test_check_for_updates_with_etag_modified(client, mock_version_data): function test_check_for_updates_error_handling (line 100) | def test_check_for_updates_error_handling(client): function test_get_current_version (line 115) | def test_get_current_version(client): function test_clear_version_cache_success (line 125) | def test_clear_version_cache_success(client): function test_clear_version_cache_error (line 139) | def test_clear_version_cache_error(client): FILE: python/tests/server/services/test_llms_full_parser.py function test_create_section_slug (line 14) | def test_create_section_slug(): function test_create_section_url (line 23) | def test_create_section_url(): function test_parse_single_section (line 33) | def test_parse_single_section(): function test_parse_multiple_sections (line 50) | def test_parse_multiple_sections(): function test_no_h1_headers (line 84) | def test_no_h1_headers(): function test_h2_not_treated_as_section (line 99) | def test_h2_not_treated_as_section(): function test_empty_sections_skipped (line 119) | def test_empty_sections_skipped(): function test_consecutive_h1_headers (line 142) | def test_consecutive_h1_headers(): function test_word_count_calculation (line 164) | def test_word_count_calculation(): function test_empty_content (line 177) | def test_empty_content(): function test_whitespace_only_content (line 186) | def test_whitespace_only_content(): FILE: python/tests/server/services/test_migration_service.py function migration_service (line 21) | def migration_service(): function mock_supabase_client (line 31) | def mock_supabase_client(): function test_pending_migration_init (line 37) | def test_pending_migration_init(): function test_migration_record_init (line 53) | def test_migration_record_init(): function test_migration_service_init_local (line 72) | def test_migration_service_init_local(): function test_migration_service_init_docker (line 82) | def test_migration_service_init_docker(): function test_get_applied_migrations_success (line 93) | async def test_get_applied_migrations_success(migration_service, mock_su... function test_get_applied_migrations_table_not_exists (line 119) | async def test_get_applied_migrations_table_not_exists(migration_service... function test_get_pending_migrations_with_files (line 128) | async def test_get_pending_migrations_with_files(migration_service, mock... function test_get_pending_migrations_some_applied (line 158) | async def test_get_pending_migrations_some_applied(migration_service, mo... function test_get_migration_status_all_applied (line 196) | async def test_get_migration_status_all_applied(migration_service, mock_... function test_get_migration_status_bootstrap_required (line 231) | async def test_get_migration_status_bootstrap_required(migration_service... function test_get_migration_status_no_files (line 262) | async def test_get_migration_status_no_files(migration_service, mock_sup... FILE: python/tests/server/services/test_version_service.py function version_service (line 17) | def version_service(): function mock_release_data (line 27) | def mock_release_data(): function test_get_latest_release_success (line 49) | async def test_get_latest_release_success(version_service, mock_release_... function test_get_latest_release_uses_cache (line 67) | async def test_get_latest_release_uses_cache(version_service, mock_relea... function test_get_latest_release_cache_expired (line 82) | async def test_get_latest_release_cache_expired(version_service, mock_re... function test_get_latest_release_404 (line 106) | async def test_get_latest_release_404(version_service): function test_get_latest_release_timeout (line 121) | async def test_get_latest_release_timeout(version_service, mock_release_... function test_check_for_updates_new_version_available (line 139) | async def test_check_for_updates_new_version_available(version_service, ... function test_check_for_updates_same_version (line 155) | async def test_check_for_updates_same_version(version_service): function test_check_for_updates_no_release (line 168) | async def test_check_for_updates_no_release(version_service): function test_check_for_updates_parse_version (line 180) | async def test_check_for_updates_parse_version(version_service, mock_rel... function test_check_for_updates_missing_fields (line 196) | async def test_check_for_updates_missing_fields(version_service): function test_clear_cache (line 211) | def test_clear_cache(version_service, mock_release_data): function test_is_newer_version (line 224) | def test_is_newer_version(): FILE: python/tests/server/utils/test_etag_utils.py class TestGenerateEtag (line 10) | class TestGenerateEtag: method test_generate_etag_with_dict (line 13) | def test_generate_etag_with_dict(self): method test_generate_etag_with_list (line 27) | def test_generate_etag_with_list(self): method test_generate_etag_stable_ordering (line 40) | def test_generate_etag_stable_ordering(self): method test_generate_etag_with_none (line 52) | def test_generate_etag_with_none(self): method test_generate_etag_with_datetime (line 60) | def test_generate_etag_with_datetime(self): method test_generate_etag_empty_data (line 75) | def test_generate_etag_empty_data(self): class TestCheckEtag (line 89) | class TestCheckEtag: method test_check_etag_match (line 92) | def test_check_etag_match(self): method test_check_etag_no_match (line 99) | def test_check_etag_no_match(self): method test_check_etag_none_request (line 106) | def test_check_etag_none_request(self): method test_check_etag_empty_request (line 113) | def test_check_etag_empty_request(self): method test_check_etag_case_sensitive (line 120) | def test_check_etag_case_sensitive(self): method test_check_etag_with_weak_etag (line 127) | def test_check_etag_with_weak_etag(self): class TestEtagIntegration (line 137) | class TestEtagIntegration: method test_etag_roundtrip (line 140) | def test_etag_roundtrip(self): method test_etag_with_progress_data (line 164) | def test_etag_with_progress_data(self): FILE: python/tests/test_api_essentials.py function test_health_endpoint (line 4) | def test_health_endpoint(client): function test_create_project (line 13) | def test_create_project(client, test_project, mock_supabase_client): function test_list_projects (line 41) | def test_list_projects(client, mock_supabase_client): function test_create_task (line 55) | def test_create_task(client, test_task): function test_list_tasks (line 63) | def test_list_tasks(client): function test_start_crawl (line 70) | def test_start_crawl(client): function test_search_knowledge (line 79) | def test_search_knowledge(client): function test_polling_endpoint (line 86) | def test_polling_endpoint(client): function test_authentication (line 94) | def test_authentication(client): function test_error_handling (line 106) | def test_error_handling(client): FILE: python/tests/test_async_credential_service.py class TestAsyncCredentialService (line 22) | class TestAsyncCredentialService: method setup_credential_service (line 26) | def setup_credential_service(self): method mock_supabase_client (line 37) | def mock_supabase_client(self): method sample_credentials_data (line 45) | def sample_credentials_data(self): method test_deprecated_functions_removed (line 77) | def test_deprecated_functions_removed(self): method test_get_credential_from_cache (line 89) | async def test_get_credential_from_cache(self): method test_get_credential_encrypted_value (line 105) | async def test_get_credential_encrypted_value(self): method test_get_credential_cache_not_initialized (line 118) | async def test_get_credential_cache_not_initialized(self, mock_supabas... method test_get_credential_not_found_in_db (line 146) | async def test_get_credential_not_found_in_db(self, mock_supabase_clie... method test_set_credential_new (line 160) | async def test_set_credential_new(self, mock_supabase_client): method test_set_credential_encrypted (line 177) | async def test_set_credential_encrypted(self, mock_supabase_client): method test_load_all_credentials (line 195) | async def test_load_all_credentials(self, mock_supabase_client, sample... method test_get_active_provider_basic (line 224) | async def test_get_active_provider_basic(self, mock_supabase_client): method test_initialize_credentials (line 240) | async def test_initialize_credentials(self, mock_supabase_client, samp... method test_error_handling_database_failure (line 261) | async def test_error_handling_database_failure(self, mock_supabase_cli... method test_encryption_decryption_error_handling (line 273) | async def test_encryption_decryption_error_handling(self): method test_direct_cache_access_fallback (line 287) | def test_direct_cache_access_fallback(self): method test_concurrent_access (line 310) | async def test_concurrent_access(self): method test_cache_persistence (line 326) | async def test_cache_persistence(self): FILE: python/tests/test_async_embedding_service.py class AsyncContextManager (line 23) | class AsyncContextManager: method __init__ (line 26) | def __init__(self, return_value): method __aenter__ (line 29) | async def __aenter__(self): method __aexit__ (line 32) | async def __aexit__(self, exc_type, exc_val, exc_tb): class TestAsyncEmbeddingService (line 36) | class TestAsyncEmbeddingService: method mock_llm_client (line 40) | def mock_llm_client(self): method mock_threading_service (line 53) | def mock_threading_service(self): method test_create_embedding_success (line 62) | async def test_create_embedding_success(self, mock_llm_client, mock_th... method test_create_embedding_empty_text (line 98) | async def test_create_embedding_empty_text(self, mock_llm_client, mock... method test_create_embedding_api_error_raises_exception (line 127) | async def test_create_embedding_api_error_raises_exception(self, mock_... method test_create_embeddings_batch_success (line 159) | async def test_create_embeddings_batch_success(self, mock_llm_client, ... method test_create_embeddings_batch_empty_list (line 204) | async def test_create_embeddings_batch_empty_list(self): method test_create_embeddings_batch_rate_limit_error (line 213) | async def test_create_embeddings_batch_rate_limit_error(self, mock_thr... method test_create_embeddings_batch_quota_exhausted (line 254) | async def test_create_embeddings_batch_quota_exhausted(self, mock_thre... method test_create_embeddings_batch_with_progress_callback (line 302) | async def test_create_embeddings_batch_with_progress_callback( method test_provider_override (line 345) | async def test_provider_override(self, mock_llm_client, mock_threading... method test_create_embeddings_batch_large_batch_splitting (line 380) | async def test_create_embeddings_batch_large_batch_splitting( FILE: python/tests/test_async_llm_provider_service.py class AsyncContextManager (line 20) | class AsyncContextManager: method __init__ (line 23) | def __init__(self, return_value): method __aenter__ (line 26) | async def __aenter__(self): method __aexit__ (line 29) | async def __aexit__(self, exc_type, exc_val, exc_tb): class TestAsyncLLMProviderService (line 33) | class TestAsyncLLMProviderService: method _make_mock_client (line 37) | def _make_mock_client(): method clear_cache (line 43) | def clear_cache(self): method mock_credential_service (line 52) | def mock_credential_service(self): method openai_provider_config (line 62) | def openai_provider_config(self): method ollama_provider_config (line 73) | def ollama_provider_config(self): method google_provider_config (line 84) | def google_provider_config(self): method test_get_llm_client_openai_success (line 95) | async def test_get_llm_client_openai_success( method test_get_llm_client_ollama_success (line 118) | async def test_get_llm_client_ollama_success( method test_get_llm_client_google_success (line 140) | async def test_get_llm_client_google_success( method test_get_llm_client_with_provider_override (line 163) | async def test_get_llm_client_with_provider_override(self, mock_creden... method test_get_llm_client_use_embedding_provider (line 186) | async def test_get_llm_client_use_embedding_provider(self, mock_creden... method test_get_llm_client_missing_openai_key_with_ollama_fallback (line 214) | async def test_get_llm_client_missing_openai_key_with_ollama_fallback(... method test_get_llm_client_missing_openai_key (line 247) | async def test_get_llm_client_missing_openai_key(self, mock_credential... method test_get_llm_client_missing_google_key (line 271) | async def test_get_llm_client_missing_google_key(self, mock_credential... method test_get_llm_client_unsupported_provider_error (line 290) | async def test_get_llm_client_unsupported_provider_error(self, mock_cr... method test_get_llm_client_with_unsupported_provider_override (line 309) | async def test_get_llm_client_with_unsupported_provider_override(self,... method test_get_embedding_model_openai_success (line 323) | async def test_get_embedding_model_openai_success( method test_get_embedding_model_ollama_success (line 338) | async def test_get_embedding_model_ollama_success( method test_get_embedding_model_google_success (line 351) | async def test_get_embedding_model_google_success( method test_get_embedding_model_with_provider_override (line 364) | async def test_get_embedding_model_with_provider_override(self, mock_c... method test_get_embedding_model_custom_model_override (line 380) | async def test_get_embedding_model_custom_model_override(self, mock_cr... method test_get_embedding_model_error_fallback (line 398) | async def test_get_embedding_model_error_fallback(self, mock_credentia... method test_cache_functionality (line 409) | def test_cache_functionality(self): method test_cache_usage_in_get_llm_client (line 423) | async def test_cache_usage_in_get_llm_client( method test_deprecated_functions_removed (line 449) | def test_deprecated_functions_removed(self): method test_context_manager_cleanup (line 463) | async def test_context_manager_cleanup(self, mock_credential_service, ... method test_multiple_providers_in_sequence (line 486) | async def test_multiple_providers_in_sequence(self, mock_credential_se... FILE: python/tests/test_async_source_summary.py class TestAsyncSourceSummary (line 17) | class TestAsyncSourceSummary: method test_extract_summary_runs_in_thread (line 21) | async def test_extract_summary_runs_in_thread(self): method test_extract_summary_error_handling (line 87) | async def test_extract_summary_error_handling(self): method test_multiple_sources_concurrent_summaries (line 136) | async def test_multiple_sources_concurrent_summaries(self): method test_thread_safety_with_variables (line 196) | async def test_thread_safety_with_variables(self): method test_update_source_info_runs_in_thread (line 252) | async def test_update_source_info_runs_in_thread(self): method test_update_source_info_error_handling (line 306) | async def test_update_source_info_error_handling(self): method test_update_source_info_preserves_kwargs (line 361) | async def test_update_source_info_preserves_kwargs(self): FILE: python/tests/test_business_logic.py function test_task_status_transitions (line 4) | def test_task_status_transitions(client): function test_progress_calculation (line 11) | def test_progress_calculation(client): function test_rate_limiting (line 17) | def test_rate_limiting(client): function test_data_validation (line 25) | def test_data_validation(client): function test_permission_checks (line 41) | def test_permission_checks(client): function test_crawl_depth_limits (line 48) | def test_crawl_depth_limits(client): function test_document_chunking (line 63) | def test_document_chunking(client): function test_embedding_generation (line 71) | def test_embedding_generation(client): function test_source_management (line 77) | def test_source_management(client): function test_version_control (line 91) | def test_version_control(client): FILE: python/tests/test_code_extraction_source_id.py class TestCodeExtractionSourceId (line 14) | class TestCodeExtractionSourceId: method test_code_extraction_uses_provided_source_id (line 18) | async def test_code_extraction_uses_provided_source_id(self): method test_document_storage_passes_source_id (line 81) | async def test_document_storage_passes_source_id(self): method test_no_domain_extraction_from_url (line 119) | async def test_no_domain_extraction_from_url(self): method test_urlparse_not_imported (line 167) | def test_urlparse_not_imported(self): FILE: python/tests/test_crawl_orchestration_isolated.py class MockCrawlOrchestrationService (line 14) | class MockCrawlOrchestrationService: method __init__ (line 17) | def __init__(self, crawler=None, supabase_client=None, progress_id=None): method cancel (line 24) | def cancel(self): method is_cancelled (line 27) | def is_cancelled(self) -> bool: method _check_cancellation (line 30) | def _check_cancellation(self): method _is_documentation_site (line 34) | def _is_documentation_site(self, url: str) -> bool: method _create_crawl_progress_callback (line 39) | async def _create_crawl_progress_callback(self, base_status: str): method _crawl_by_url_type (line 52) | async def _crawl_by_url_type(self, url: str, request: dict[str, Any]) ... method _process_and_store_documents (line 65) | async def _process_and_store_documents( method _extract_and_store_code_examples (line 91) | async def _extract_and_store_code_examples( method _async_orchestrate_crawl (line 102) | async def _async_orchestrate_crawl( method orchestrate_crawl (line 167) | async def orchestrate_crawl(self, request: dict[str, Any]) -> dict[str... class TestAsyncCrawlOrchestration (line 184) | class TestAsyncCrawlOrchestration: method orchestration_service (line 188) | def orchestration_service(self): method sample_request (line 195) | def sample_request(self): method test_async_orchestrate_crawl_success (line 206) | async def test_async_orchestrate_crawl_success(self, orchestration_ser... method test_async_orchestrate_crawl_with_code_extraction (line 217) | async def test_async_orchestrate_crawl_with_code_extraction(self, orch... method test_crawl_by_url_type_text_file (line 228) | async def test_crawl_by_url_type_text_file(self, orchestration_service): method test_crawl_by_url_type_sitemap (line 239) | async def test_crawl_by_url_type_sitemap(self, orchestration_service): method test_crawl_by_url_type_regular_webpage (line 249) | async def test_crawl_by_url_type_regular_webpage(self, orchestration_s... method test_process_and_store_documents (line 259) | async def test_process_and_store_documents(self, orchestration_service): method test_extract_and_store_code_examples (line 279) | async def test_extract_and_store_code_examples(self, orchestration_ser... method test_cancellation_during_orchestration (line 298) | async def test_cancellation_during_orchestration(self, orchestration_s... method test_cancellation_during_document_processing (line 310) | async def test_cancellation_during_document_processing(self, orchestra... method test_error_handling_in_orchestration (line 324) | async def test_error_handling_in_orchestration(self, orchestration_ser... method test_documentation_site_detection (line 341) | def test_documentation_site_detection(self, orchestration_service): method test_cancellation_functionality (line 358) | def test_cancellation_functionality(self, orchestration_service): method test_progress_callback_creation (line 372) | async def test_progress_callback_creation(self, orchestration_service): method test_main_orchestrate_crawl_entry_point (line 385) | async def test_main_orchestrate_crawl_entry_point(self, orchestration_... method test_concurrent_operations (line 395) | async def test_concurrent_operations(self): class TestAsyncBehaviors (line 415) | class TestAsyncBehaviors: method test_async_method_chaining (line 419) | async def test_async_method_chaining(self): method test_asyncio_cancellation_propagation (line 442) | async def test_asyncio_cancellation_propagation(self): method test_no_blocking_operations (line 462) | async def test_no_blocking_operations(self): FILE: python/tests/test_crawling_service_subdomain.py class TestCrawlingServiceSubdomain (line 6) | class TestCrawlingServiceSubdomain: method service (line 10) | def service(self): method test_is_same_domain_or_subdomain_exact_match (line 15) | def test_is_same_domain_or_subdomain_exact_match(self, service): method test_is_same_domain_or_subdomain_subdomains (line 28) | def test_is_same_domain_or_subdomain_subdomains(self, service): method test_is_same_domain_or_subdomain_different_domains (line 47) | def test_is_same_domain_or_subdomain_different_domains(self, service): method test_is_same_domain_or_subdomain_protocols (line 66) | def test_is_same_domain_or_subdomain_protocols(self, service): method test_is_same_domain_or_subdomain_ports (line 79) | def test_is_same_domain_or_subdomain_ports(self, service): method test_is_same_domain_or_subdomain_edge_cases (line 92) | def test_is_same_domain_or_subdomain_edge_cases(self, service): method test_is_same_domain_or_subdomain_real_world_examples (line 110) | def test_is_same_domain_or_subdomain_real_world_examples(self, service): method test_is_same_domain_backward_compatibility (line 134) | def test_is_same_domain_backward_compatibility(self, service): FILE: python/tests/test_discovery_service.py function create_mock_dns_response (line 8) | def create_mock_dns_response(): function create_mock_response (line 16) | def create_mock_response(status_code: int, text: str = "", url: str = "h... class TestDiscoveryService (line 39) | class TestDiscoveryService: method test_discover_files_basic (line 45) | def test_discover_files_basic(self, mock_get, mock_session, mock_dns): method test_discover_files_no_files_found (line 76) | def test_discover_files_no_files_found(self, mock_get, mock_session, m... method test_discover_files_priority_order (line 93) | def test_discover_files_priority_order(self, mock_get, mock_session, m... method test_discover_files_robots_sitemap_priority (line 121) | def test_discover_files_robots_sitemap_priority(self, mock_get, mock_s... method test_discover_files_subdirectory_fallback (line 150) | def test_discover_files_subdirectory_fallback(self, mock_get, mock_ses... method test_check_url_exists (line 178) | def test_check_url_exists(self, mock_get, mock_session, mock_dns): method test_parse_robots_txt_with_sitemap (line 200) | def test_parse_robots_txt_with_sitemap(self, mock_get, mock_session, m... method test_parse_robots_txt_no_sitemap (line 221) | def test_parse_robots_txt_no_sitemap(self, mock_get, mock_session, moc... method test_parse_html_meta_tags (line 239) | def test_parse_html_meta_tags(self, mock_get, mock_session, mock_dns): method test_discovery_priority_behavior (line 265) | def test_discovery_priority_behavior(self, mock_get, mock_session, moc... method test_network_error_handling (line 336) | def test_network_error_handling(self, mock_get, mock_session, mock_dns): FILE: python/tests/test_document_storage_metrics.py class TestDocumentStorageMetrics (line 13) | class TestDocumentStorageMetrics: method test_avg_chunks_calculation_with_empty_docs (line 17) | async def test_avg_chunks_calculation_with_empty_docs(self): method test_avg_chunks_all_empty_docs (line 72) | async def test_avg_chunks_all_empty_docs(self): method test_avg_chunks_single_doc (line 118) | async def test_avg_chunks_single_doc(self): method test_processed_count_accuracy (line 161) | async def test_processed_count_accuracy(self): FILE: python/tests/test_embedding_service_no_zeros.py class TestNoZeroEmbeddings (line 25) | class TestNoZeroEmbeddings: method test_async_quota_exhausted_returns_failure (line 32) | async def test_async_quota_exhausted_returns_failure(self) -> None: method test_async_rate_limit_raises_exception (line 51) | async def test_async_rate_limit_raises_exception(self) -> None: method test_async_api_error_raises_exception (line 69) | async def test_async_api_error_raises_exception(self) -> None: method test_batch_handles_partial_failures (line 87) | async def test_batch_handles_partial_failures(self) -> None: method test_configurable_embedding_dimensions (line 131) | async def test_configurable_embedding_dimensions(self) -> None: method test_default_embedding_dimensions (line 170) | async def test_default_embedding_dimensions(self) -> None: method test_batch_quota_exhausted_stops_process (line 209) | async def test_batch_quota_exhausted_stops_process(self) -> None: method test_no_zero_vectors_in_results (line 236) | async def test_no_zero_vectors_in_results(self) -> None: class TestEmbeddingBatchResult (line 270) | class TestEmbeddingBatchResult: method test_batch_result_initialization (line 273) | def test_batch_result_initialization(self) -> None: method test_batch_result_add_success (line 282) | def test_batch_result_add_success(self) -> None: method test_batch_result_add_failure (line 297) | def test_batch_result_add_failure(self) -> None: method test_batch_result_mixed_results (line 315) | def test_batch_result_mixed_results(self) -> None: FILE: python/tests/test_keyword_extraction.py class TestKeywordExtractor (line 14) | class TestKeywordExtractor: method extractor (line 18) | def extractor(self): method test_simple_keyword_extraction (line 21) | def test_simple_keyword_extraction(self, extractor): method test_complex_query_extraction (line 30) | def test_complex_query_extraction(self, extractor): method test_stop_word_filtering (line 40) | def test_stop_word_filtering(self, extractor): method test_technical_terms_preserved (line 56) | def test_technical_terms_preserved(self, extractor): method test_compound_terms (line 65) | def test_compound_terms(self, extractor): method test_empty_query (line 75) | def test_empty_query(self, extractor): method test_query_with_only_stopwords (line 80) | def test_query_with_only_stopwords(self, extractor): method test_keyword_prioritization (line 86) | def test_keyword_prioritization(self, extractor): method test_max_keywords_limit (line 98) | def test_max_keywords_limit(self, extractor): method test_min_length_filtering (line 108) | def test_min_length_filtering(self, extractor): class TestSearchTermBuilder (line 124) | class TestSearchTermBuilder: method test_plural_variations (line 127) | def test_plural_variations(self): method test_verb_variations (line 139) | def test_verb_variations(self): method test_no_duplicates (line 149) | def test_no_duplicates(self): class TestIntegration (line 158) | class TestIntegration: method test_real_world_query_1 (line 161) | def test_real_world_query_1(self): method test_real_world_query_2 (line 176) | def test_real_world_query_2(self): method test_real_world_query_3 (line 189) | def test_real_world_query_3(self): method test_code_related_query (line 203) | def test_code_related_query(self): FILE: python/tests/test_knowledge_api_integration.py class TestKnowledgeAPIIntegration (line 11) | class TestKnowledgeAPIIntegration: method test_summary_endpoint_performance (line 15) | def test_summary_endpoint_performance(self, client, mock_supabase_clie... method test_progressive_loading_flow (line 115) | def test_progressive_loading_flow(self, client, mock_supabase_client): method test_parallel_requests_handling (line 224) | def test_parallel_requests_handling(self, client, mock_supabase_client): method test_domain_filter_with_pagination (line 290) | def test_domain_filter_with_pagination(self, client, mock_supabase_cli... method test_error_handling_in_pagination (line 359) | def test_error_handling_in_pagination(self, client, mock_supabase_clie... method test_default_pagination_params (line 381) | def test_default_pagination_params(self, client, mock_supabase_client): FILE: python/tests/test_knowledge_api_pagination.py function test_knowledge_summary_endpoint (line 14) | def test_knowledge_summary_endpoint(client, mock_supabase_client): function test_chunks_pagination (line 84) | def test_chunks_pagination(client, mock_supabase_client): function test_chunks_pagination_with_domain_filter (line 157) | def test_chunks_pagination_with_domain_filter(client, mock_supabase_clie... function test_code_examples_pagination (line 212) | def test_code_examples_pagination(client, mock_supabase_client): function test_pagination_limit_validation (line 276) | def test_pagination_limit_validation(client, mock_supabase_client): function test_summary_search_filter (line 324) | def test_summary_search_filter(client, mock_supabase_client): function test_summary_knowledge_type_filter (line 361) | def test_summary_knowledge_type_filter(client, mock_supabase_client): function test_empty_results_pagination (line 399) | def test_empty_results_pagination(client, mock_supabase_client): FILE: python/tests/test_llms_txt_link_following.py class TestLlmsTxtLinkFollowing (line 7) | class TestLlmsTxtLinkFollowing: method service (line 11) | def service(self): method supabase_llms_content (line 16) | def supabase_llms_content(self): method test_extract_links_from_supabase_llms_txt (line 30) | def test_extract_links_from_supabase_llms_txt(self, service, supabase_... method test_all_links_are_llms_variants (line 56) | def test_all_links_are_llms_variants(self, service, supabase_llms_cont... method test_all_links_are_same_domain (line 69) | def test_all_links_are_same_domain(self, service, supabase_llms_content): method test_filter_llms_links_from_supabase (line 83) | def test_filter_llms_links_from_supabase(self, service, supabase_llms_... method test_llms_txt_link_following_integration (line 104) | async def test_llms_txt_link_following_integration(self, service, supa... method test_external_llms_links_are_filtered (line 161) | def test_external_llms_links_are_filtered(self, service): method test_non_llms_links_are_filtered (line 189) | def test_non_llms_links_are_filtered(self, service): FILE: python/tests/test_openrouter_discovery.py function discovery_service (line 15) | def discovery_service(): function test_discover_embedding_models_returns_valid_list (line 21) | async def test_discover_embedding_models_returns_valid_list(discovery_se... function test_all_models_have_provider_prefix (line 31) | async def test_all_models_have_provider_prefix(discovery_service): function test_dimensions_are_positive_integers (line 43) | async def test_dimensions_are_positive_integers(discovery_service): function test_pricing_is_non_negative (line 53) | async def test_pricing_is_non_negative(discovery_service): function test_context_length_is_positive (line 67) | async def test_context_length_is_positive(discovery_service): function test_model_providers_are_valid (line 81) | async def test_model_providers_are_valid(discovery_service): function test_openai_models_present (line 93) | async def test_openai_models_present(discovery_service): function test_qwen_models_present (line 108) | async def test_qwen_models_present(discovery_service): function test_model_list_response_structure (line 119) | async def test_model_list_response_structure(): function test_model_id_validation_requires_prefix (line 131) | def test_model_id_validation_requires_prefix(): function test_model_with_valid_prefix_accepted (line 145) | def test_model_with_valid_prefix_accepted(): FILE: python/tests/test_port_configuration.py class TestPortConfiguration (line 13) | class TestPortConfiguration: method setup_method (line 16) | def setup_method(self): method teardown_method (line 20) | def teardown_method(self): method test_service_discovery_requires_all_ports (line 25) | def test_service_discovery_requires_all_ports(self): method test_service_discovery_requires_mcp_port (line 37) | def test_service_discovery_requires_mcp_port(self): method test_service_discovery_requires_agents_port (line 48) | def test_service_discovery_requires_agents_port(self): method test_service_discovery_with_all_ports (line 59) | def test_service_discovery_with_all_ports(self): method test_mcp_server_requires_port (line 73) | def test_mcp_server_requires_port(self): method test_main_server_requires_port (line 88) | def test_main_server_requires_port(self): method test_agents_server_requires_port (line 102) | def test_agents_server_requires_port(self): method test_agent_chat_api_requires_agents_port (line 116) | def test_agent_chat_api_requires_agents_port(self): method test_config_requires_port_or_archon_mcp_port (line 129) | def test_config_requires_port_or_archon_mcp_port(self): method test_custom_port_values (line 150) | def test_custom_port_values(self): class TestPortValidation (line 173) | class TestPortValidation: method test_invalid_port_values (line 176) | def test_invalid_port_values(self): method test_port_out_of_range (line 187) | def test_port_out_of_range(self): FILE: python/tests/test_progress_api.py function client (line 14) | def client(): function clear_progress_states (line 20) | def clear_progress_states(): class TestProgressAPI (line 27) | class TestProgressAPI: method test_get_progress_success (line 30) | def test_get_progress_success(self, client): method test_get_progress_not_found (line 58) | def test_get_progress_not_found(self, client): method test_get_progress_with_etag (line 67) | def test_get_progress_with_etag(self, client): method test_list_active_operations (line 103) | def test_list_active_operations(self, client): method test_list_active_operations_empty (line 145) | def test_list_active_operations_empty(self, client): method test_progress_response_for_crawl_operation (line 155) | def test_progress_response_for_crawl_operation(self, client): method test_progress_response_for_upload_operation (line 188) | def test_progress_response_for_upload_operation(self, client): method test_progress_headers (line 211) | def test_progress_headers(self, client): method test_progress_completed_operation_headers (line 231) | def test_progress_completed_operation_headers(self, client): method test_progress_error_handling (line 245) | def test_progress_error_handling(self, client): method test_list_operations_error_handling (line 255) | def test_list_operations_error_handling(self, client): FILE: python/tests/test_rag_simple.py function mock_supabase (line 25) | def mock_supabase(): function rag_service (line 34) | def rag_service(mock_supabase): class TestRAGServiceCore (line 44) | class TestRAGServiceCore: method test_initialization (line 47) | def test_initialization(self, rag_service): method test_settings_methods (line 54) | def test_settings_methods(self, rag_service): class TestRAGServiceSearch (line 65) | class TestRAGServiceSearch: method test_basic_vector_search (line 69) | async def test_basic_vector_search(self, rag_service, mock_supabase): method test_search_documents_with_embedding (line 100) | async def test_search_documents_with_embedding(self, rag_service): method test_perform_rag_query_basic (line 120) | async def test_perform_rag_query_basic(self, rag_service): method test_search_code_examples_delegation (line 136) | async def test_search_code_examples_delegation(self, rag_service): class TestHybridSearchCore (line 149) | class TestHybridSearchCore: method hybrid_strategy (line 153) | def hybrid_strategy(self, mock_supabase): method test_initialization (line 161) | def test_initialization(self, hybrid_strategy): class TestRerankingCore (line 167) | class TestRerankingCore: method reranking_strategy (line 171) | def reranking_strategy(self): method test_initialization (line 177) | def test_initialization(self, reranking_strategy): method test_availability_check (line 183) | def test_availability_check(self, reranking_strategy): method test_rerank_with_no_model (line 189) | async def test_rerank_with_no_model(self, reranking_strategy): method test_rerank_with_mock_model (line 204) | async def test_rerank_with_mock_model(self, reranking_strategy): class TestAgenticRAGCore (line 233) | class TestAgenticRAGCore: method agentic_strategy (line 237) | def agentic_strategy(self, mock_supabase): method test_initialization (line 245) | def test_initialization(self, agentic_strategy): method test_query_enhancement (line 251) | def test_query_enhancement(self, agentic_strategy): class TestRAGIntegrationSimple (line 264) | class TestRAGIntegrationSimple: method test_error_handling (line 268) | async def test_error_handling(self, rag_service): method test_empty_results_handling (line 281) | async def test_empty_results_handling(self, rag_service): method test_full_rag_pipeline_with_reranking (line 295) | async def test_full_rag_pipeline_with_reranking(self, rag_service, moc... method test_hybrid_search_integration (line 337) | async def test_hybrid_search_integration(self, rag_service): method test_code_search_with_agentic_rag (line 369) | async def test_code_search_with_agentic_rag(self, rag_service): FILE: python/tests/test_rag_strategies.py class TestRAGService (line 42) | class TestRAGService: method mock_supabase_client (line 46) | def mock_supabase_client(self): method rag_service (line 51) | def rag_service(self, mock_supabase_client): method test_rag_service_initialization (line 57) | def test_rag_service_initialization(self, rag_service): method test_get_setting (line 64) | def test_get_setting(self, rag_service): method test_get_bool_setting (line 70) | def test_get_bool_setting(self, rag_service): method test_search_code_examples (line 77) | async def test_search_code_examples(self, rag_service): method test_perform_rag_query (line 101) | async def test_perform_rag_query(self, rag_service): method test_rerank_results (line 124) | async def test_rerank_results(self, rag_service): class TestHybridSearchStrategy (line 148) | class TestHybridSearchStrategy: method mock_supabase_client (line 152) | def mock_supabase_client(self): method hybrid_strategy (line 157) | def hybrid_strategy(self, mock_supabase_client): method test_hybrid_strategy_initialization (line 165) | def test_hybrid_strategy_initialization(self, hybrid_strategy): class TestRerankingStrategy (line 172) | class TestRerankingStrategy: method reranking_strategy (line 176) | def reranking_strategy(self): method test_reranking_strategy_initialization (line 182) | def test_reranking_strategy_initialization(self, reranking_strategy): method test_model_availability_check (line 188) | def test_model_availability_check(self, reranking_strategy): method test_rerank_results_no_model (line 195) | async def test_rerank_results_no_model(self, reranking_strategy): method test_rerank_results_with_model (line 210) | async def test_rerank_results_with_model(self, reranking_strategy): class TestAgenticRAGStrategy (line 235) | class TestAgenticRAGStrategy: method mock_supabase_client (line 239) | def mock_supabase_client(self): method agentic_strategy (line 244) | def agentic_strategy(self, mock_supabase_client): method test_agentic_strategy_initialization (line 252) | def test_agentic_strategy_initialization(self, agentic_strategy): class TestRAGIntegration (line 260) | class TestRAGIntegration: method mock_supabase_client (line 264) | def mock_supabase_client(self): method rag_service (line 269) | def rag_service(self, mock_supabase_client): method test_full_rag_pipeline (line 276) | async def test_full_rag_pipeline(self, rag_service): method test_error_handling_in_rag_pipeline (line 317) | async def test_error_handling_in_rag_pipeline(self, rag_service): method test_empty_results_handling (line 333) | async def test_empty_results_handling(self, rag_service): class TestRAGPerformance (line 354) | class TestRAGPerformance: method rag_service (line 358) | def rag_service(self): method test_concurrent_rag_queries (line 368) | async def test_concurrent_rag_queries(self, rag_service): method test_large_result_set_handling (line 402) | async def test_large_result_set_handling(self, rag_service): class TestRAGConfiguration (line 435) | class TestRAGConfiguration: method rag_service (line 439) | def rag_service(self): method test_environment_variable_settings (line 448) | def test_environment_variable_settings(self, rag_service): method test_default_settings (line 458) | def test_default_settings(self, rag_service): method test_strategy_conditional_execution (line 465) | async def test_strategy_conditional_execution(self, rag_service): FILE: python/tests/test_service_integration.py function test_project_with_tasks_flow (line 4) | def test_project_with_tasks_flow(client): function test_crawl_to_knowledge_flow (line 16) | def test_crawl_to_knowledge_flow(client): function test_document_storage_flow (line 24) | def test_document_storage_flow(client): function test_code_extraction_flow (line 32) | def test_code_extraction_flow(client): function test_search_and_retrieve_flow (line 40) | def test_search_and_retrieve_flow(client): function test_mcp_tool_execution (line 51) | def test_mcp_tool_execution(client): function test_progress_polling (line 57) | def test_progress_polling(client): function test_background_task_progress (line 68) | def test_background_task_progress(client): function test_database_operations (line 75) | def test_database_operations(client): function test_concurrent_operations (line 86) | def test_concurrent_operations(client): FILE: python/tests/test_settings_api.py function test_optional_setting_returns_default (line 9) | def test_optional_setting_returns_default(client, mock_supabase_client): function test_unknown_credential_returns_404 (line 27) | def test_unknown_credential_returns_404(client, mock_supabase_client): function test_existing_credential_returns_normally (line 42) | def test_existing_credential_returns_normally(client, mock_supabase_clie... FILE: python/tests/test_source_id_refactor.py class TestSourceIDGeneration (line 15) | class TestSourceIDGeneration: method test_unique_id_generation_basic (line 18) | def test_unique_id_generation_basic(self): method test_same_domain_different_ids (line 43) | def test_same_domain_different_ids(self): method test_id_consistency (line 59) | def test_id_consistency(self): method test_url_normalization (line 71) | def test_url_normalization(self): method test_concurrent_crawl_simulation (line 89) | def test_concurrent_crawl_simulation(self): method test_error_handling (line 115) | def test_error_handling(self): class TestDisplayNameExtraction (line 137) | class TestDisplayNameExtraction: method test_github_display_names (line 140) | def test_github_display_names(self): method test_documentation_display_names (line 156) | def test_documentation_display_names(self): method test_api_display_names (line 174) | def test_api_display_names(self): method test_generic_display_names (line 188) | def test_generic_display_names(self): method test_edge_case_display_names (line 203) | def test_edge_case_display_names(self): method test_special_file_display_names (line 220) | def test_special_file_display_names(self): method test_git_extension_removal (line 247) | def test_git_extension_removal(self): class TestRaceConditionFix (line 261) | class TestRaceConditionFix: method test_no_domain_conflicts (line 264) | def test_no_domain_conflicts(self): method test_hash_properties (line 288) | def test_hash_properties(self): class TestIntegration (line 305) | class TestIntegration: method test_full_source_creation_flow (line 308) | def test_full_source_creation_flow(self): method test_backward_compatibility (line 339) | def test_backward_compatibility(self): FILE: python/tests/test_source_race_condition.py class TestSourceRaceCondition (line 17) | class TestSourceRaceCondition: method test_concurrent_source_creation_no_race (line 20) | def test_concurrent_source_creation_no_race(self): method test_upsert_vs_insert_behavior (line 81) | def test_upsert_vs_insert_behavior(self): method test_existing_source_uses_upsert (line 122) | def test_existing_source_uses_upsert(self): method test_async_concurrent_creation (line 166) | async def test_async_concurrent_creation(self): method test_race_condition_with_delay (line 206) | def test_race_condition_with_delay(self): FILE: python/tests/test_source_url_shadowing.py class TestSourceUrlShadowing (line 14) | class TestSourceUrlShadowing: method test_source_url_not_shadowed (line 18) | async def test_source_url_not_shadowed(self): method test_metadata_uses_document_urls (line 90) | async def test_metadata_uses_document_urls(self): FILE: python/tests/test_supabase_validation.py function test_validate_anon_key (line 17) | def test_validate_anon_key(): function test_validate_service_key (line 29) | def test_validate_service_key(): function test_validate_unknown_key (line 41) | def test_validate_unknown_key(): function test_validate_invalid_jwt (line 54) | def test_validate_invalid_jwt(): function test_validate_empty_key (line 63) | def test_validate_empty_key(): function test_config_raises_on_anon_key (line 71) | def test_config_raises_on_anon_key(): function test_config_accepts_service_key (line 94) | def test_config_accepts_service_key(): function test_config_handles_invalid_jwt (line 114) | def test_config_handles_invalid_jwt(): function test_config_fails_on_unknown_role (line 131) | def test_config_fails_on_unknown_role(): function test_config_raises_on_anon_key_with_port (line 155) | def test_config_raises_on_anon_key_with_port(): function test_jwt_decoding_with_real_structure (line 178) | def test_jwt_decoding_with_real_structure(): FILE: python/tests/test_task_counts.py function test_batch_task_counts_endpoint_exists (line 7) | def test_batch_task_counts_endpoint_exists(client): function test_batch_task_counts_endpoint (line 19) | def test_batch_task_counts_endpoint(client, mock_supabase_client): function test_batch_task_counts_etag_caching (line 82) | def test_batch_task_counts_etag_caching(client, mock_supabase_client): FILE: python/tests/test_token_optimization.py class TestProjectServiceOptimization (line 15) | class TestProjectServiceOptimization: method test_list_projects_with_full_content (line 19) | def test_list_projects_with_full_content(self, mock_supabase): method test_list_projects_lightweight (line 67) | def test_list_projects_lightweight(self, mock_supabase): method test_token_reduction (line 122) | def test_token_reduction(self): class TestTaskServiceOptimization (line 160) | class TestTaskServiceOptimization: method test_list_tasks_with_large_fields (line 164) | def test_list_tasks_with_large_fields(self, mock_supabase): method test_list_tasks_exclude_large_fields (line 207) | def test_list_tasks_exclude_large_fields(self, mock_supabase): class TestDocumentServiceOptimization (line 254) | class TestDocumentServiceOptimization: method test_list_documents_metadata_only (line 258) | def test_list_documents_metadata_only(self, mock_supabase): method test_list_documents_with_content (line 298) | def test_list_documents_with_content(self, mock_supabase): class TestBackwardCompatibility (line 332) | class TestBackwardCompatibility: method test_api_defaults_preserve_behavior (line 335) | def test_api_defaults_preserve_behavior(self): FILE: python/tests/test_token_optimization_integration.py function measure_response_size (line 13) | async def measure_response_size(url: str, params: dict[str, Any] | None ... function test_projects_endpoint (line 31) | async def test_projects_endpoint(): function test_tasks_endpoint (line 67) | async def test_tasks_endpoint(): function test_documents_endpoint (line 95) | async def test_documents_endpoint(): function test_mcp_endpoints (line 134) | async def test_mcp_endpoints(): function main (line 154) | async def main(): FILE: python/tests/test_url_canonicalization.py class TestURLCanonicalization (line 12) | class TestURLCanonicalization: method test_trailing_slash_normalization (line 15) | def test_trailing_slash_normalization(self): method test_fragment_removal (line 38) | def test_fragment_removal(self): method test_tracking_param_removal (line 54) | def test_tracking_param_removal(self): method test_query_param_sorting (line 78) | def test_query_param_sorting(self): method test_default_port_removal (line 93) | def test_default_port_removal(self): method test_case_normalization (line 124) | def test_case_normalization(self): method test_complex_canonicalization (line 152) | def test_complex_canonicalization(self): method test_edge_cases (line 169) | def test_edge_cases(self): method test_preserves_important_params (line 191) | def test_preserves_important_params(self): method test_local_file_paths (line 210) | def test_local_file_paths(self): FILE: python/tests/test_url_handler.py class TestURLHandler (line 6) | class TestURLHandler: method test_is_binary_file_archives (line 9) | def test_is_binary_file_archives(self): method test_is_binary_file_executables (line 20) | def test_is_binary_file_executables(self): method test_is_binary_file_documents (line 30) | def test_is_binary_file_documents(self): method test_is_binary_file_media (line 39) | def test_is_binary_file_media(self): method test_is_binary_file_case_insensitive (line 54) | def test_is_binary_file_case_insensitive(self): method test_is_binary_file_with_query_params (line 62) | def test_is_binary_file_with_query_params(self): method test_is_binary_file_html_pages (line 70) | def test_is_binary_file_html_pages(self): method test_is_binary_file_edge_cases (line 82) | def test_is_binary_file_edge_cases(self): method test_is_sitemap (line 93) | def test_is_sitemap(self): method test_is_txt (line 102) | def test_is_txt(self): method test_transform_github_url (line 110) | def test_transform_github_url(self): method test_is_robots_txt (line 127) | def test_is_robots_txt(self): method test_is_llms_variant (line 154) | def test_is_llms_variant(self): method test_is_well_known_file (line 184) | def test_is_well_known_file(self): method test_get_base_url (line 211) | def test_get_base_url(self):