version: '1'
project:
  name: proxy
  repo: /home/tom/github/wronai/proxy
  language: python
  analyzed_at: '2026-03-24T19:41:37Z'
  tool: code2llm
  stats:
    files: 217
    lines: 58422
    functions: 2138
    classes: 208
health:
  cc_avg: 4.6
  critical_count: 208
  critical_limit: 10
  duplicates: 1
  cycles: 0
  alerts:
  - type: cc_exceeded
    target: TasksPanel
    value: 129
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: ProjectFormUnified
    value: 129
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: TicketDetailPanel
    value: 94
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: TicketDispatchTable
    value: 87
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: TicketsPanel
    value: 87
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: JobDetailsPanel
    value: 77
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: ToolHealthPanel
    value: 76
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: HumanTaskPanel
    value: 65
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: EnvironmentsPanel
    value: 59
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: ToolsPanel
    value: 57
    limit: 15
    severity: critical
  - type: high_fan_out
    target: TicketsPanel
    value: 56
    limit: 10
    severity: critical
  - type: cc_exceeded
    target: ToolsJobQueue
    value: 48
    limit: 15
    severity: critical
  - type: high_fan_out
    target: TasksPanel
    value: 46
    limit: 10
    severity: critical
  - type: high_fan_out
    target: useDashboardData
    value: 44
    limit: 10
    severity: critical
  - type: cc_exceeded
    target: TicketCard
    value: 42
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: TicketHistoryItem
    value: 42
    limit: 15
    severity: critical
  - type: high_fan_out
    target: EnvironmentsPanel
    value: 42
    limit: 10
    severity: critical
  - type: cc_exceeded
    target: DiagnosticsPanel
    value: 40
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: ToolHealthPanelRefactored
    value: 40
    limit: 15
    severity: critical
  - type: cc_exceeded
    target: TasksPanelRefactored
    value: 39
    limit: 15
    severity: critical
modules:
- path: src/proxym/dashboard/components/projects.jsx
  lines: 1070
  classes: 0
  methods: 72
  cc_max: 129
  inbound_deps: 0
  exports:
  - name: useProjects
    type: function
    cc: 5
    fan_out: 12
  - name: refresh
    type: function
    cc: 3
  - name: data
    type: function
    cc: 1
  - name: projectEvents
    type: function
    cc: 1
  - name: unsubscribe
    type: function
    cc: 1
  - name: body
    type: function
    cc: 3
  - name: detail
    type: function
    cc: 3
  - name: kind
    type: function
    cc: 3
  - name: path
    type: function
    cc: 3
  - name: current
    type: function
    cc: 1
  - name: MultiSelectSection
    type: function
    cc: 15
    flag: split
  - name: selectedSet
    type: function
    cc: 4
  - name: selectedItems
    type: function
    cc: 4
  - name: hasItems
    type: function
    cc: 4
  - name: listContent
    type: function
    cc: 4
  - name: value
    type: function
    cc: 9
  - name: checked
    type: function
    cc: 1
  - name: AssignmentBadge
    type: function
    cc: 1
  - name: TicketTable
    type: function
    cc: 26
    flag: split
    fan_out: 14
  - name: handleFieldChange
    type: function
    cc: 3
  - name: handleHoursChange
    type: function
    cc: 2
  - name: hours
    type: function
    cc: 19
    flag: split
  - name: isSaving
    type: function
    cc: 1
  - name: ProjectCard
    type: function
    cc: 28
    flag: split
    fan_out: 17
  - name: projectKey
    type: function
    cc: 3
  - name: assignedTools
    type: function
    cc: 3
  - name: assignedEnvironments
    type: function
    cc: 5
  - name: assignedLlms
    type: function
    cc: 5
  - name: assignedUsers
    type: function
    cc: 5
  - name: ticketCount
    type: function
    cc: 5
  - name: envCount
    type: function
    cc: 5
  - name: toolCount
    type: function
    cc: 5
  - name: llmCount
    type: function
    cc: 5
  - name: userCount
    type: function
    cc: 5
  - name: handleToggleTickets
    type: function
    cc: 3
  - name: handleDelete
    type: function
    cc: 3
  - name: handleEdit
    type: function
    cc: 2
  - name: ProjectFormUnified
    type: function
    cc: 129
    flag: split
    fan_out: 31
  - name: environmentOptionsSource
    type: function
    cc: 17
    flag: split
  - name: toolOptionsSource
    type: function
    cc: 17
    flag: split
  - name: modelOptionsSource
    type: function
    cc: 17
    flag: split
  - name: userOptionsSource
    type: function
    cc: 17
    flag: split
  - name: toolOptions
    type: function
    cc: 17
    flag: split
  - name: seen
    type: function
    cc: 13
  - name: modelOptions
    type: function
    cc: 23
    flag: split
  - name: userOptions
    type: function
    cc: 13
  - name: handleSave
    type: function
    cc: 9
  - name: resetForm
    type: function
    cc: 1
  - name: handleSwitchToCreate
    type: function
    cc: 2
  - name: handleSwitchToEdit
    type: function
    cc: 2
  - name: isEditMode
    type: function
    cc: 1
  - name: gradientClass
    type: function
    cc: 1
  - name: accentColor
    type: function
    cc: 1
  - name: idPrefix
    type: function
    cc: 1
  - name: ProjectsPanel
    type: function
    cc: 26
    flag: split
    fan_out: 26
  - name: isProjectTicketsView
    type: function
    cc: 1
  - name: loadProjectOptions
    type: function
    cc: 9
  - name: syncProjectUrl
    type: function
    cc: 4
  - name: url
    type: function
    cc: 2
  - name: handleSelectProject
    type: function
    cc: 1
  - name: handleEditProject
    type: function
    cc: 1
  - name: handleCancelEdit
    type: function
    cc: 1
  - name: handleProjectSaved
    type: function
    cc: 1
  - name: editingProject
    type: function
    cc: 6
  - name: stats
    type: function
    cc: 6
  - name: projectCountSuffix
    type: function
    cc: 2
- path: src/proxym/dashboard/components/tasks.jsx
  lines: 1697
  classes: 0
  methods: 110
  cc_max: 129
  inbound_deps: 0
  exports:
  - name: assignedToolName
    type: function
    cc: 1
  - name: TableExport
    type: function
    cc: 16
    flag: split
    fan_out: 23
  - name: convertToCSV
    type: function
    cc: 11
  - name: headers
    type: function
    cc: 9
  - name: csvHeaders
    type: function
    cc: 9
  - name: csvRows
    type: function
    cc: 9
  - name: value
    type: function
    cc: 3
  - name: downloadCSV
    type: function
    cc: 1
  - name: csv
    type: function
    cc: 1
  - name: blob
    type: function
    cc: 1
  - name: link
    type: function
    cc: 1
  - name: url
    type: function
    cc: 1
  - name: downloadJSON
    type: function
    cc: 1
  - name: json
    type: function
    cc: 1
  - name: copyToClipboard
    type: function
    cc: 2
  - name: button
    type: function
    cc: 1
  - name: originalText
    type: function
    cc: 1
  - name: useTasksData
    type: function
    cc: 16
    flag: split
    fan_out: 21
  - name: refresh
    type: function
    cc: 12
    fan_out: 12
  - name: timer
    type: function
    cc: 1
  - name: taskEvents
    type: function
    cc: 1
  - name: unsubscribe
    type: function
    cc: 1
  - name: TaskCardHeader
    type: function
    cc: 6
  - name: statusColor
    type: function
    cc: 1
  - name: priorityColor
    type: function
    cc: 1
  - name: typeIcon
    type: function
    cc: 1
  - name: TaskCardMeta
    type: function
    cc: 37
    flag: split
  - name: job
    type: function
    cc: 5
  - name: resultSuccess
    type: function
    cc: 6
  - name: resultLabel
    type: function
    cc: 7
  - name: isActiveJob
    type: function
    cc: 2
  - name: environment
    type: function
    cc: 2
  - name: TaskJobBadge
    type: function
    cc: 25
    flag: split
  - name: statusIcon
    type: function
    cc: 2
  - name: duration
    type: function
    cc: 2
  - name: filesChanged
    type: function
    cc: 6
  - name: hasOutput
    type: function
    cc: 6
  - name: TaskInlineLogs
    type: function
    cc: 12
  - name: j
    type: function
    cc: 1
  - name: TaskJobError
    type: function
    cc: 2
  - name: TaskJobResult
    type: function
    cc: 11
  - name: output
    type: function
    cc: 1
  - name: files
    type: function
    cc: 1
  - name: preview
    type: function
    cc: 1
  - name: TaskStatusActions
    type: function
    cc: 4
  - name: handleStatusChange
    type: function
    cc: 2
  - name: TicketDispatchButton
    type: function
    cc: 24
    flag: split
  - name: assignedTool
    type: function
    cc: 11
  - name: toolName
    type: function
    cc: 2
  - name: isActive
    type: function
    cc: 5
  - name: handleDispatch
    type: function
    cc: 11
  - name: label
    type: function
    cc: 1
  - name: TaskSelectionCheckbox
    type: function
    cc: 2
  - name: TaskBulkEditBar
    type: function
    cc: 30
    flag: split
    fan_out: 22
  - name: selectAllRef
    type: function
    cc: 2
  - name: visibleIds
    type: function
    cc: 3
  - name: selectedVisibleCount
    type: function
    cc: 2
  - name: allVisibleSelected
    type: function
    cc: 3
  - name: someVisibleSelected
    type: function
    cc: 2
  - name: toolOptions
    type: function
    cc: 2
  - name: seen
    type: function
    cc: 2
  - name: name
    type: function
    cc: 2
  - name: handleApply
    type: function
    cc: 13
  - name: count
    type: function
    cc: 8
  - name: TaskTicketCard
    type: function
    cc: 18
    flag: split
  - name: liveJob
    type: function
    cc: 5
  - name: isDone
    type: function
    cc: 5
  - name: isFailed
    type: function
    cc: 5
  - name: QueueBar
    type: function
    cc: 11
  - name: byStatus
    type: function
    cc: 2
  - name: lower
    type: function
    cc: 1
  - name: CreateMilestoneForm
    type: function
    cc: 2
  - name: handleSubmit
    type: function
    cc: 14
    fan_out: 14
  - name: field
    type: function
    cc: 1
  - name: CreateSprintForm
    type: function
    cc: 3
  - name: QuickTaskCreator
    type: function
    cc: 31
    flag: split
    fan_out: 27
  - name: availableSprints
    type: function
    cc: 4
  - name: priorityClassName
    type: function
    cc: 4
  - name: r
    type: function
    cc: 6
  - name: onKey
    type: function
    cc: 3
  - name: canSubmit
    type: function
    cc: 2
  - name: TasksPanel
    type: function
    cc: 129
    flag: split
    fan_out: 46
  - name: view
    type: function
    cc: 18
    flag: split
  - name: setView
    type: function
    cc: 18
    flag: split
  - name: filterStatus
    type: function
    cc: 18
    flag: split
  - name: setFilterStatus
    type: function
    cc: 18
    flag: split
  - name: filterAgent
    type: function
    cc: 18
    flag: split
  - name: setFilterAgent
    type: function
    cc: 18
    flag: split
  - name: searchQuery
    type: function
    cc: 18
    flag: split
  - name: setSearchQuery
    type: function
    cc: 18
    flag: split
  - name: filtered
    type: function
    cc: 18
    flag: split
  - name: result
    type: function
    cc: 15
    flag: split
  - name: q
    type: function
    cc: 1
  - name: boardColumns
    type: function
    cc: 2
  - name: handleStartStop
    type: function
    cc: 2
  - name: validIds
    type: function
    cc: 2
  - name: changed
    type: function
    cc: 2
  - name: next
    type: function
    cc: 1
  - name: toggleTicketSelection
    type: function
    cc: 2
  - name: toggleVisibleSelection
    type: function
    cc: 4
  - name: visibleSet
    type: function
    cc: 3
  - name: clearSelection
    type: function
    cc: 1
  - name: handleBulkUpdate
    type: function
    cc: 7
  - name: ids
    type: function
    cc: 1
  - name: toolPayload
    type: function
    cc: 2
- path: src/proxym/dashboard/components/tickets.jsx
  lines: 1473
  classes: 0
  methods: 89
  cc_max: 94
  inbound_deps: 0
  exports:
  - name: useTickets
    type: function
    cc: 11
    fan_out: 18
  - name: refreshTickets
    type: function
    cc: 3
  - name: data
    type: function
    cc: 1
  - name: refreshSprints
    type: function
    cc: 3
  - name: refreshMilestones
    type: function
    cc: 3
  - name: refreshTools
    type: function
    cc: 3
  - name: refresh
    type: function
    cc: 1
  - name: ticketEvents
    type: function
    cc: 1
  - name: unsubscribe
    type: function
    cc: 1
  - name: TicketCard
    type: function
    cc: 42
    flag: split
    fan_out: 17
  - name: assignedEnvironment
    type: function
    cc: 3
  - name: handleSprintChange
    type: function
    cc: 3
  - name: handleCardClick
    type: function
    cc: 1
  - name: handleCheckboxClick
    type: function
    cc: 2
  - name: handleStatusChange
    type: function
    cc: 1
  - name: handleAssign
    type: function
    cc: 1
  - name: CreateMilestoneForm
    type: function
    cc: 2
  - name: handleSubmit
    type: function
    cc: 2
  - name: field
    type: function
    cc: 1
  - name: CreateTicketForm
    type: function
    cc: 6
  - name: CreateSprintForm
    type: function
    cc: 3
  - name: SprintCard
    type: function
    cc: 19
    flag: split
  - name: handleMilestoneChange
    type: function
    cc: 3
  - name: MilestoneCard
    type: function
    cc: 10
  - name: headers
    type: function
    cc: 8
  - name: escape
    type: function
    cc: 8
  - name: stringValue
    type: function
    cc: 5
  - name: blob
    type: function
    cc: 1
  - name: url
    type: function
    cc: 1
  - name: link
    type: function
    cc: 1
  - name: TicketExportMenu
    type: function
    cc: 13
    fan_out: 15
  - name: queryString
    type: function
    cc: 6
  - name: params
    type: function
    cc: 5
  - name: fetchExport
    type: function
    cc: 3
  - name: downloadJSON
    type: function
    cc: 2
  - name: downloadCSV
    type: function
    cc: 3
  - name: csv
    type: function
    cc: 2
  - name: copyJSON
    type: function
    cc: 1
  - name: formatTimestamp
    type: function
    cc: 3
  - name: date
    type: function
    cc: 1
  - name: TicketHistoryItem
    type: function
    cc: 42
    flag: split
  - name: result
    type: function
    cc: 11
  - name: stdout
    type: function
    cc: 6
  - name: stderr
    type: function
    cc: 6
  - name: filesChanged
    type: function
    cc: 6
  - name: statusClass
    type: function
    cc: 6
  - name: success
    type: function
    cc: 6
  - name: execution
    type: function
    cc: 6
  - name: projectDir
    type: function
    cc: 1
  - name: promptExcerpt
    type: function
    cc: 1
  - name: promptLength
    type: function
    cc: 1
  - name: isActiveJob
    type: function
    cc: 1
  - name: resultLabel
    type: function
    cc: 1
  - name: TicketDetailPanel
    type: function
    cc: 94
    flag: split
  - name: jobHistory
    type: function
    cc: 9
  - name: latestJob
    type: function
    cc: 9
  - name: latestExecutionMetadata
    type: function
    cc: 9
  - name: latestProjectDir
    type: function
    cc: 2
  - name: latestPromptExcerpt
    type: function
    cc: 2
  - name: latestPromptLength
    type: function
    cc: 2
  - name: latestSuccess
    type: function
    cc: 2
  - name: latestExitCode
    type: function
    cc: 2
  - name: latestStdoutLines
    type: function
    cc: 2
  - name: latestStderrLines
    type: function
    cc: 2
  - name: latestFilesChanged
    type: function
    cc: 2
  - name: latestIsActiveJob
    type: function
    cc: 2
  - name: latestResultLabel
    type: function
    cc: 2
  - name: TicketsPanel
    type: function
    cc: 87
    flag: split
    fan_out: 56
  - name: loadSelectedTicket
    type: function
    cc: 5
  - name: handleRefresh
    type: function
    cc: 2
  - name: toggleTicketSelection
    type: function
    cc: 2
  - name: newSet
    type: function
    cc: 2
  - name: selectAllTickets
    type: function
    cc: 1
  - name: clearSelection
    type: function
    cc: 1
  - name: bulkUpdateStatus
    type: function
    cc: 5
  - name: ids
    type: function
    cc: 2
  - name: bulkAssignTool
    type: function
    cc: 5
  - name: bulkDeleteTickets
    type: function
    cc: 6
    fan_out: 10
  - name: visibleSprints
    type: function
    cc: 2
  - name: filtered
    type: function
    cc: 31
    flag: split
  - name: q
    type: function
    cc: 1
  - name: comparison
    type: function
    cc: 14
  - name: boardColumns
    type: function
    cc: 2
  - name: stats
    type: function
    cc: 3
  - name: count
    type: function
    cc: 1
  - name: selectedTicketSummary
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tools.jsx
  lines: 1586
  classes: 0
  methods: 112
  cc_max: 87
  inbound_deps: 0
  exports:
  - name: TableExport
    type: function
    cc: 16
    flag: split
    fan_out: 23
  - name: convertToCSV
    type: function
    cc: 11
  - name: headers
    type: function
    cc: 9
  - name: csvHeaders
    type: function
    cc: 9
  - name: csvRows
    type: function
    cc: 9
  - name: value
    type: function
    cc: 3
  - name: downloadCSV
    type: function
    cc: 1
  - name: csv
    type: function
    cc: 1
  - name: blob
    type: function
    cc: 1
  - name: link
    type: function
    cc: 1
  - name: url
    type: function
    cc: 1
  - name: downloadJSON
    type: function
    cc: 1
  - name: json
    type: function
    cc: 1
  - name: copyToClipboard
    type: function
    cc: 2
  - name: button
    type: function
    cc: 1
  - name: originalText
    type: function
    cc: 1
  - name: useTools
    type: function
    cc: 7
    fan_out: 15
  - name: refreshTools
    type: function
    cc: 3
  - name: data
    type: function
    cc: 1
  - name: refreshQueue
    type: function
    cc: 3
  - name: refresh
    type: function
    cc: 1
  - name: toolEvents
    type: function
    cc: 1
  - name: unsubscribe
    type: function
    cc: 1
  - name: ToolCard
    type: function
    cc: 26
    flag: split
  - name: catClass
    type: function
    cc: 1
  - name: handleCardClick
    type: function
    cc: 1
  - name: handleModelChange
    type: function
    cc: 2
  - name: newModel
    type: function
    cc: 1
  - name: JobRow
    type: function
    cc: 35
    flag: split
  - name: statusClass
    type: function
    cc: 1
  - name: hasLogs
    type: function
    cc: 2
  - name: isFailed
    type: function
    cc: 1
  - name: JobDetailsPanel
    type: function
    cc: 77
    flag: split
  - name: result
    type: function
    cc: 1
  - name: stdout
    type: function
    cc: 1
  - name: stderr
    type: function
    cc: 1
  - name: filesChanged
    type: function
    cc: 1
  - name: ticketTitle
    type: function
    cc: 1
  - name: ticketStatus
    type: function
    cc: 1
  - name: execution
    type: function
    cc: 5
  - name: promptExcerpt
    type: function
    cc: 5
  - name: projectDir
    type: function
    cc: 1
  - name: resultSuccess
    type: function
    cc: 5
  - name: isActiveJob
    type: function
    cc: 5
  - name: stdoutLines
    type: function
    cc: 1
  - name: stderrLines
    type: function
    cc: 1
  - name: TicketDispatchTable
    type: function
    cc: 87
    flag: split
    fan_out: 27
  - name: availableTools
    type: function
    cc: 6
  - name: unavailableTools
    type: function
    cc: 6
  - name: dispatchableTickets
    type: function
    cc: 6
  - name: loadTickets
    type: function
    cc: 4
  - name: loadProjects
    type: function
    cc: 3
  - name: handleToolSelect
    type: function
    cc: 3
  - name: getStatusBadgeClass
    type: function
    cc: 4
  - name: getPriorityBadgeClass
    type: function
    cc: 3
  - name: getToolCategoryClass
    type: function
    cc: 4
  - name: getProjectInfo
    type: function
    cc: 7
  - name: project
    type: function
    cc: 2
  - name: path
    type: function
    cc: 2
  - name: renderCurrentTool
    type: function
    cc: 20
    flag: split
  - name: environmentName
    type: function
    cc: 1
  - name: environmentTarget
    type: function
    cc: 1
  - name: renderStatusBadge
    type: function
    cc: 3
  - name: displayStatus
    type: function
    cc: 1
  - name: renderPriorityBadge
    type: function
    cc: 2
  - name: priorityClass
    type: function
    cc: 1
  - name: displayPriority
    type: function
    cc: 1
  - name: currentTool
    type: function
    cc: 1
  - name: toolInfo
    type: function
    cc: 1
  - name: projectInfo
    type: function
    cc: 1
  - name: QueueSummary
    type: function
    cc: 9
  - name: HealthTrends
    type: function
    cc: 15
    flag: split
    fan_out: 11
  - name: metrics
    type: function
    cc: 7
  - name: now
    type: function
    cc: 6
  - name: oneHourAgo
    type: function
    cc: 6
  - name: oneDayAgo
    type: function
    cc: 6
  - name: recentChecks
    type: function
    cc: 6
  - name: dayChecks
    type: function
    cc: 6
  - name: toolHistory
    type: function
    cc: 6
  - name: statuses
    type: function
    cc: 1
  - name: wasOk
    type: function
    cc: 1
  - name: nowDegraded
    type: function
    cc: 1
  - name: PredictiveAlerts
    type: function
    cc: 14
  - name: alerts
    type: function
    cc: 9
  - name: queuedJobs
    type: function
    cc: 2
  - name: failingTools
    type: function
    cc: 2
  - name: stuckJobs
    type: function
    cc: 2
  - name: ToolHealthPanel
    type: function
    cc: 76
    flag: split
    fan_out: 26
  - name: loadHealth
    type: function
    cc: 7
  - name: handleProviderChange
    type: function
    cc: 2
  - name: handleAutoFix
    type: function
    cc: 6
  - name: action
    type: function
    cc: 1
  - name: handleBulkAutoFix
    type: function
    cc: 8
  - name: executed
    type: function
    cc: 1
  - name: humanRequired
    type: function
    cc: 1
  - name: failed
    type: function
    cc: 1
  - name: isAutoFixable
    type: function
    cc: 2
  - name: requiresHuman
    type: function
    cc: 2
  - name: summary
    type: function
    cc: 7
  - name: tools
    type: function
    cc: 7
  - name: degradedCount
    type: function
    cc: 1
  - name: isHuman
    type: function
    cc: 1
  - name: isFixing
    type: function
    cc: 1
  - name: providerIsConfigured
    type: function
    cc: 1
  - name: ToolsPanel
    type: function
    cc: 57
    flag: split
    fan_out: 20
  - name: handleStartStop
    type: function
    cc: 2
  - name: handleRetryJob
    type: function
    cc: 4
  - name: handleRepairJob
    type: function
    cc: 5
  - name: details
    type: function
    cc: 1
  - name: handleSelectJob
    type: function
    cc: 4
  - name: available
    type: function
    cc: 1
  - name: unavailable
    type: function
    cc: 1
- path: src/proxym/dashboard/components/human.jsx
  lines: 366
  classes: 0
  methods: 18
  cc_max: 65
  inbound_deps: 0
  exports:
  - name: useState
    type: function
    cc: 3
  - name: useCallback
    type: function
    cc: 3
  - name: useEffect
    type: function
    cc: 3
  - name: useMemo
    type: function
    cc: 3
  - name: useHumanTasks
    type: function
    cc: 18
    flag: split
    fan_out: 18
  - name: refresh
    type: function
    cc: 12
    fan_out: 13
  - name: allTickets
    type: function
    cc: 2
  - name: createTask
    type: function
    cc: 4
  - name: result
    type: function
    cc: 3
  - name: completeTask
    type: function
    cc: 3
  - name: addComment
    type: function
    cc: 2
  - name: HumanTaskPanel
    type: function
    cc: 65
    flag: split
    fan_out: 19
  - name: filtered
    type: function
    cc: 2
  - name: boardColumns
    type: function
    cc: 2
  - name: humanJobs
    type: function
    cc: 2
  - name: stats
    type: function
    cc: 2
  - name: handleStartStop
    type: function
    cc: 2
- path: src/proxym/dashboard/components/environments.jsx
  lines: 611
  classes: 0
  methods: 30
  cc_max: 59
  inbound_deps: 0
  exports:
  - name: useState
    type: function
    cc: 1
  - name: useEffect
    type: function
    cc: 1
  - name: useMemo
    type: function
    cc: 1
  - name: useCallback
    type: function
    cc: 1
  - name: instances
    type: function
    cc: 2
  - name: EnvironmentsPanel
    type: function
    cc: 59
    flag: split
    fan_out: 42
  - name: environmentMap
    type: function
    cc: 8
  - name: refresh
    type: function
    cc: 8
  - name: resetForm
    type: function
    cc: 1
  - name: handleSubmit
    type: function
    cc: 4
  - name: payload
    type: function
    cc: 2
  - name: handleEdit
    type: function
    cc: 1
  - name: handleDelete
    type: function
    cc: 6
    fan_out: 10
  - name: response
    type: function
    cc: 1
  - name: handleToolAssign
    type: function
    cc: 5
  - name: countsByKind
    type: function
    cc: 2
  - name: assignedToolCount
    type: function
    cc: 2
  - name: assignedInstanceCount
    type: function
    cc: 2
  - name: currentEnvironmentId
    type: function
    cc: 1
  - name: currentEnvironment
    type: function
    cc: 1
  - name: currentInstanceName
    type: function
    cc: 1
  - name: toolInstances
    type: function
    cc: 1
  - name: toolInstanceOptions
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tools/ToolsJobQueue.jsx
  lines: 164
  classes: 0
  methods: 8
  cc_max: 48
  inbound_deps: 0
  exports:
  - name: ToolsJobQueue
    type: function
    cc: 48
    flag: split
    fan_out: 16
  - name: handleStartStop
    type: function
    cc: 2
  - name: handleRetryJob
    type: function
    cc: 2
  - name: handleRepairJob
    type: function
    cc: 5
  - name: data
    type: function
    cc: 1
  - name: details
    type: function
    cc: 1
  - name: handleSelectJob
    type: function
    cc: 4
  - name: handleCloseJobDetails
    type: function
    cc: 1
- path: src/proxym/dashboard/components/diagnostics.jsx
  lines: 208
  classes: 0
  methods: 9
  cc_max: 40
  inbound_deps: 0
  exports:
  - name: DiagnosticsPanel
    type: function
    cc: 40
    flag: split
    fan_out: 30
  - name: runTests
    type: function
    cc: 3
  - name: r
    type: function
    cc: 1
  - name: loadToolReadiness
    type: function
    cc: 3
  - name: find
    type: function
    cc: 7
  - name: copyErrorsToClipboard
    type: function
    cc: 7
  - name: failedTests
    type: function
    cc: 5
  - name: lines
    type: function
    cc: 4
  - name: issues
    type: function
    cc: 3
- path: src/proxym/dashboard/components/tools/ToolHealthPanelRefactored.jsx
  lines: 197
  classes: 0
  methods: 16
  cc_max: 40
  inbound_deps: 0
  exports:
  - name: ToolHealthPanelRefactored
    type: function
    cc: 40
    flag: split
    fan_out: 27
  - name: loadReadiness
    type: function
    cc: 6
  - name: data
    type: function
    cc: 3
  - name: loadHealth
    type: function
    cc: 7
  - name: events
    type: function
    cc: 1
  - name: handleProviderChange
    type: function
    cc: 2
  - name: handleAutoFix
    type: function
    cc: 6
  - name: action
    type: function
    cc: 1
  - name: result
    type: function
    cc: 1
  - name: handleBulkAutoFix
    type: function
    cc: 8
  - name: executed
    type: function
    cc: 1
  - name: humanRequired
    type: function
    cc: 1
  - name: failed
    type: function
    cc: 1
  - name: summary
    type: function
    cc: 2
  - name: tools
    type: function
    cc: 2
  - name: degradedCount
    type: function
    cc: 2
- path: src/proxym/dashboard/components/tasks/TasksPanelRefactored.jsx
  lines: 136
  classes: 0
  methods: 16
  cc_max: 39
  inbound_deps: 0
  exports:
  - name: TasksPanelRefactored
    type: function
    cc: 39
    flag: split
    fan_out: 16
  - name: view
    type: function
    cc: 23
    flag: split
  - name: setView
    type: function
    cc: 23
    flag: split
  - name: filterStatus
    type: function
    cc: 23
    flag: split
  - name: setFilterStatus
    type: function
    cc: 23
    flag: split
  - name: filterAgent
    type: function
    cc: 23
    flag: split
  - name: setFilterAgent
    type: function
    cc: 23
    flag: split
  - name: searchQuery
    type: function
    cc: 23
    flag: split
  - name: setSearchQuery
    type: function
    cc: 23
    flag: split
  - name: filtered
    type: function
    cc: 23
    flag: split
  - name: result
    type: function
    cc: 16
    flag: split
  - name: q
    type: function
    cc: 1
  - name: boardColumns
    type: function
    cc: 2
  - name: handleStartStop
    type: function
    cc: 2
  - name: handleViewChange
    type: function
    cc: 1
  - name: handleFilterChange
    type: function
    cc: 1
- path: src/proxym/dashboard/components/human/HumanJobsList.jsx
  lines: 81
  classes: 0
  methods: 1
  cc_max: 37
  inbound_deps: 0
  exports:
  - name: HumanJobsList
    type: function
    cc: 37
    flag: split
- path: src/proxym/dashboard/components/tasks/TasksRecentJobs.jsx
  lines: 81
  classes: 0
  methods: 1
  cc_max: 37
  inbound_deps: 0
  exports:
  - name: TasksRecentJobs
    type: function
    cc: 37
    flag: split
- path: src/proxym/dashboard/components/setup.jsx
  lines: 649
  classes: 0
  methods: 33
  cc_max: 36
  inbound_deps: 0
  exports:
  - name: useState
    type: function
    cc: 1
  - name: useEffect
    type: function
    cc: 1
  - name: useCallback
    type: function
    cc: 1
  - name: useMemo
    type: function
    cc: 1
  - name: EMPTY_COMPLETED
    type: function
    cc: 1
  - name: SETUP_EVENT_TYPES
    type: function
    cc: 1
  - name: completed
    type: function
    cc: 6
  - name: config
    type: function
    cc: 2
  - name: SetupPanel
    type: function
    cc: 36
    flag: split
    fan_out: 36
  - name: applySnapshot
    type: function
    cc: 3
  - name: refreshSetupState
    type: function
    cc: 3
  - name: data
    type: function
    cc: 1
  - name: unsubscribe
    type: function
    cc: 1
  - name: handleToggleStep
    type: function
    cc: 3
  - name: handleResetChecklist
    type: function
    cc: 3
  - name: checkedCount
    type: function
    cc: 1
  - name: autoCount
    type: function
    cc: 1
  - name: manualCount
    type: function
    cc: 1
  - name: rootCount
    type: function
    cc: 1
  - name: setField
    type: function
    cc: 1
  - name: setSecretField
    type: function
    cc: 1
  - name: copyText
    type: function
    cc: 2
  - name: copyAllCommands
    type: function
    cc: 4
  - name: text
    type: function
    cc: 1
  - name: envSnippet
    type: function
    cc: 5
  - name: oneLineSummary
    type: function
    cc: 5
  - name: lastUpdatedLabel
    type: function
    cc: 5
  - name: hasCommands
    type: function
    cc: 3
  - name: hasSudoCommands
    type: function
    cc: 3
- path: src/proxym/dashboard/components/vms.jsx
  lines: 305
  classes: 0
  methods: 33
  cc_max: 36
  inbound_deps: 27
  exports:
  - name: useVMSort
    type: function
    cc: 4
  - name: sorted
    type: function
    cc: 4
  - name: cmp
    type: function
    cc: 2
  - name: r
    type: function
    cc: 1
  - name: useVMSelection
    type: function
    cc: 12
    fan_out: 11
  - name: handleSelect
    type: function
    cc: 2
  - name: next
    type: function
    cc: 1
  - name: handleSelectAll
    type: function
    cc: 5
  - name: handleBulkAction
    type: function
    cc: 5
  - name: vmIds
    type: function
    cc: 5
  - name: VMCard
    type: function
    cc: 10
  - name: actions
    type: function
    cc: 1
  - name: VMsPanel
    type: function
    cc: 36
    flag: split
    fan_out: 22
  - name: sel
    type: function
    cc: 3
  - name: fetchTools
    type: function
    cc: 3
  - name: data
    type: function
    cc: 1
  - name: detail
    type: function
    cc: 1
  - name: handleAction
    type: function
    cc: 7
  - name: isDelete
    type: function
    cc: 2
  - name: endpoint
    type: function
    cc: 2
  - name: res
    type: function
    cc: 1
  - name: msg
    type: function
    cc: 1
  - name: label
    type: function
    cc: 2
  - name: handleToolAssign
    type: function
    cc: 3
  - name: runningCount
    type: function
    cc: 3
  - name: stoppedCount
    type: function
    cc: 3
  - name: pausedCount
    type: function
    cc: 3
- path: src/proxym/dashboard/components/logs.jsx
  lines: 158
  classes: 0
  methods: 9
  cc_max: 34
  inbound_deps: 0
  exports:
  - name: useLogFilter
    type: function
    cc: 8
  - name: filtered
    type: function
    cc: 1
  - name: errorCount
    type: function
    cc: 1
  - name: warnCount
    type: function
    cc: 1
  - name: LogRow
    type: function
    cc: 2
  - name: LogPanel
    type: function
    cc: 34
    flag: split
    fan_out: 19
  - name: handleCopy
    type: function
    cc: 9
    fan_out: 12
  - name: text
    type: function
    cc: 4
  - name: ta
    type: function
    cc: 2
- path: src/proxym/dashboard/components/tickets/TicketsPanelRefactored.jsx
  lines: 217
  classes: 0
  methods: 23
  cc_max: 31
  inbound_deps: 0
  exports:
  - name: useTicketFilters
    type: function
    cc: 31
    flag: split
  - name: result
    type: function
    cc: 11
  - name: q
    type: function
    cc: 1
  - name: comparison
    type: function
    cc: 14
  - name: useTicketStats
    type: function
    cc: 3
  - name: count
    type: function
    cc: 1
  - name: useTicketsData
    type: function
    cc: 7
    fan_out: 13
  - name: refreshTickets
    type: function
    cc: 3
  - name: data
    type: function
    cc: 1
  - name: refreshSprints
    type: function
    cc: 3
  - name: refreshMilestones
    type: function
    cc: 3
  - name: refresh
    type: function
    cc: 1
  - name: TicketsPanelRefactored
    type: function
    cc: 10
    fan_out: 12
  - name: filterStatus
    type: function
    cc: 3
  - name: setFilterStatus
    type: function
    cc: 3
  - name: searchQuery
    type: function
    cc: 3
  - name: setSearchQuery
    type: function
    cc: 3
  - name: filtered
    type: function
    cc: 3
  - name: stats
    type: function
    cc: 3
  - name: handleRefresh
    type: function
    cc: 3
  - name: toggleTicketSelection
    type: function
    cc: 2
  - name: newSet
    type: function
    cc: 2
  - name: visibleSprints
    type: function
    cc: 2
- path: src/proxym/dashboard/components/diagnostics/DiagConfig.jsx
  lines: 59
  classes: 0
  methods: 4
  cc_max: 29
  inbound_deps: 0
  exports:
  - name: DiagRooConfig
    type: function
    cc: 29
    flag: split
  - name: ok
    type: function
    cc: 1
  - name: badge
    type: function
    cc: 1
  - name: DiagProviders
    type: function
    cc: 10
- path: src/proxym/dashboard/components/shared/EditableTicketTable.jsx
  lines: 210
  classes: 0
  methods: 9
  cc_max: 29
  inbound_deps: 0
  exports:
  - name: EditableTicketTable
    type: function
    cc: 29
    flag: split
    fan_out: 15
  - name: cardTitle
    type: function
    cc: 2
  - name: editable
    type: function
    cc: 2
  - name: handleStatusChange
    type: function
    cc: 2
  - name: handlePriorityChange
    type: function
    cc: 2
  - name: handleToolChange
    type: function
    cc: 3
  - name: handleProjectChange
    type: function
    cc: 3
  - name: colCount
    type: function
    cc: 1
  - name: isSelected
    type: function
    cc: 1
- path: src/proxym/domain/handlers/project_handler.py
  lines: 362
  classes: 2
  methods: 12
  cc_max: 28
  inbound_deps: 1
  exports:
  - name: ProjectCommandHandler
    type: class
    cc_avg: 4.3
    methods:
    - name: _handle_add
      cc: 11
      fan_out: 15
  - name: ProjectQueryHandler
    type: class
    cc_avg: 3.6
  - name: enrich_project
    type: function
    cc: 28
    flag: split
    fan_out: 19
- path: src/proxym/tools/executor.py
  lines: 426
  classes: 3
  methods: 18
  cc_max: 25
  inbound_deps: 0
  exports:
  - name: JobStatus
    type: class
    cc_avg: 0.0
  - name: ToolJob
    type: class
    cc_avg: 4.0
  - name: ToolExecutor
    type: class
    cc_avg: 5.5
    methods:
    - name: _load_jobs
      cc: 12
      fan_out: 11
    - name: _persist_job
      cc: 9
      fan_out: 11
    - name: _execute_job
      cc: 8
      fan_out: 10
    - name: _sync_ticket_execution
      cc: 25
      flag: split
      fan_out: 20
- path: src/proxym/dashboard/components/users.jsx
  lines: 457
  classes: 0
  methods: 21
  cc_max: 24
  inbound_deps: 0
  exports:
  - name: useRef
    type: function
    cc: 12
    fan_out: 14
  - name: USER_EVENT_TYPES
    type: function
    cc: 12
    fan_out: 14
  - name: useUsers
    type: function
    cc: 12
    fan_out: 14
  - name: refreshUsers
    type: function
    cc: 8
  - name: data
    type: function
    cc: 2
  - name: syncGitUsers
    type: function
    cc: 2
  - name: createUser
    type: function
    cc: 2
  - name: setDefaultUser
    type: function
    cc: 2
  - name: unsubscribe
    type: function
    cc: 1
  - name: UserCard
    type: function
    cc: 11
  - name: roleClass
    type: function
    cc: 1
  - name: CreateUserForm
    type: function
    cc: 5
  - name: handleSubmit
    type: function
    cc: 4
  - name: field
    type: function
    cc: 1
  - name: UsersPanel
    type: function
    cc: 24
    flag: split
    fan_out: 13
  - name: handleSetDefault
    type: function
    cc: 4
  - name: handleCreate
    type: function
    cc: 4
  - name: handleSyncGit
    type: function
    cc: 6
  - name: result
    type: function
    cc: 3
  - name: activeUsers
    type: function
    cc: 1
  - name: defaultUserId
    type: function
    cc: 1
- path: src/proxym/dashboard/components/voice.jsx
  lines: 245
  classes: 0
  methods: 25
  cc_max: 24
  inbound_deps: 0
  exports:
  - name: VoiceHeader
    type: function
    cc: 3
    fan_out: 10
  - name: h
    type: function
    cc: 3
  - name: VoiceBubbles
    type: function
    cc: 4
  - name: VoiceCommands
    type: function
    cc: 1
  - name: VoiceHistoryBox
    type: function
    cc: 4
  - name: u
    type: function
    cc: 1
  - name: SR
    type: function
    cc: 1
  - name: r
    type: function
    cc: 2
  - name: VoiceChat
    type: function
    cc: 24
    flag: split
    fan_out: 31
  - name: recRef
    type: function
    cc: 3
  - name: abortRef
    type: function
    cc: 3
  - name: finish
    type: function
    cc: 3
  - name: handleInput
    type: function
    cc: 5
  - name: ctrl
    type: function
    cc: 4
  - name: reply
    type: function
    cc: 1
  - name: startListening
    type: function
    cc: 8
    fan_out: 13
  - name: text
    type: function
    cc: 2
  - name: stopAll
    type: function
    cc: 4
  - name: onKey
    type: function
    cc: 4
  - name: sc
    type: function
    cc: 1
  - name: label
    type: function
    cc: 1
- path: src/proxym/dashboard/hooks/useDashboardData.js
  lines: 399
  classes: 0
  methods: 67
  cc_max: 24
  inbound_deps: 0
  exports:
  - name: useHealth
    type: function
    cc: 1
  - name: refresh
    type: function
    cc: 2
  - name: h
    type: function
    cc: 1
  - name: useBudget
    type: function
    cc: 1
  - name: useModels
    type: function
    cc: 3
  - name: m
    type: function
    cc: 1
  - name: useProviders
    type: function
    cc: 3
  - name: p
    type: function
    cc: 1
  - name: useResources
    type: function
    cc: 5
  - name: useLogs
    type: function
    cc: 8
  - name: l
    type: function
    cc: 2
  - name: normalizeDashboardTheme
    type: function
    cc: 4
  - name: getInitialDashboardTheme
    type: function
    cc: 4
  - name: prefersDark
    type: function
    cc: 1
  - name: applyDashboardTheme
    type: function
    cc: 4
  - name: normalizedTheme
    type: function
    cc: 3
  - name: root
    type: function
    cc: 3
  - name: getUrlParams
    type: function
    cc: 10
  - name: params
    type: function
    cc: 1
  - name: DASHBOARD_VALID_TABS
    type: function
    cc: 4
  - name: normalizeDashboardTab
    type: function
    cc: 4
  - name: normalized
    type: function
    cc: 1
  - name: normalizeDashboardAction
    type: function
    cc: 5
  - name: normalizeDashboardContext
    type: function
    cc: 4
  - name: updateUrlParams
    type: function
    cc: 2
  - name: url
    type: function
    cc: 2
  - name: useDashboardData
    type: function
    cc: 24
    flag: split
    fan_out: 44
  - name: getInitialRoute
    type: function
    cc: 1
  - name: hash
    type: function
    cc: 1
  - name: tab
    type: function
    cc: 1
  - name: initialRoute
    type: function
    cc: 1
  - name: urlParams
    type: function
    cc: 1
  - name: canonicalizedUrlRef
    type: function
    cc: 1
  - name: stateRef
    type: function
    cc: 1
  - name: toggleTheme
    type: function
    cc: 2
  - name: currentUrl
    type: function
    cc: 1
  - name: currentHash
    type: function
    cc: 1
  - name: currentAction
    type: function
    cc: 1
  - name: currentContext
    type: function
    cc: 1
  - name: legacyTaskRoute
    type: function
    cc: 1
  - name: canonicalTab
    type: function
    cc: 1
  - name: canonicalAction
    type: function
    cc: 1
  - name: canonicalContext
    type: function
    cc: 1
  - name: setTab
    type: function
    cc: 1
    fan_out: 10
  - name: normalizedTab
    type: function
    cc: 1
  - name: setSelectedProjectWithUrl
    type: function
    cc: 1
  - name: setSelectedTicketWithUrl
    type: function
    cc: 1
  - name: setSelectedToolWithUrl
    type: function
    cc: 1
  - name: setViewModeWithUrl
    type: function
    cc: 1
  - name: setContextWithUrl
    type: function
    cc: 1
  - name: setFilterStatusWithUrl
    type: function
    cc: 1
  - name: setFilterAgentWithUrl
    type: function
    cc: 1
  - name: setSearchQueryWithUrl
    type: function
    cc: 1
  - name: handleHashChange
    type: function
    cc: 2
  - name: newTab
    type: function
    cc: 1
  - name: handlePopState
    type: function
    cc: 5
    fan_out: 13
  - name: healthHook
    type: function
    cc: 2
  - name: budgetHook
    type: function
    cc: 2
  - name: modelsHook
    type: function
    cc: 2
  - name: providersHook
    type: function
    cc: 2
  - name: resourcesHook
    type: function
    cc: 2
  - name: logsHook
    type: function
    cc: 2
  - name: isUp
    type: function
    cc: 2
  - name: i
    type: function
    cc: 1
- path: src/proxym/dashboard/tickets/_manager.py
  lines: 464
  classes: 1
  methods: 34
  cc_max: 22
  inbound_deps: 0
  exports:
  - name: TicketManager
    type: class
    cc_avg: 4.8
    methods:
    - name: _apply_filters
      cc: 22
      flag: split
    - name: update_ticket
      cc: 18
      flag: split
      fan_out: 12
    - name: find_duplicates
      cc: 11
      fan_out: 15
    - name: _load
      cc: 18
      flag: split
      fan_out: 15
- path: htmlcov/coverage_html_cb_dd2e7eb5.js
  lines: 735
  classes: 0
  methods: 65
  cc_max: 21
  inbound_deps: 0
  exports:
  - name: debounce
    type: function
    cc: 1
  - name: timeoutId
    type: function
    cc: 1
  - name: checkVisible
    type: function
    cc: 2
  - name: rect
    type: function
    cc: 1
  - name: viewBottom
    type: function
    cc: 1
  - name: viewTop
    type: function
    cc: 1
  - name: on_click
    type: function
    cc: 2
  - name: elt
    type: function
    cc: 2
  - name: getCellValue
    type: function
    cc: 6
  - name: cell
    type: function
    cc: 2
  - name: child
    type: function
    cc: 2
  - name: rowComparator
    type: function
    cc: 3
  - name: valueA
    type: function
    cc: 3
  - name: valueB
    type: function
    cc: 3
  - name: sortColumn
    type: function
    cc: 11
    fan_out: 15
  - name: currentSortOrder
    type: function
    cc: 3
  - name: current_direction
    type: function
    cc: 2
  - name: stored_list
    type: function
    cc: 2
  - name: saved_filter_value
    type: function
    cc: 2
  - name: saved_hide100_value
    type: function
    cc: 2
  - name: table
    type: function
    cc: 21
    flag: split
    fan_out: 15
  - name: table_body_rows
    type: function
    cc: 21
    flag: split
    fan_out: 15
  - name: no_rows
    type: function
    cc: 21
    flag: split
    fan_out: 15
  - name: footer
    type: function
    cc: 21
    flag: split
    fan_out: 15
  - name: ratio_columns
    type: function
    cc: 21
    flag: split
    fan_out: 15
  - name: filter_handler
    type: function
    cc: 21
    flag: split
    fan_out: 15
  - name: totals
    type: function
    cc: 2
  - name: text
    type: function
    cc: 12
  - name: casefold
    type: function
    cc: 12
  - name: hide100
    type: function
    cc: 12
  - name: show
    type: function
    cc: 5
  - name: celltext
    type: function
    cc: 2
  - name: places
    type: function
    cc: 1
  - name: by_region
    type: function
    cc: 2
  - name: sorted_by_region
    type: function
    cc: 2
  - name: frag
    type: function
    cc: 3
  - name: btn
    type: function
    cc: 3
  - name: category
    type: function
    cc: 2
  - name: helpCheck
    type: function
    cc: 1
  - name: classes
    type: function
    cc: 2
  - name: match
    type: function
    cc: 2
  - name: c
    type: function
    cc: 2
  - name: probe
    type: function
    cc: 4
  - name: begin
    type: function
    cc: 2
  - name: next_indicator
    type: function
    cc: 2
  - name: probe_line
    type: function
    cc: 2
  - name: chunk_indicator
    type: function
    cc: 4
  - name: end
    type: function
    cc: 1
  - name: prev_indicator
    type: function
    cc: 3
  - name: line
    type: function
    cc: 2
  - name: the_indicator
    type: function
    cc: 8
  - name: indicator
    type: function
    cc: 4
  - name: element
    type: function
    cc: 1
  - name: temp_scroll_marker
    type: function
    cc: 2
  - name: marker_scale
    type: function
    cc: 2
  - name: line_height
    type: function
    cc: 2
  - name: scroll_marker
    type: function
    cc: 2
  - name: line_top
    type: function
    cc: 2
  - name: line_number
    type: function
    cc: 2
  - name: header
    type: function
    cc: 2
  - name: header_bottom
    type: function
    cc: 2
  - name: updateHeader
    type: function
    cc: 2
  - name: ctxs
    type: function
    cc: 3
  - name: ctxs_text
    type: function
    cc: 2
  - name: width
    type: function
    cc: 2
- path: src/proxym/dashboard/tools/_health.py
  lines: 217
  classes: 0
  methods: 6
  cc_max: 21
  inbound_deps: 1
  exports:
  - name: tools_readiness
    type: function
    cc: 2
  - name: tools_healthcheck
    type: function
    cc: 4
    fan_out: 13
- path: src/proxym/projects/__init__.py
  lines: 303
  classes: 4
  methods: 14
  cc_max: 21
  inbound_deps: 0
  exports:
  - name: SourceType
    type: class
    cc_avg: 0.0
  - name: ProjectStatus
    type: class
    cc_avg: 0.0
  - name: Project
    type: class
    cc_avg: 0.0
  - name: ProjectRegistry
    type: class
    cc_avg: 5.5
    methods:
    - name: scan_directory
      cc: 7
      fan_out: 15
    - name: add_git_repo
      cc: 3
      fan_out: 11
    - name: _enrich_local
      cc: 21
      flag: split
      fan_out: 10
    - name: _load
      cc: 10
- path: src/proxym/dashboard/components/diagnostics/DiagExtensions.jsx
  lines: 51
  classes: 0
  methods: 3
  cc_max: 20
  inbound_deps: 0
  exports:
  - name: DiagExtensions
    type: function
    cc: 20
    flag: split
  - name: ok
    type: function
    cc: 2
  - name: DiagCopilot
    type: function
    cc: 5
- path: src/proxym/dashboard/components/tickets/BulkOperations.jsx
  lines: 157
  classes: 0
  methods: 7
  cc_max: 20
  inbound_deps: 0
  exports:
  - name: BulkOperations
    type: function
    cc: 20
    flag: split
    fan_out: 19
  - name: toggleTicketSelection
    type: function
    cc: 2
  - name: newSet
    type: function
    cc: 2
  - name: selectAllTickets
    type: function
    cc: 1
  - name: clearSelection
    type: function
    cc: 1
  - name: executeBulkAction
    type: function
    cc: 10
    fan_out: 11
  - name: ids
    type: function
    cc: 7
- path: src/proxym/api/_diag_providers.py
  lines: 60
  classes: 0
  methods: 1
  cc_max: 19
  inbound_deps: 2
  exports:
  - name: check_providers_config
    type: function
    cc: 19
    flag: split
    fan_out: 15
- path: src/proxym/dashboard/panel.jsx
  lines: 118
  classes: 0
  methods: 7
  cc_max: 19
  inbound_deps: 0
  exports:
  - name: useState
    type: function
    cc: 19
    flag: split
  - name: useEffect
    type: function
    cc: 19
    flag: split
  - name: useCallback
    type: function
    cc: 19
    flag: split
  - name: Dashboard
    type: function
    cc: 19
    flag: split
  - name: data
    type: function
    cc: 1
  - name: root
    type: function
    cc: 1
- path: src/proxym/dashboard/_tickets_api.py
  lines: 676
  classes: 8
  methods: 25
  cc_max: 18
  inbound_deps: 9
  exports:
  - name: CreateTicketReq
    type: class
    cc_avg: 0.0
  - name: UpdateTicketReq
    type: class
    cc_avg: 0.0
  - name: AssignToolReq
    type: class
    cc_avg: 0.0
  - name: AddCommentReq
    type: class
    cc_avg: 0.0
  - name: CreateSprintReq
    type: class
    cc_avg: 0.0
  - name: UpdateSprintReq
    type: class
    cc_avg: 0.0
  - name: CreateMilestoneReq
    type: class
    cc_avg: 0.0
  - name: UpdateMilestoneReq
    type: class
    cc_avg: 0.0
  - name: list_tickets
    type: function
    cc: 4
  - name: export_tickets
    type: function
    cc: 9
    fan_out: 13
  - name: create_ticket
    type: function
    cc: 18
    flag: split
    fan_out: 31
  - name: ticket_board
    type: function
    cc: 1
  - name: deduplicate_tickets
    type: function
    cc: 1
  - name: get_ticket
    type: function
    cc: 3
  - name: update_ticket
    type: function
    cc: 8
    fan_out: 13
  - name: delete_ticket
    type: function
    cc: 1
  - name: assign_ticket_tool
    type: function
    cc: 4
    fan_out: 12
  - name: add_ticket_comment
    type: function
    cc: 2
  - name: list_sprints
    type: function
    cc: 3
  - name: create_sprint
    type: function
    cc: 1
  - name: get_sprint
    type: function
    cc: 2
  - name: update_sprint
    type: function
    cc: 4
  - name: delete_sprint
    type: function
    cc: 1
  - name: list_milestones
    type: function
    cc: 3
  - name: create_milestone
    type: function
    cc: 1
  - name: get_milestone
    type: function
    cc: 2
  - name: update_milestone
    type: function
    cc: 4
  - name: delete_milestone
    type: function
    cc: 1
- path: src/proxym/tools/startup.py
  lines: 221
  classes: 1
  methods: 7
  cc_max: 18
  inbound_deps: 0
  exports:
  - name: ToolStartupOrchestrator
    type: class
    cc_avg: 5.0
    methods:
    - name: _probe_all
      cc: 4
      fan_out: 13
    - name: _probe_tool
      cc: 18
      flag: split
- path: src/proxym/dashboard/components/tools/DiagnosticActions.jsx
  lines: 86
  classes: 0
  methods: 3
  cc_max: 17
  inbound_deps: 0
  exports:
  - name: DiagnosticActions
    type: function
    cc: 17
    flag: split
  - name: isAutoFixable
    type: function
    cc: 3
  - name: requiresHuman
    type: function
    cc: 3
- path: src/proxym/dashboard/components/shared/TableExport.jsx
  lines: 134
  classes: 0
  methods: 16
  cc_max: 16
  inbound_deps: 0
  exports:
  - name: TableExport
    type: function
    cc: 16
    flag: split
    fan_out: 23
  - name: convertToCSV
    type: function
    cc: 11
  - name: headers
    type: function
    cc: 9
  - name: csvHeaders
    type: function
    cc: 9
  - name: csvRows
    type: function
    cc: 9
  - name: value
    type: function
    cc: 3
  - name: downloadCSV
    type: function
    cc: 1
  - name: csv
    type: function
    cc: 1
  - name: blob
    type: function
    cc: 1
  - name: link
    type: function
    cc: 1
  - name: url
    type: function
    cc: 1
  - name: downloadJSON
    type: function
    cc: 1
  - name: json
    type: function
    cc: 1
  - name: copyToClipboard
    type: function
    cc: 2
  - name: button
    type: function
    cc: 1
  - name: originalText
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tools/TicketStatusBadges.jsx
  lines: 75
  classes: 0
  methods: 11
  cc_max: 16
  inbound_deps: 0
  exports:
  - name: TicketStatusBadges
    type: function
    cc: 16
    flag: split
  - name: getStatusBadgeClass
    type: function
    cc: 4
  - name: getPriorityBadgeClass
    type: function
    cc: 3
  - name: getToolCategoryClass
    type: function
    cc: 4
  - name: renderStatusBadge
    type: function
    cc: 3
  - name: statusClass
    type: function
    cc: 1
  - name: displayStatus
    type: function
    cc: 1
  - name: renderPriorityBadge
    type: function
    cc: 2
  - name: priorityClass
    type: function
    cc: 1
  - name: displayPriority
    type: function
    cc: 1
  - name: renderCurrentTool
    type: function
    cc: 5
- path: src/proxym/accounts/__init__.py
  lines: 398
  classes: 8
  methods: 20
  cc_max: 15
  inbound_deps: 0
  exports:
  - name: ProviderType
    type: class
    cc_avg: 0.0
  - name: ToolType
    type: class
    cc_avg: 0.0
  - name: AccountCredentials
    type: class
    cc_avg: 5.0
  - name: UsageMetrics
    type: class
    cc_avg: 2.0
  - name: AccountLimits
    type: class
    cc_avg: 4.5
  - name: ToolBinding
    type: class
    cc_avg: 0.0
  - name: Account
    type: class
    cc_avg: 3.0
  - name: AccountManager
    type: class
    cc_avg: 4.4
    methods:
    - name: _load
      cc: 15
      flag: split
      fan_out: 15
    - name: get_cost_summary
      cc: 10
- path: src/proxym/dashboard/components/human/HumanTaskPanelRefactored.jsx
  lines: 143
  classes: 0
  methods: 13
  cc_max: 15
  inbound_deps: 0
  exports:
  - name: HumanTaskPanelRefactored
    type: function
    cc: 15
    flag: split
    fan_out: 11
  - name: view
    type: function
    cc: 2
  - name: setView
    type: function
    cc: 2
  - name: filterStatus
    type: function
    cc: 2
  - name: setFilterStatus
    type: function
    cc: 2
  - name: filtered
    type: function
    cc: 2
  - name: boardColumns
    type: function
    cc: 2
  - name: humanJobs
    type: function
    cc: 2
  - name: stats
    type: function
    cc: 2
  - name: handleStartStop
    type: function
    cc: 2
  - name: handleViewChange
    type: function
    cc: 1
  - name: handleFilterChange
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tools/BulkAutoFix.jsx
  lines: 62
  classes: 0
  methods: 1
  cc_max: 15
  inbound_deps: 0
  exports:
  - name: BulkAutoFix
    type: function
    cc: 15
    flag: split
- path: src/proxym/api/_diag_agent.py
  lines: 230
  classes: 0
  methods: 5
  cc_max: 14
  inbound_deps: 1
  exports:
  - name: check_copilot_conflict
    type: function
    cc: 10
    fan_out: 10
  - name: check_agent_setup
    type: function
    cc: 14
    fan_out: 13
  - name: test_agent_completion
    type: function
    cc: 6
    fan_out: 15
- path: src/proxym/api/_diag_vscode.py
  lines: 143
  classes: 0
  methods: 2
  cc_max: 14
  inbound_deps: 1
  exports:
  - name: check_vscode_status
    type: function
    cc: 7
  - name: check_extensions
    type: function
    cc: 14
    fan_out: 11
- path: src/proxym/dashboard/components/models.jsx
  lines: 194
  classes: 0
  methods: 18
  cc_max: 14
  inbound_deps: 0
  exports:
  - name: TableExport
    type: function
    cc: 14
    fan_out: 23
  - name: convertToCSV
    type: function
    cc: 8
  - name: headers
    type: function
    cc: 6
  - name: csvHeaders
    type: function
    cc: 6
  - name: csvRows
    type: function
    cc: 6
  - name: value
    type: function
    cc: 3
  - name: downloadCSV
    type: function
    cc: 1
  - name: csv
    type: function
    cc: 1
  - name: blob
    type: function
    cc: 1
  - name: link
    type: function
    cc: 1
  - name: url
    type: function
    cc: 1
  - name: downloadJSON
    type: function
    cc: 1
  - name: json
    type: function
    cc: 1
  - name: copyToClipboard
    type: function
    cc: 2
  - name: button
    type: function
    cc: 1
  - name: originalText
    type: function
    cc: 1
  - name: ModelsTable
    type: function
    cc: 11
  - name: exportData
    type: function
    cc: 6
- path: src/proxym/dashboard/components/tools/ToolHealthDisplay.jsx
  lines: 80
  classes: 0
  methods: 3
  cc_max: 14
  inbound_deps: 0
  exports:
  - name: ToolHealthDisplay
    type: function
    cc: 14
  - name: summary
    type: function
    cc: 2
  - name: degradedCount
    type: function
    cc: 1
- path: src/proxym/observability/repair_agent.py
  lines: 341
  classes: 1
  methods: 9
  cc_max: 14
  inbound_deps: 0
  exports:
  - name: RepairAgent
    type: class
    cc_avg: 5.4
    methods:
    - name: diagnose_and_repair
      cc: 10
      fan_out: 11
    - name: _build_context
      cc: 14
    - name: _call_llm
      cc: 4
      fan_out: 12
- path: src/proxym/api/_diag_roo.py
  lines: 121
  classes: 0
  methods: 4
  cc_max: 13
  inbound_deps: 2
  exports:
  - name: check_roo_cline_config
    type: function
    cc: 13
- path: src/proxym/api/completions.py
  lines: 262
  classes: 0
  methods: 12
  cc_max: 13
  inbound_deps: 1
  exports:
  - name: completion
    type: function
    cc: 2
  - name: chat_completions
    type: function
    cc: 13
    fan_out: 27
- path: src/proxym/cli/smart_defaults.py
  lines: 109
  classes: 0
  methods: 4
  cc_max: 13
  inbound_deps: 1
  exports:
  - name: detect_ticket_type
    type: function
    cc: 4
  - name: default_priority
    type: function
    cc: 1
  - name: resolve_tool
    type: function
    cc: 4
  - name: resolve_project
    type: function
    cc: 13
- path: src/proxym/dashboard/_environments_api.py
  lines: 460
  classes: 6
  methods: 33
  cc_max: 13
  inbound_deps: 5
  exports:
  - name: EnvironmentKind
    type: class
    cc_avg: 0.0
  - name: Environment
    type: class
    cc_avg: 3.8
  - name: EnvironmentCreateRequest
    type: class
    cc_avg: 0.0
  - name: EnvironmentUpdateRequest
    type: class
    cc_avg: 0.0
  - name: ToolEnvironmentAssignRequest
    type: class
    cc_avg: 0.0
  - name: EnvironmentRegistry
    type: class
    cc_avg: 4.0
    methods:
    - name: _resolve_tool_instance_name
      cc: 13
    - name: assign_tool_to_environment
      cc: 11
      fan_out: 10
  - name: get_environment_registry
    type: function
    cc: 2
  - name: get_tool_environment_snapshot
    type: function
    cc: 3
  - name: list_environments
    type: function
    cc: 1
  - name: list_environment_assignments
    type: function
    cc: 3
    fan_out: 10
  - name: get_environment
    type: function
    cc: 2
  - name: create_environment
    type: function
    cc: 1
  - name: update_environment
    type: function
    cc: 4
    fan_out: 10
  - name: delete_environment
    type: function
    cc: 2
  - name: assign_tool_to_environment
    type: function
    cc: 10
    fan_out: 12
- path: src/proxym/dashboard/_system.py
  lines: 156
  classes: 0
  methods: 4
  cc_max: 13
  inbound_deps: 0
  exports:
  - name: dashboard_root
    type: function
    cc: 1
  - name: system_status
    type: function
    cc: 8
    fan_out: 18
  - name: list_providers
    type: function
    cc: 6
  - name: get_logs
    type: function
    cc: 13
    fan_out: 14
- path: src/proxym/dashboard/users.py
  lines: 928
  classes: 3
  methods: 58
  cc_max: 13
  inbound_deps: 0
  exports:
  - name: UserRole
    type: class
    cc_avg: 0.0
  - name: User
    type: class
    cc_avg: 1.0
  - name: UserManager
    type: class
    cc_avg: 4.6
    methods:
    - name: _iter_git_ref_names
      cc: 8
      fan_out: 10
    - name: _repo_root_from_candidate
      cc: 10
    - name: _resolve_git_dir
      cc: 11
      fan_out: 13
    - name: _read_pack_index
      cc: 13
      fan_out: 10
    - name: _apply_pack_delta
      cc: 13
    - name: _read_pack_object
      cc: 12
      fan_out: 10
    - name: _collect_git_authors_from_objects
      cc: 7
      fan_out: 13
- path: src/proxym/tools/adapters/_llm_fallback.py
  lines: 241
  classes: 0
  methods: 3
  cc_max: 13
  inbound_deps: 2
- path: src/proxym/cli/tickets.py
  lines: 351
  classes: 0
  methods: 15
  cc_max: 12
  inbound_deps: 1
  exports:
  - name: cmd_ticket_list
    type: function
    cc: 8
  - name: cmd_ticket_create
    type: function
    cc: 12
  - name: cmd_ticket_show
    type: function
    cc: 10
  - name: cmd_ticket_update
    type: function
    cc: 8
  - name: cmd_ticket_assign
    type: function
    cc: 4
  - name: cmd_ticket_comment
    type: function
    cc: 3
  - name: cmd_ticket_delete
    type: function
    cc: 1
  - name: cmd_sprint_list
    type: function
    cc: 4
  - name: cmd_sprint_create
    type: function
    cc: 4
  - name: cmd_sprint_show
    type: function
    cc: 6
  - name: cmd_sprint_update
    type: function
    cc: 6
  - name: cmd_sprint_delete
    type: function
    cc: 1
  - name: cmd_ticket_dedup
    type: function
    cc: 12
  - name: cmd_board
    type: function
    cc: 6
    fan_out: 10
- path: src/proxym/dashboard/_vms.py
  lines: 228
  classes: 3
  methods: 12
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: CreateVMReq
    type: class
    cc_avg: 0.0
  - name: SwitchProjectReq
    type: class
    cc_avg: 0.0
  - name: AssignToolReq
    type: class
    cc_avg: 0.0
  - name: list_vms
    type: function
    cc: 2
  - name: create_vm
    type: function
    cc: 1
  - name: start_vm
    type: function
    cc: 7
  - name: stop_vm
    type: function
    cc: 2
  - name: pause_vm
    type: function
    cc: 2
  - name: resume_vm
    type: function
    cc: 2
  - name: snapshot_vm
    type: function
    cc: 2
  - name: switch_project
    type: function
    cc: 2
  - name: delete_vm
    type: function
    cc: 1
  - name: delete_vm_post
    type: function
    cc: 1
  - name: bulk_delete_vms
    type: function
    cc: 4
  - name: assign_tool_to_vm
    type: function
    cc: 12
    fan_out: 16
- path: src/proxym/dashboard/components/home.jsx
  lines: 316
  classes: 0
  methods: 38
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: useQuickDo
    type: function
    cc: 12
    fan_out: 10
  - name: submit
    type: function
    cc: 10
  - name: r
    type: function
    cc: 5
  - name: toolInfo
    type: function
    cc: 2
  - name: onKey
    type: function
    cc: 2
  - name: canSubmit
    type: function
    cc: 1
  - name: QuickDoFeedback
    type: function
    cc: 4
  - name: color
    type: function
    cc: 2
  - name: QuickDoCompact
    type: function
    cc: 2
  - name: q
    type: function
    cc: 1
  - name: QuickDo
    type: function
    cc: 5
  - name: HealthCard
    type: function
    cc: 10
  - name: checks
    type: function
    cc: 3
  - name: total
    type: function
    cc: 2
  - name: ok
    type: function
    cc: 2
  - name: alerts
    type: function
    cc: 2
  - name: BudgetMiniCard
    type: function
    cc: 8
  - name: dailyUsed
    type: function
    cc: 1
  - name: monthlyUsed
    type: function
    cc: 1
  - name: monthlyLimit
    type: function
    cc: 1
  - name: remaining
    type: function
    cc: 1
  - name: QueueMiniCard
    type: function
    cc: 10
  - name: load
    type: function
    cc: 5
  - name: data
    type: function
    cc: 1
  - name: timer
    type: function
    cc: 1
  - name: qs
    type: function
    cc: 1
  - name: running
    type: function
    cc: 1
  - name: done
    type: function
    cc: 1
  - name: ms
    type: function
    cc: 1
  - name: ActivityRow
    type: function
    cc: 2
  - name: RecentActivity
    type: function
    cc: 2
    fan_out: 11
  - name: tickets
    type: function
    cc: 1
  - name: jobs
    type: function
    cc: 1
  - name: HomeTab
    type: function
    cc: 1
- path: src/proxym/dashboard/components/shared/ViewControls.jsx
  lines: 103
  classes: 0
  methods: 3
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: ViewControls
    type: function
    cc: 12
  - name: viewOptions
    type: function
    cc: 1
  - name: statusList
    type: function
    cc: 2
- path: src/proxym/dashboard/components/tickets/TicketList.jsx
  lines: 209
  classes: 0
  methods: 14
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: TableExport
    type: function
    cc: 12
    fan_out: 16
  - name: convertToCSV
    type: function
    cc: 11
  - name: headers
    type: function
    cc: 9
  - name: csvHeaders
    type: function
    cc: 9
  - name: csvRows
    type: function
    cc: 9
  - name: value
    type: function
    cc: 3
  - name: downloadCSV
    type: function
    cc: 1
  - name: csv
    type: function
    cc: 1
  - name: blob
    type: function
    cc: 1
  - name: url
    type: function
    cc: 1
  - name: link
    type: function
    cc: 1
  - name: downloadJSON
    type: function
    cc: 1
  - name: json
    type: function
    cc: 1
  - name: TicketList
    type: function
    cc: 9
- path: src/proxym/dashboard/components/tools/ToolHealthCard.jsx
  lines: 86
  classes: 0
  methods: 3
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: ToolHealthCard
    type: function
    cc: 12
  - name: statusClass
    type: function
    cc: 1
  - name: isHuman
    type: function
    cc: 1
- path: src/proxym/dashboard/tickets/_models.py
  lines: 247
  classes: 11
  methods: 4
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: TicketStatus
    type: class
    cc_avg: 0.0
  - name: TicketPriority
    type: class
    cc_avg: 0.0
  - name: TicketType
    type: class
    cc_avg: 0.0
  - name: SprintStatus
    type: class
    cc_avg: 0.0
  - name: MilestoneStatus
    type: class
    cc_avg: 0.0
  - name: ToolAssignment
    type: class
    cc_avg: 0.0
  - name: JobExecution
    type: class
    cc_avg: 0.0
  - name: TicketComment
    type: class
    cc_avg: 0.0
  - name: Milestone
    type: class
    cc_avg: 12.0
    methods:
    - name: summary
      cc: 12
  - name: Ticket
    type: class
    cc_avg: 7.5
    methods:
    - name: __init__
      cc: 12
  - name: Sprint
    type: class
    cc_avg: 7.0
- path: src/proxym/dashboard/tools/HealthCheckerRefactored.py
  lines: 257
  classes: 7
  methods: 15
  cc_max: 12
  inbound_deps: 1
  exports:
  - name: HealthCheck
    type: class
    cc_avg: 1.0
  - name: BinaryHealthCheck
    type: class
    cc_avg: 3.5
  - name: InstanceHealthCheck
    type: class
    cc_avg: 6.7
  - name: ProviderHealthCheck
    type: class
    cc_avg: 1.0
  - name: HumanToolHealthCheck
    type: class
    cc_avg: 2.0
  - name: HealthStatusCalculator
    type: class
    cc_avg: 12.0
    methods:
    - name: calculate_status
      cc: 12
  - name: HealthCheckerRefactored
    type: class
    cc_avg: 2.5
- path: src/proxym/dashboard/tools/_autofix.py
  lines: 243
  classes: 1
  methods: 5
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: AutoFixRequest
    type: class
    cc_avg: 0.0
  - name: execute_autofix
    type: function
    cc: 12
  - name: bulk_autofix
    type: function
    cc: 5
    fan_out: 12
- path: src/proxym/dashboard/tools/_queue.py
  lines: 205
  classes: 0
  methods: 8
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: queue_status
    type: function
    cc: 2
  - name: list_jobs
    type: function
    cc: 3
  - name: get_job
    type: function
    cc: 2
  - name: cancel_job
    type: function
    cc: 2
  - name: retry_job
    type: function
    cc: 4
    fan_out: 10
  - name: repair_job
    type: function
    cc: 5
- path: src/proxym/main.py
  lines: 234
  classes: 0
  methods: 2
  cc_max: 12
  inbound_deps: 0
  exports:
  - name: lifespan
    type: function
    cc: 12
    fan_out: 18
  - name: cli
    type: function
    cc: 3
- path: src/proxym/cli/diagnostics.py
  lines: 148
  classes: 0
  methods: 7
  cc_max: 11
  inbound_deps: 0
  exports:
  - name: cmd_tests_status
    type: function
    cc: 7
  - name: cmd_test_vscode
    type: function
    cc: 5
  - name: cmd_test_proxy
    type: function
    cc: 4
  - name: cmd_test_providers
    type: function
    cc: 11
  - name: cmd_test_extensions
    type: function
    cc: 7
  - name: cmd_test_agent_setup
    type: function
    cc: 7
  - name: cmd_test_agent
    type: function
    cc: 8
- path: src/proxym/dashboard/components/accounts.jsx
  lines: 86
  classes: 0
  methods: 6
  cc_max: 11
  inbound_deps: 0
  exports:
  - name: AccountRow
    type: function
    cc: 11
  - name: a
    type: function
    cc: 1
  - name: NewAccountForm
    type: function
    cc: 1
  - name: handleSubmit
    type: function
    cc: 1
  - name: AccountsPanel
    type: function
    cc: 5
  - name: handleCreate
    type: function
    cc: 1
- path: src/proxym/dashboard/components/diagnostics/DiagAgent.jsx
  lines: 51
  classes: 0
  methods: 3
  cc_max: 11
  inbound_deps: 0
  exports:
  - name: DiagAgentSetup
    type: function
    cc: 6
  - name: DiagAgentTest
    type: function
    cc: 11
  - name: skipped
    type: function
    cc: 2
- path: src/proxym/dashboard/components/layout.jsx
  lines: 92
  classes: 0
  methods: 13
  cc_max: 11
  inbound_deps: 0
  exports:
  - name: ALL_TAB_IDS
    type: function
    cc: 11
  - name: DashboardHeader
    type: function
    cc: 11
  - name: isDark
    type: function
    cc: 1
  - name: headerClass
    type: function
    cc: 1
  - name: titleClass
    type: function
    cc: 1
  - name: subtitleClass
    type: function
    cc: 1
  - name: themeLabel
    type: function
    cc: 1
  - name: toggleClass
    type: function
    cc: 1
  - name: refreshClass
    type: function
    cc: 1
  - name: TabNav
    type: function
    cc: 5
  - name: navClass
    type: function
    cc: 1
  - name: activeTabClass
    type: function
    cc: 1
  - name: inactiveTabClass
    type: function
    cc: 1
- path: src/proxym/dashboard/components/voice_engine.jsx
  lines: 150
  classes: 0
  methods: 30
  cc_max: 11
  inbound_deps: 2
  exports:
  - name: apiCall
    type: function
    cc: 6
  - name: r
    type: function
    cc: 1
  - name: err
    type: function
    cc: 2
  - name: matchDSL
    type: function
    cc: 5
  - name: t
    type: function
    cc: 5
  - name: m
    type: function
    cc: 3
  - name: captured
    type: function
    cc: 1
  - name: executeDSL
    type: function
    cc: 4
  - name: data
    type: function
    cc: 1
  - name: setVoiceCredentials
    type: function
    cc: 1
  - name: vms
    type: function
    cc: 2
  - name: logs
    type: function
    cc: 3
  - name: formatToolResult
    type: function
    cc: 2
  - name: fn
    type: function
    cc: 1
  - name: dsl
    type: function
    cc: 1
  - name: label
    type: function
    cc: 1
  - name: reply
    type: function
    cc: 1
  - name: langHint
    type: function
    cc: 1
  - name: res
    type: function
    cc: 1
  - name: name
    type: function
    cc: 1
  - name: result
    type: function
    cc: 1
  - name: processVoiceInput
    type: function
    cc: 11
  - name: dslReply
    type: function
    cc: 5
  - name: messages
    type: function
    cc: 5
  - name: msg
    type: function
    cc: 5
  - name: toolReply
    type: function
    cc: 1
- path: src/proxym/dashboard/tools/_dispatch.py
  lines: 96
  classes: 2
  methods: 2
  cc_max: 11
  inbound_deps: 0
  exports:
  - name: DispatchRequest
    type: class
    cc_avg: 0.0
  - name: PreviewPromptRequest
    type: class
    cc_avg: 0.0
  - name: preview_prompt
    type: function
    cc: 2
  - name: dispatch_job
    type: function
    cc: 11
    fan_out: 23
- path: scripts/seed_sprint8.py
  lines: 229
  classes: 0
  methods: 1
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: main
    type: function
    cc: 10
    fan_out: 13
- path: src/proxym/api/_diag_proxy.py
  lines: 63
  classes: 0
  methods: 1
  cc_max: 10
  inbound_deps: 2
  exports:
  - name: check_llm_proxy
    type: function
    cc: 10
    fan_out: 14
- path: src/proxym/api/console.py
  lines: 177
  classes: 0
  methods: 4
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: routing_test
    type: function
    cc: 10
    fan_out: 13
  - name: ollama_status
    type: function
    cc: 8
    fan_out: 17
  - name: vm_console
    type: function
    cc: 3
- path: src/proxym/cli/_groups/projects_ctl.py
  lines: 286
  classes: 0
  methods: 11
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: project
    type: function
    cc: 1
  - name: project_list
    type: function
    cc: 6
    fan_out: 12
  - name: project_add
    type: function
    cc: 8
    fan_out: 13
  - name: project_scan
    type: function
    cc: 3
    fan_out: 11
  - name: project_show
    type: function
    cc: 8
    fan_out: 10
  - name: project_update
    type: function
    cc: 5
    fan_out: 12
  - name: project_remove
    type: function
    cc: 2
  - name: project_task
    type: function
    cc: 3
    fan_out: 11
- path: src/proxym/cli/observability.py
  lines: 147
  classes: 0
  methods: 6
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: cmd_obs_errors
    type: function
    cc: 5
  - name: cmd_obs_health
    type: function
    cc: 2
  - name: cmd_obs_repair
    type: function
    cc: 7
  - name: cmd_obs_logs
    type: function
    cc: 3
- path: src/proxym/dashboard/components/diagnostics/DiagInfrastructure.jsx
  lines: 28
  classes: 0
  methods: 2
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: DiagVSCode
    type: function
    cc: 10
  - name: DiagProxy
    type: function
    cc: 7
- path: src/proxym/dashboard/components/system.jsx
  lines: 111
  classes: 0
  methods: 4
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: useSystemData
    type: function
    cc: 5
    fan_out: 10
  - name: refresh
    type: function
    cc: 5
  - name: SystemPanel
    type: function
    cc: 10
  - name: activeProviders
    type: function
    cc: 9
- path: src/proxym/dashboard/components/tools/DispatchTableHeader.jsx
  lines: 34
  classes: 0
  methods: 1
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: DispatchTableHeader
    type: function
    cc: 10
- path: src/proxym/dashboard/components/tools/TicketDispatchTableRefactored.jsx
  lines: 141
  classes: 0
  methods: 9
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: TicketDispatchTableRefactored
    type: function
    cc: 10
    fan_out: 16
  - name: availableTools
    type: function
    cc: 1
  - name: unavailableTools
    type: function
    cc: 1
  - name: dispatchableTickets
    type: function
    cc: 1
  - name: projectResolver
    type: function
    cc: 1
  - name: loadTickets
    type: function
    cc: 4
  - name: data
    type: function
    cc: 2
  - name: loadProjects
    type: function
    cc: 3
  - name: handleToolSelect
    type: function
    cc: 3
- path: src/proxym/dashboard/tickets/TicketManagerRefactored.py
  lines: 296
  classes: 4
  methods: 26
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: TicketFilter
    type: class
    cc_avg: 3.6
  - name: TicketValidator
    type: class
    cc_avg: 8.5
    methods:
    - name: validate_ticket_data
      cc: 10
  - name: TicketPersistence
    type: class
    cc_avg: 2.0
  - name: TicketManagerRefactored
    type: class
    cc_avg: 2.4
- path: src/proxym/tools/__init__.py
  lines: 572
  classes: 5
  methods: 19
  cc_max: 10
  inbound_deps: 0
  exports:
  - name: ToolCategory
    type: class
    cc_avg: 0.0
  - name: ToolCapability
    type: class
    cc_avg: 0.0
  - name: ToolInstance
    type: class
    cc_avg: 5.0
  - name: ToolDefinition
    type: class
    cc_avg: 4.0
  - name: ToolRegistry
    type: class
    cc_avg: 4.5
    methods:
    - name: _load_overrides
      cc: 10
      fan_out: 10
- path: frontend/dashboard-sse-service.js
  lines: 129
  classes: 1
  methods: 13
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: SSEService
    type: class
    cc_avg: 3.7
    methods:
    - name: _doConnect
      cc: 9
      fan_out: 13
    - name: apiUrl
      cc: 4
      fan_out: 11
    - name: apiKey
      cc: 4
      fan_out: 11
    - name: sseUrl
      cc: 4
      fan_out: 11
- path: src/proxym/api/context_api.py
  lines: 152
  classes: 0
  methods: 7
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: get_context_store
    type: function
    cc: 1
  - name: get_mcp_registry
    type: function
    cc: 1
  - name: receive_delta
    type: function
    cc: 9
    fan_out: 11
  - name: detect_context
    type: function
    cc: 5
  - name: list_sessions
    type: function
    cc: 3
  - name: list_mcp_servers
    type: function
    cc: 4
  - name: context_stats
    type: function
    cc: 3
- path: src/proxym/api/diagnostics.py
  lines: 229
  classes: 0
  methods: 9
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: run_all_tests
    type: function
    cc: 9
    fan_out: 28
  - name: test_vscode
    type: function
    cc: 1
  - name: test_proxy
    type: function
    cc: 1
  - name: test_roo
    type: function
    cc: 1
  - name: test_extensions
    type: function
    cc: 1
  - name: test_providers
    type: function
    cc: 1
  - name: test_copilot
    type: function
    cc: 1
  - name: test_agent_setup
    type: function
    cc: 1
  - name: test_agent
    type: function
    cc: 1
- path: src/proxym/api/voice_actions.py
  lines: 118
  classes: 0
  methods: 9
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: vms_list
    type: function
    cc: 1
  - name: vms_start
    type: function
    cc: 1
  - name: vms_stop
    type: function
    cc: 1
  - name: vms_snapshot
    type: function
    cc: 1
  - name: accounts_list
    type: function
    cc: 1
  - name: dashboard_costs_summary
    type: function
    cc: 1
  - name: logs_list
    type: function
    cc: 1
  - name: voice_tickets
    type: function
    cc: 6
  - name: voice_diagnose
    type: function
    cc: 9
- path: src/proxym/cache/__init__.py
  lines: 333
  classes: 3
  methods: 10
  cc_max: 9
  inbound_deps: 1
  exports:
  - name: FileSnapshot
    type: class
    cc_avg: 2.0
  - name: DeltaPayload
    type: class
    cc_avg: 0.0
  - name: DeltaBuffer
    type: class
    cc_avg: 4.7
    methods:
    - name: compute_delta
      cc: 5
      fan_out: 11
- path: src/proxym/cli/_client.py
  lines: 47
  classes: 0
  methods: 4
  cc_max: 9
  inbound_deps: 16
  exports:
  - name: make_client
    type: function
    cc: 3
  - name: print_json
    type: function
    cc: 1
  - name: print_json_if_yaml
    type: function
    cc: 2
  - name: print_table
    type: function
    cc: 9
- path: src/proxym/cli/chat.py
  lines: 215
  classes: 0
  methods: 12
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: cmd_chat
    type: function
    cc: 9
    fan_out: 12
- path: src/proxym/context/detector.py
  lines: 202
  classes: 0
  methods: 8
  cc_max: 9
  inbound_deps: 2
  exports:
  - name: detect_project
    type: function
    cc: 8
- path: src/proxym/dashboard/components/tools/ProjectInfoResolver.jsx
  lines: 44
  classes: 0
  methods: 6
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: ProjectInfoResolver
    type: function
    cc: 9
  - name: getProjectInfo
    type: function
    cc: 7
  - name: project
    type: function
    cc: 2
  - name: path
    type: function
    cc: 2
  - name: renderProjectInfo
    type: function
    cc: 3
  - name: projectInfo
    type: function
    cc: 2
- path: src/proxym/observability/__init__.py
  lines: 308
  classes: 0
  methods: 8
  cc_max: 9
  inbound_deps: 14
  exports:
  - name: get_log_buffer
    type: function
    cc: 4
  - name: get_error_summary
    type: function
    cc: 5
  - name: log_call
    type: function
    cc: 1
    fan_out: 18
  - name: log_endpoint
    type: function
    cc: 1
    fan_out: 11
  - name: retry_with_log
    type: function
    cc: 1
- path: src/proxym/router/__init__.py
  lines: 352
  classes: 1
  methods: 13
  cc_max: 9
  inbound_deps: 2
  exports:
  - name: AnalysisResult
    type: class
    cc_avg: 0.0
  - name: analyze_request
    type: function
    cc: 7
    fan_out: 17
- path: src/proxym/router/strategy.py
  lines: 332
  classes: 3
  methods: 19
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: RoutingDecision
    type: class
    cc_avg: 0.0
  - name: CostLedger
    type: class
    cc_avg: 2.6
  - name: Router
    type: class
    cc_avg: 3.0
- path: src/proxym/virt/_config.py
  lines: 94
  classes: 3
  methods: 1
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: ProjectsConfig
    type: class
    cc_avg: 9.0
  - name: VMConfig
    type: class
    cc_avg: 0.0
  - name: VMStatus
    type: class
    cc_avg: 0.0
- path: src/proxym/virt/_vm_config.py
  lines: 220
  classes: 1
  methods: 7
  cc_max: 9
  inbound_deps: 0
  exports:
  - name: _ConfigMixin
    type: class
    cc_avg: 4.0
    methods:
    - name: _inject_vm_config
      cc: 9
      fan_out: 11
- path: src/proxym/virt/browser_profiles.py
  lines: 314
  classes: 2
  methods: 12
  cc_max: 9
  inbound_deps: 2
  exports:
  - name: BrowserProfile
    type: class
    cc_avg: 1.0
  - name: AppDataSync
    type: class
    cc_avg: 0.0
  - name: detect_firefox_profiles
    type: function
    cc: 9
    fan_out: 17
  - name: detect_all_profiles
    type: function
    cc: 1
  - name: detect_chrome_profiles
    type: function
    cc: 1
  - name: detect_chromium_profiles
    type: function
    cc: 1
  - name: generate_app_data_sync
    type: function
    cc: 8
- path: src/proxym/cli/_groups/do_ctl.py
  lines: 182
  classes: 0
  methods: 8
  cc_max: 8
  inbound_deps: 0
  exports:
  - name: do_cmd
    type: function
    cc: 8
    fan_out: 12
- path: src/proxym/cli/accounts.py
  lines: 124
  classes: 0
  methods: 6
  cc_max: 8
  inbound_deps: 0
  exports:
  - name: cmd_accounts_list
    type: function
    cc: 6
    fan_out: 10
  - name: cmd_accounts_add
    type: function
    cc: 8
  - name: cmd_accounts_costs
    type: function
    cc: 5
    fan_out: 11
  - name: cmd_accounts_get
    type: function
    cc: 2
  - name: cmd_accounts_delete
    type: function
    cc: 3
  - name: cmd_accounts_bind_tool
    type: function
    cc: 6
- path: src/proxym/dashboard/_projects_api.py
  lines: 278
  classes: 3
  methods: 15
  cc_max: 8
  inbound_deps: 3
  exports:
  - name: AddProjectReq
    type: class
    cc_avg: 0.0
  - name: UpdateProjectReq
    type: class
    cc_avg: 0.0
  - name: ScanReq
    type: class
    cc_avg: 0.0
  - name: list_projects
    type: function
    cc: 1
  - name: get_project
    type: function
    cc: 2
  - name: add_project
    type: function
    cc: 2
  - name: update_project
    type: function
    cc: 2
  - name: remove_project
    type: function
    cc: 2
  - name: scan_directory
    type: function
    cc: 1
  - name: project_tickets
    type: function
    cc: 1
  - name: create_project_ticket
    type: function
    cc: 4
- path: src/proxym/dashboard/_users_api.py
  lines: 209
  classes: 2
  methods: 9
  cc_max: 8
  inbound_deps: 1
  exports:
  - name: CreateUserRequest
    type: class
    cc_avg: 0.0
  - name: UpdateUserRequest
    type: class
    cc_avg: 0.0
  - name: list_users
    type: function
    cc: 2
  - name: create_user
    type: function
    cc: 3
    fan_out: 11
  - name: sync_git_users
    type: function
    cc: 4
    fan_out: 12
  - name: get_default_user
    type: function
    cc: 2
  - name: set_default_user
    type: function
    cc: 2
  - name: get_user
    type: function
    cc: 2
  - name: update_user
    type: function
    cc: 3
    fan_out: 13
  - name: delete_user
    type: function
    cc: 8
    fan_out: 10
- path: src/proxym/providers/__init__.py
  lines: 331
  classes: 3
  methods: 4
  cc_max: 8
  inbound_deps: 3
  exports:
  - name: TaskTier
    type: class
    cc_avg: 0.0
  - name: Capability
    type: class
    cc_avg: 0.0
  - name: ModelSpec
    type: class
    cc_avg: 0.0
  - name: models_for_tier
    type: function
    cc: 8
  - name: cheapest_model
    type: function
    cc: 2
  - name: get_model
    type: function
    cc: 1
- path: scripts/fix_corrupted_db.py
  lines: 68
  classes: 0
  methods: 1
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: main
    type: function
    cc: 7
    fan_out: 11
- path: src/proxym/api/_pipeline.py
  lines: 299
  classes: 1
  methods: 16
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: CompletionPipeline
    type: class
    cc_avg: 3.2
    methods:
    - name: _make_non_stream_response
      cc: 5
      fan_out: 12
- path: src/proxym/cli/_groups/tickets_ctl.py
  lines: 251
  classes: 0
  methods: 14
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: ticket
    type: function
    cc: 1
  - name: ticket_list
    type: function
    cc: 1
  - name: ticket_add
    type: function
    cc: 7
    fan_out: 13
  - name: ticket_create
    type: function
    cc: 1
  - name: ticket_update
    type: function
    cc: 1
  - name: ticket_assign
    type: function
    cc: 1
  - name: ticket_comment
    type: function
    cc: 1
  - name: ticket_board
    type: function
    cc: 1
  - name: ticket_dedup
    type: function
    cc: 1
  - name: sprint
    type: function
    cc: 1
  - name: sprint_list
    type: function
    cc: 1
  - name: sprint_create
    type: function
    cc: 1
  - name: sprint_update
    type: function
    cc: 1
  - name: sprint_board
    type: function
    cc: 1
- path: src/proxym/cli/context.py
  lines: 89
  classes: 0
  methods: 6
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: cmd_context_delta
    type: function
    cc: 7
  - name: cmd_context_detect
    type: function
    cc: 7
  - name: cmd_context_stats
    type: function
    cc: 2
  - name: cmd_sessions_list
    type: function
    cc: 1
  - name: cmd_mcp_servers
    type: function
    cc: 1
- path: src/proxym/cli/vms.py
  lines: 168
  classes: 0
  methods: 11
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: cmd_vm_list
    type: function
    cc: 3
  - name: cmd_vm_create
    type: function
    cc: 5
  - name: cmd_vm_action
    type: function
    cc: 4
  - name: cmd_vm_switch
    type: function
    cc: 2
  - name: cmd_vm_open
    type: function
    cc: 2
  - name: cmd_vm_ssh
    type: function
    cc: 2
  - name: cmd_vm_logs
    type: function
    cc: 1
  - name: cmd_vm_delete
    type: function
    cc: 3
  - name: cmd_vm_console
    type: function
    cc: 7
  - name: cmd_vm_bulk_delete
    type: function
    cc: 6
- path: src/proxym/context/session.py
  lines: 247
  classes: 2
  methods: 12
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: AgentSession
    type: class
    cc_avg: 4.0
  - name: SessionStore
    type: class
    cc_avg: 3.4
- path: src/proxym/ctl.py
  lines: 337
  classes: 0
  methods: 20
  cc_max: 7
  inbound_deps: 9
  exports:
  - name: cli
    type: function
    cc: 4
  - name: serve
    type: function
    cc: 1
  - name: status
    type: function
    cc: 1
  - name: models
    type: function
    cc: 1
  - name: chat
    type: function
    cc: 1
  - name: logs_cmd
    type: function
    cc: 4
    fan_out: 11
  - name: providers_cmd
    type: function
    cc: 4
  - name: routing_test_cmd
    type: function
    cc: 4
    fan_out: 11
  - name: projects_cmd
    type: function
    cc: 6
    fan_out: 13
  - name: fix_cmd
    type: function
    cc: 1
  - name: refactor_cmd
    type: function
    cc: 1
  - name: queue_shortcut
    type: function
    cc: 7
    fan_out: 12
  - name: web_cmd
    type: function
    cc: 2
  - name: log_shortcut
    type: function
    cc: 1
  - name: jobs_shortcut
    type: function
    cc: 1
  - name: board_shortcut
    type: function
    cc: 1
  - name: config_group
    type: function
    cc: 1
  - name: config_set
    type: function
    cc: 2
    fan_out: 10
  - name: config_get
    type: function
    cc: 4
- path: src/proxym/dashboard/components/overview.jsx
  lines: 100
  classes: 0
  methods: 7
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: CostSummary
    type: function
    cc: 6
  - name: BudgetCards
    type: function
    cc: 7
  - name: dailyUsed
    type: function
    cc: 3
  - name: monthlyUsed
    type: function
    cc: 3
  - name: SystemCard
    type: function
    cc: 7
  - name: ProvidersCard
    type: function
    cc: 4
  - name: OverviewTab
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tickets/TicketFilters.jsx
  lines: 151
  classes: 0
  methods: 2
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: TicketFilters
    type: function
    cc: 7
    fan_out: 10
  - name: handleReset
    type: function
    cc: 1
- path: src/proxym/dashboard/utils/formatters.js
  lines: 34
  classes: 0
  methods: 12
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: formatDate
    type: function
    cc: 7
  - name: date
    type: function
    cc: 2
  - name: now
    type: function
    cc: 2
  - name: diffMs
    type: function
    cc: 2
  - name: diffMins
    type: function
    cc: 2
  - name: diffHours
    type: function
    cc: 2
  - name: diffDays
    type: function
    cc: 2
  - name: formatDuration
    type: function
    cc: 5
  - name: mins
    type: function
    cc: 2
  - name: hours
    type: function
    cc: 2
  - name: days
    type: function
    cc: 2
  - name: formatSize
    type: function
    cc: 4
- path: src/proxym/domain/events.py
  lines: 348
  classes: 27
  methods: 11
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: DomainEvent
    type: class
    cc_avg: 2.0
  - name: ProjectCreated
    type: class
    cc_avg: 0.0
  - name: ProjectUpdated
    type: class
    cc_avg: 0.0
  - name: ProjectRemoved
    type: class
    cc_avg: 0.0
  - name: ProjectScanned
    type: class
    cc_avg: 0.0
  - name: SetupStepToggled
    type: class
    cc_avg: 0.0
  - name: SetupChecklistReset
    type: class
    cc_avg: 0.0
  - name: UserCreated
    type: class
    cc_avg: 0.0
  - name: UserUpdated
    type: class
    cc_avg: 0.0
  - name: UserDeleted
    type: class
    cc_avg: 0.0
  - name: UsersSyncedFromGit
    type: class
    cc_avg: 0.0
  - name: TaskCreated
    type: class
    cc_avg: 0.0
  - name: TaskAssigned
    type: class
    cc_avg: 0.0
  - name: TaskCompleted
    type: class
    cc_avg: 0.0
  - name: TaskFailed
    type: class
    cc_avg: 0.0
  - name: TaskUpdated
    type: class
    cc_avg: 0.0
  - name: TaskDeleted
    type: class
    cc_avg: 0.0
  - name: JobDispatched
    type: class
    cc_avg: 0.0
  - name: JobCompleted
    type: class
    cc_avg: 0.0
  - name: JobFailed
    type: class
    cc_avg: 0.0
  - name: ToolReadinessProbed
    type: class
    cc_avg: 0.0
  - name: ToolStartupComplete
    type: class
    cc_avg: 0.0
  - name: MCPToolInvoked
    type: class
    cc_avg: 0.0
  - name: MCPServerRegistered
    type: class
    cc_avg: 0.0
  - name: ValidationRequested
    type: class
    cc_avg: 0.0
  - name: ValidationCompleted
    type: class
    cc_avg: 0.0
  - name: EventStore
    type: class
    cc_avg: 3.4
    methods:
    - name: _load
      cc: 6
      fan_out: 11
- path: src/proxym/domain/handlers/setup_handler.py
  lines: 172
  classes: 4
  methods: 14
  cc_max: 7
  inbound_deps: 1
  exports:
  - name: SetupChecklistSnapshot
    type: class
    cc_avg: 0.0
  - name: SetupChecklistProjection
    type: class
    cc_avg: 3.0
  - name: SetupCommandHandler
    type: class
    cc_avg: 2.5
  - name: SetupQueryHandler
    type: class
    cc_avg: 1.5
  - name: get_setup_projection
    type: function
    cc: 3
  - name: reset_setup_projection
    type: function
    cc: 1
- path: src/proxym/mcp/_tools_vallm.py
  lines: 318
  classes: 3
  methods: 10
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: ValidateCodeReq
    type: class
    cc_avg: 0.0
  - name: ValidateSyntaxReq
    type: class
    cc_avg: 0.0
  - name: ValidateSecurityReq
    type: class
    cc_avg: 0.0
  - name: tool_validate_syntax
    type: function
    cc: 1
  - name: tool_validate_imports
    type: function
    cc: 1
  - name: tool_validate_security
    type: function
    cc: 1
  - name: tool_validate_code
    type: function
    cc: 7
    fan_out: 14
- path: src/proxym/observability/watchdog.py
  lines: 211
  classes: 1
  methods: 13
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: HealthWatchdog
    type: class
    cc_avg: 3.5
- path: src/proxym/tools/adapters/_base.py
  lines: 100
  classes: 1
  methods: 3
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: BaseAdapter
    type: class
    cc_avg: 3.0
    methods:
    - name: run
      cc: 7
      fan_out: 12
- path: src/proxym/tools/adapters/_shell.py
  lines: 96
  classes: 1
  methods: 2
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: ShellAdapter
    type: class
    cc_avg: 5.5
    methods:
    - name: run
      cc: 7
      fan_out: 14
- path: src/proxym/tools/adapters/_vscode.py
  lines: 113
  classes: 1
  methods: 3
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: VSCodeAdapter
    type: class
    cc_avg: 3.7
    methods:
    - name: run
      cc: 7
      fan_out: 13
- path: src/proxym/virt/_lifecycle.py
  lines: 236
  classes: 1
  methods: 12
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: _LifecycleMixin
    type: class
    cc_avg: 4.0
    methods:
    - name: create_vm
      cc: 4
      fan_out: 10
    - name: _create_vm_clonebox
      cc: 7
      fan_out: 11
    - name: start_vm
      cc: 5
      fan_out: 10
- path: src/proxym/virt/_state.py
  lines: 94
  classes: 1
  methods: 5
  cc_max: 7
  inbound_deps: 0
  exports:
  - name: _StateMixin
    type: class
    cc_avg: 5.0
- path: src/proxym/api/frontend.py
  lines: 266
  classes: 0
  methods: 11
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: root_redirect
    type: function
    cc: 1
  - name: dashboard_ui
    type: function
    cc: 2
  - name: dashboard_diagnostics_jsx
    type: function
    cc: 1
  - name: dashboard_jsx
    type: function
    cc: 1
  - name: get_frontend_config
    type: function
    cc: 2
- path: src/proxym/api/system.py
  lines: 125
  classes: 0
  methods: 7
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: get_cost_ledger
    type: function
    cc: 1
  - name: favicon
    type: function
    cc: 1
  - name: health
    type: function
    cc: 3
  - name: list_models
    type: function
    cc: 4
  - name: budget_status
    type: function
    cc: 1
- path: src/proxym/cli/_groups/tools_ctl.py
  lines: 139
  classes: 0
  methods: 6
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: tools
    type: function
    cc: 1
  - name: tools_list
    type: function
    cc: 6
    fan_out: 10
  - name: tools_dispatch
    type: function
    cc: 1
  - name: tools_queue
    type: function
    cc: 4
  - name: tools_jobs
    type: function
    cc: 4
    fan_out: 10
  - name: tools_set_model
    type: function
    cc: 2
- path: src/proxym/cli/browser.py
  lines: 65
  classes: 0
  methods: 5
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: cmd_browser_list
    type: function
    cc: 6
  - name: cmd_browser_assign
    type: function
    cc: 2
  - name: cmd_browser_sync
    type: function
    cc: 1
  - name: cmd_browser_snapshot
    type: function
    cc: 1
- path: src/proxym/cli/system.py
  lines: 185
  classes: 0
  methods: 6
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: cmd_serve
    type: function
    cc: 6
  - name: cmd_status
    type: function
    cc: 3
  - name: cmd_models
    type: function
    cc: 6
    fan_out: 10
- path: src/proxym/cli/tts.py
  lines: 85
  classes: 1
  methods: 5
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: TTSEngine
    type: class
    cc_avg: 3.0
- path: src/proxym/dashboard/tools/_helpers.py
  lines: 52
  classes: 0
  methods: 3
  cc_max: 6
  inbound_deps: 3
- path: src/proxym/mcp/client.py
  lines: 151
  classes: 2
  methods: 4
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: MCPToolResult
    type: class
    cc_avg: 0.0
  - name: MCPClient
    type: class
    cc_avg: 4.0
- path: src/proxym/middleware/__init__.py
  lines: 70
  classes: 2
  methods: 4
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: AuthMiddleware
    type: class
    cc_avg: 2.7
  - name: CostTrackingMiddleware
    type: class
    cc_avg: 2.0
- path: src/proxym/observability/health_events.py
  lines: 93
  classes: 3
  methods: 7
  cc_max: 6
  inbound_deps: 3
  exports:
  - name: Severity
    type: class
    cc_avg: 0.0
  - name: HealthEvent
    type: class
    cc_avg: 0.0
  - name: HealthEventStore
    type: class
    cc_avg: 3.5
  - name: get_health_store
    type: function
    cc: 1
- path: src/proxym/storage.py
  lines: 153
  classes: 1
  methods: 7
  cc_max: 6
  inbound_deps: 3
  exports:
  - name: SQLiteNamespaceStore
    type: class
    cc_avg: 3.3
    methods:
    - name: save_namespaces
      cc: 4
      fan_out: 10
  - name: is_sqlite_database
    type: function
    cc: 2
- path: src/proxym/virt/_snapshot.py
  lines: 90
  classes: 1
  methods: 4
  cc_max: 6
  inbound_deps: 0
  exports:
  - name: _SnapshotMixin
    type: class
    cc_avg: 5.0
    methods:
    - name: delete_vm
      cc: 6
      fan_out: 11
- path: scripts/proxym-voice-chat.py
  lines: 73
  classes: 0
  methods: 3
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: check_voice_deps
    type: function
    cc: 2
  - name: install_voice_deps
    type: function
    cc: 1
  - name: main
    type: function
    cc: 5
    fan_out: 10
- path: src/proxym/api/vscode_api.py
  lines: 198
  classes: 0
  methods: 11
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: vscode_status
    type: function
    cc: 2
  - name: vscode_start
    type: function
    cc: 5
  - name: vscode_stop
    type: function
    cc: 3
  - name: vscode_restart
    type: function
    cc: 3
  - name: vscode_logs
    type: function
    cc: 2
  - name: vscode_build
    type: function
    cc: 1
- path: src/proxym/cli/dsl.py
  lines: 287
  classes: 2
  methods: 8
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: ParsedCommand
    type: class
    cc_avg: 0.0
  - name: DSLParser
    type: class
    cc_avg: 3.4
- path: src/proxym/context/tool_selector.py
  lines: 101
  classes: 0
  methods: 2
  cc_max: 5
  inbound_deps: 1
  exports:
  - name: select_tools
    type: function
    cc: 5
- path: src/proxym/dashboard/_events_sse.py
  lines: 101
  classes: 0
  methods: 2
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: events_stream
    type: function
    cc: 2
    fan_out: 17
- path: src/proxym/dashboard/components/human/HumanTaskBoard.jsx
  lines: 34
  classes: 0
  methods: 1
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: HumanTaskBoard
    type: function
    cc: 5
- path: src/proxym/dashboard/components/tasks/TasksBoard.jsx
  lines: 34
  classes: 0
  methods: 1
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: TasksBoard
    type: function
    cc: 5
- path: src/proxym/dashboard/components/tools/DispatchActions.jsx
  lines: 46
  classes: 0
  methods: 1
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: DispatchActions
    type: function
    cc: 5
- path: src/proxym/domain/bus.py
  lines: 154
  classes: 4
  methods: 6
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: Command
    type: class
    cc_avg: 0.0
  - name: Query
    type: class
    cc_avg: 0.0
  - name: CommandBus
    type: class
    cc_avg: 2.7
    methods:
    - name: dispatch
      cc: 5
      fan_out: 10
  - name: QueryBus
    type: class
    cc_avg: 2.3
- path: src/proxym/domain/handlers/task_handler.py
  lines: 116
  classes: 1
  methods: 5
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: TaskCommandHandler
    type: class
    cc_avg: 2.8
- path: src/proxym/domain/handlers/user_handler.py
  lines: 175
  classes: 2
  methods: 12
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: UserCommandHandler
    type: class
    cc_avg: 2.8
  - name: UserQueryHandler
    type: class
    cc_avg: 2.0
- path: src/proxym/mcp/router.py
  lines: 95
  classes: 1
  methods: 4
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: MCPRouter
    type: class
    cc_avg: 3.0
- path: src/proxym/tools/adapters/_aider.py
  lines: 23
  classes: 1
  methods: 1
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: AiderAdapter
    type: class
    cc_avg: 5.0
- path: src/proxym/virt/_orchestrator.py
  lines: 94
  classes: 1
  methods: 5
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: VMOrchestrator
    type: class
    cc_avg: 2.8
- path: src/proxym/virt/clonebox_adapter.py
  lines: 209
  classes: 2
  methods: 17
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: CloneBoxResult
    type: class
    cc_avg: 0.0
  - name: CloneBoxAdapter
    type: class
    cc_avg: 1.9
- path: src/proxym/virt/profiles/__init__.py
  lines: 69
  classes: 0
  methods: 4
  cc_max: 5
  inbound_deps: 2
  exports:
  - name: get_builtin_profile
    type: function
    cc: 2
  - name: list_builtin_profiles
    type: function
    cc: 2
  - name: merge_profiles
    type: function
    cc: 5
  - name: load_profile_yaml
    type: function
    cc: 4
- path: src/proxym/watch/__init__.py
  lines: 146
  classes: 1
  methods: 5
  cc_max: 5
  inbound_deps: 0
  exports:
  - name: DeltaWatchClient
    type: class
    cc_avg: 3.2
  - name: cli
    type: function
    cc: 2
- path: src/proxym/api/_diag_common.py
  lines: 20
  classes: 0
  methods: 1
  cc_max: 4
  inbound_deps: 1
- path: src/proxym/api/observability_api.py
  lines: 111
  classes: 1
  methods: 8
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: RepairRequest
    type: class
    cc_avg: 0.0
  - name: obs_logs
    type: function
    cc: 1
  - name: obs_errors
    type: function
    cc: 1
  - name: obs_health_events
    type: function
    cc: 1
  - name: obs_health_summary
    type: function
    cc: 1
  - name: obs_repair
    type: function
    cc: 3
  - name: obs_repair_from_logs
    type: function
    cc: 2
  - name: obs_repair_history
    type: function
    cc: 1
  - name: obs_domain_events
    type: function
    cc: 4
- path: src/proxym/dashboard/_costs.py
  lines: 65
  classes: 0
  methods: 3
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: cost_summary
    type: function
    cc: 1
  - name: cost_detailed
    type: function
    cc: 2
  - name: list_tools
    type: function
    cc: 4
- path: src/proxym/dashboard/components/diagnostics/helpers.jsx
  lines: 22
  classes: 0
  methods: 4
  cc_max: 4
  inbound_deps: 6
  exports:
  - name: cls
    type: function
    cc: 3
- path: src/proxym/dashboard/components/tools/DispatchTableRow.jsx
  lines: 55
  classes: 0
  methods: 7
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: DispatchTableRow
    type: function
    cc: 4
  - name: statusBadges
    type: function
    cc: 1
  - name: projectResolver
    type: function
    cc: 1
  - name: currentTool
    type: function
    cc: 1
  - name: toolInfo
    type: function
    cc: 1
  - name: projectInfo
    type: function
    cc: 1
  - name: projectDir
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tools/ProviderConfigPanel.jsx
  lines: 38
  classes: 0
  methods: 1
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: ProviderConfigPanel
    type: function
    cc: 4
- path: src/proxym/dashboard/components/tools/ToolAvailabilityAlert.jsx
  lines: 24
  classes: 0
  methods: 1
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: ToolAvailabilityAlert
    type: function
    cc: 4
- path: src/proxym/dashboard/components/ui.jsx
  lines: 65
  classes: 0
  methods: 6
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: StatusBadge
    type: function
    cc: 2
  - name: CostBar
    type: function
    cc: 4
  - name: pct
    type: function
    cc: 3
  - name: Card
    type: function
    cc: 2
  - name: StateBadge
    type: function
    cc: 3
  - name: colors
    type: function
    cc: 1
- path: src/proxym/dashboard/tools/_providers.py
  lines: 55
  classes: 1
  methods: 2
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: ToolProviderRequest
    type: class
    cc_avg: 0.0
  - name: set_tool_provider
    type: function
    cc: 4
  - name: get_tool_providers
    type: function
    cc: 1
- path: src/proxym/dashboard/tools/_registry.py
  lines: 69
  classes: 0
  methods: 5
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: list_tools
    type: function
    cc: 3
  - name: tools_summary
    type: function
    cc: 4
  - name: update_tool
    type: function
    cc: 3
  - name: get_tool
    type: function
    cc: 2
- path: src/proxym/dashboard/tools/utils/_aider_install_fix.py
  lines: 31
  classes: 0
  methods: 1
  cc_max: 4
  inbound_deps: 2
- path: src/proxym/mcp/_tools_tickets.py
  lines: 198
  classes: 3
  methods: 5
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: TicketCreateRequest
    type: class
    cc_avg: 0.0
  - name: TicketAssignRequest
    type: class
    cc_avg: 0.0
  - name: SprintCreateRequest
    type: class
    cc_avg: 0.0
  - name: tool_ticket_list
    type: function
    cc: 4
  - name: tool_ticket_create
    type: function
    cc: 2
  - name: tool_ticket_assign
    type: function
    cc: 3
  - name: tool_ticket_board
    type: function
    cc: 2
  - name: tool_sprint_create
    type: function
    cc: 2
- path: src/proxym/mcp/_tools_vm.py
  lines: 194
  classes: 4
  methods: 7
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: VMCreateRequest
    type: class
    cc_avg: 0.0
  - name: VMActionRequest
    type: class
    cc_avg: 0.0
  - name: VMSnapshotRequest
    type: class
    cc_avg: 0.0
  - name: VMSwitchRequest
    type: class
    cc_avg: 0.0
  - name: tool_vm_list
    type: function
    cc: 4
  - name: tool_vm_create
    type: function
    cc: 2
  - name: tool_vm_start
    type: function
    cc: 1
  - name: tool_vm_stop
    type: function
    cc: 1
  - name: tool_vm_snapshot
    type: function
    cc: 3
  - name: tool_vm_switch_project
    type: function
    cc: 2
- path: src/proxym/mcp/registry.py
  lines: 113
  classes: 3
  methods: 8
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: MCPTransport
    type: class
    cc_avg: 0.0
  - name: MCPServerSpec
    type: class
    cc_avg: 0.0
  - name: MCPRegistry
    type: class
    cc_avg: 2.2
- path: src/proxym/utils/messages.py
  lines: 11
  classes: 0
  methods: 1
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: extract_system_text
    type: function
    cc: 4
- path: src/proxym/virt/_infra.py
  lines: 118
  classes: 1
  methods: 4
  cc_max: 4
  inbound_deps: 0
  exports:
  - name: _InfraMixin
    type: class
    cc_avg: 3.2
- path: src/proxym/cli/utils/cmd_sessions_list.py
  lines: 46
  classes: 0
  methods: 3
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: cmd_list_items
    type: function
    cc: 3
  - name: cmd_sessions_list
    type: function
    cc: 1
  - name: cmd_mcp_servers
    type: function
    cc: 1
- path: src/proxym/cli/voice.py
  lines: 81
  classes: 1
  methods: 3
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: VoiceListener
    type: class
    cc_avg: 2.3
- path: src/proxym/cli/vscode.py
  lines: 81
  classes: 0
  methods: 8
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: cmd_vscode_start
    type: function
    cc: 2
  - name: cmd_vscode_stop
    type: function
    cc: 2
  - name: cmd_vscode_open
    type: function
    cc: 1
  - name: cmd_vscode_logs
    type: function
    cc: 1
  - name: cmd_vscode_status
    type: function
    cc: 1
  - name: cmd_vscode_build
    type: function
    cc: 2
- path: src/proxym/config.py
  lines: 153
  classes: 1
  methods: 3
  cc_max: 3
  inbound_deps: 33
  exports:
  - name: Settings
    type: class
    cc_avg: 2.0
  - name: get_settings
    type: function
    cc: 1
- path: src/proxym/context/_context.py
  lines: 33
  classes: 1
  methods: 1
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: ProjectContext
    type: class
    cc_avg: 3.0
- path: src/proxym/dashboard/_accounts.py
  lines: 97
  classes: 2
  methods: 5
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: CreateAccountReq
    type: class
    cc_avg: 0.0
  - name: BindToolReq
    type: class
    cc_avg: 0.0
  - name: list_accounts
    type: function
    cc: 3
  - name: create_account
    type: function
    cc: 1
  - name: get_account
    type: function
    cc: 2
  - name: delete_account
    type: function
    cc: 2
  - name: bind_tool
    type: function
    cc: 2
- path: src/proxym/dashboard/_setup_api.py
  lines: 63
  classes: 1
  methods: 5
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: ToggleSetupStepReq
    type: class
    cc_avg: 0.0
  - name: get_setup_state
    type: function
    cc: 1
  - name: toggle_setup_step
    type: function
    cc: 3
  - name: reset_setup
    type: function
    cc: 2
- path: src/proxym/dashboard/api.js
  lines: 46
  classes: 0
  methods: 12
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: ct
    type: function
    cc: 1
  - name: get
    type: function
    cc: 1
  - name: body
    type: function
    cc: 1
  - name: post
    type: function
    cc: 1
  - name: payload
    type: function
    cc: 1
  - name: put
    type: function
    cc: 1
  - name: del
    type: function
    cc: 1
- path: src/proxym/dashboard/components/human/HumanTaskTable.jsx
  lines: 17
  classes: 0
  methods: 1
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: HumanTaskTable
    type: function
    cc: 3
- path: src/proxym/dashboard/components/tasks/TasksTable.jsx
  lines: 17
  classes: 0
  methods: 1
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: TasksTable
    type: function
    cc: 3
- path: src/proxym/dashboard/components/tools/ToolsPanelRefactored.jsx
  lines: 43
  classes: 0
  methods: 1
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: ToolsPanelRefactored
    type: function
    cc: 3
- path: src/proxym/dashboard/components/voice_schemas.jsx
  lines: 187
  classes: 0
  methods: 10
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: vms
    type: function
    cc: 3
  - name: running
    type: function
    cc: 3
  - name: daily
    type: function
    cc: 1
  - name: monthly
    type: function
    cc: 1
  - name: logs
    type: function
    cc: 3
  - name: ids
    type: function
    cc: 1
  - name: routes
    type: function
    cc: 2
  - name: ok
    type: function
    cc: 3
  - name: fail
    type: function
    cc: 3
  - name: accounts
    type: function
    cc: 2
- path: src/proxym/dashboard/tools/utils/start_executor.py
  lines: 24
  classes: 0
  methods: 3
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: start_executor
    type: function
    cc: 1
  - name: stop_executor
    type: function
    cc: 1
- path: src/proxym/dashboard/utils/delete_ticket.py
  lines: 18
  classes: 0
  methods: 2
  cc_max: 3
  inbound_deps: 2
  exports:
  - name: delete_item
    type: function
    cc: 1
  - name: delete_ticket_from_dict
    type: function
    cc: 3
- path: src/proxym/mcp/_tools_system.py
  lines: 100
  classes: 0
  methods: 3
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: tool_status
    type: function
    cc: 2
  - name: tool_logs
    type: function
    cc: 2
  - name: tool_models
    type: function
    cc: 3
- path: src/proxym/tools/adapters/__init__.py
  lines: 65
  classes: 0
  methods: 2
  cc_max: 3
  inbound_deps: 1
  exports:
  - name: get_adapter
    type: function
    cc: 3
  - name: register_adapter
    type: function
    cc: 1
- path: src/proxym/virt/_check.py
  lines: 17
  classes: 0
  methods: 1
  cc_max: 3
  inbound_deps: 1
- path: src/proxym/virt/_project.py
  lines: 45
  classes: 1
  methods: 2
  cc_max: 3
  inbound_deps: 0
  exports:
  - name: _ProjectMixin
    type: class
    cc_avg: 3.0
- path: src/proxym/api/_state.py
  lines: 85
  classes: 0
  methods: 6
  cc_max: 2
  inbound_deps: 4
  exports:
  - name: get_router
    type: function
    cc: 2
  - name: get_delta_buffer
    type: function
    cc: 2
  - name: get_mcp_router
    type: function
    cc: 2
  - name: get_session_store
    type: function
    cc: 1
  - name: get_context_payload
    type: function
    cc: 1
  - name: set_context_payload
    type: function
    cc: 1
- path: src/proxym/cli/_groups/_shared.py
  lines: 84
  classes: 0
  methods: 7
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: make_args
    type: function
    cc: 1
  - name: passthrough
    type: function
    cc: 1
  - name: passthrough_fmt
    type: function
    cc: 1
  - name: passthrough_arg
    type: function
    cc: 1
  - name: api_json_cmd
    type: function
    cc: 1
  - name: register_commands
    type: function
    cc: 2
  - name: api_json_arg_cmd
    type: function
    cc: 1
- path: src/proxym/dashboard/_shared.py
  lines: 25
  classes: 0
  methods: 2
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: shared_accounts
    type: function
    cc: 2
  - name: shared_vms
    type: function
    cc: 2
- path: src/proxym/dashboard/components/human/HumanTaskList.jsx
  lines: 24
  classes: 0
  methods: 1
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: HumanTaskList
    type: function
    cc: 2
- path: src/proxym/dashboard/components/tasks/TasksList.jsx
  lines: 24
  classes: 0
  methods: 1
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: TasksList
    type: function
    cc: 2
- path: src/proxym/dashboard/components/tickets/TicketStats.jsx
  lines: 46
  classes: 0
  methods: 1
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: TicketStats
    type: function
    cc: 2
- path: src/proxym/dashboard/tickets/utils/delete_ticket.py
  lines: 25
  classes: 0
  methods: 1
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: delete_ticket_from_dict
    type: function
    cc: 2
- path: src/proxym/dashboard/utils/_delete_item.py
  lines: 10
  classes: 0
  methods: 1
  cc_max: 2
  inbound_deps: 2
- path: src/proxym/dashboard/utils/_emit_event.py
  lines: 12
  classes: 0
  methods: 1
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: emit_event
    type: function
    cc: 2
- path: src/proxym/domain/setup.py
  lines: 162
  classes: 0
  methods: 4
  cc_max: 2
  inbound_deps: 9
  exports:
  - name: get_event_store
    type: function
    cc: 2
  - name: get_command_bus
    type: function
    cc: 2
    fan_out: 12
  - name: get_query_bus
    type: function
    cc: 2
    fan_out: 10
  - name: reset_buses
    type: function
    cc: 1
- path: src/proxym/mcp/_tools_accounts.py
  lines: 71
  classes: 1
  methods: 3
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: AccountAddRequest
    type: class
    cc_avg: 0.0
  - name: tool_account_list
    type: function
    cc: 2
  - name: tool_account_costs
    type: function
    cc: 2
  - name: tool_account_add
    type: function
    cc: 2
- path: src/proxym/tools/adapters/_claude_code.py
  lines: 18
  classes: 1
  methods: 1
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: ClaudeCodeAdapter
    type: class
    cc_avg: 2.0
- path: src/proxym/tools/adapters/_result.py
  lines: 38
  classes: 1
  methods: 1
  cc_max: 2
  inbound_deps: 0
  exports:
  - name: ToolResult
    type: class
    cc_avg: 2.0
- path: src/proxym/utils/get_settings.py
  lines: 12
  classes: 0
  methods: 1
  cc_max: 2
  inbound_deps: 2
  exports:
  - name: get_singleton
    type: function
    cc: 2
- path: docs/open-webui-tools/proxym_tools.py
  lines: 90
  classes: 1
  methods: 9
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: ProxymTools
    type: class
    cc_avg: 1.0
- path: src/proxym/cli/_groups/accounts_ctl.py
  lines: 82
  classes: 0
  methods: 7
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: accounts
    type: function
    cc: 1
  - name: accounts_list
    type: function
    cc: 1
  - name: accounts_add
    type: function
    cc: 1
  - name: accounts_costs
    type: function
    cc: 1
  - name: accounts_get
    type: function
    cc: 1
  - name: accounts_delete
    type: function
    cc: 1
  - name: accounts_bind_tool
    type: function
    cc: 1
- path: src/proxym/cli/_groups/browser_ctl.py
  lines: 36
  classes: 0
  methods: 2
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: browser
    type: function
    cc: 1
  - name: browser_assign
    type: function
    cc: 1
- path: src/proxym/cli/_groups/context_ctl.py
  lines: 46
  classes: 0
  methods: 3
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: context
    type: function
    cc: 1
  - name: context_delta
    type: function
    cc: 1
  - name: context_detect
    type: function
    cc: 1
- path: src/proxym/cli/_groups/diagnostics_ctl.py
  lines: 66
  classes: 0
  methods: 3
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: tests
    type: function
    cc: 1
  - name: diagnose
    type: function
    cc: 1
  - name: diagnose_one
    type: function
    cc: 1
- path: src/proxym/cli/_groups/observability_ctl.py
  lines: 50
  classes: 0
  methods: 5
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: obs
    type: function
    cc: 1
  - name: obs_errors
    type: function
    cc: 1
  - name: obs_health
    type: function
    cc: 1
  - name: obs_logs
    type: function
    cc: 1
  - name: obs_repair
    type: function
    cc: 1
- path: src/proxym/cli/_groups/vms_ctl.py
  lines: 107
  classes: 0
  methods: 7
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: vm
    type: function
    cc: 1
  - name: vm_create
    type: function
    cc: 1
  - name: vm_stop
    type: function
    cc: 1
  - name: vm_snapshot
    type: function
    cc: 1
  - name: vm_switch
    type: function
    cc: 1
  - name: vm_ssh
    type: function
    cc: 1
  - name: vm_bulk_delete
    type: function
    cc: 1
- path: src/proxym/cli/_groups/vscode_ctl.py
  lines: 24
  classes: 0
  methods: 1
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: vscode
    type: function
    cc: 1
- path: src/proxym/dashboard/components/human/HumanTaskStats.jsx
  lines: 33
  classes: 0
  methods: 1
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: HumanTaskStats
    type: function
    cc: 1
- path: src/proxym/dashboard/components/human/HumanViewControls.jsx
  lines: 8
  classes: 0
  methods: 1
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: HumanViewControls
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tasks/TasksViewControls.jsx
  lines: 8
  classes: 0
  methods: 1
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: TasksViewControls
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tools/ToolsDispatch.jsx
  lines: 14
  classes: 0
  methods: 1
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: ToolsDispatch
    type: function
    cc: 1
- path: src/proxym/dashboard/components/tools/ToolsRegistry.jsx
  lines: 34
  classes: 0
  methods: 3
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: ToolsRegistry
    type: function
    cc: 1
  - name: available
    type: function
    cc: 1
  - name: unavailable
    type: function
    cc: 1
- path: src/proxym/dashboard/tools/_lifecycle.py
  lines: 21
  classes: 0
  methods: 2
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: start_executor
    type: function
    cc: 1
  - name: stop_executor
    type: function
    cc: 1
- path: src/proxym/dashboard/utils/delete_milestone.py
  lines: 13
  classes: 0
  methods: 2
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: delete_milestone
    type: function
    cc: 1
  - name: delete_vm
    type: function
    cc: 1
- path: src/proxym/mcp/_helpers.py
  lines: 20
  classes: 0
  methods: 3
  cc_max: 1
  inbound_deps: 4
- path: src/proxym/tools/adapters/_human.py
  lines: 53
  classes: 1
  methods: 2
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: HumanAdapter
    type: class
    cc_avg: 1.0
- path: src/proxym/virt/utils/detect_chrome_profiles.py
  lines: 27
  classes: 0
  methods: 3
  cc_max: 1
  inbound_deps: 0
  exports:
  - name: detect_chrome_profiles
    type: function
    cc: 1
  - name: detect_chromium_profiles
    type: function
    cc: 1
- path: frontend/proxym-dashboard.jsx
  lines: 6
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: project.sh
  lines: 21
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: scripts/check_dashboard.sh
  lines: 126
  classes: 0
  methods: 8
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: usage
    type: function
    cc: 0
  - name: log_pass
    type: function
    cc: 0
  - name: log_fail
    type: function
    cc: 0
  - name: log_info
    type: function
    cc: 0
  - name: require_cmd
    type: function
    cc: 0
  - name: check_contains
    type: function
    cc: 0
  - name: check_status
    type: function
    cc: 0
  - name: main
    type: function
    cc: 0
- path: scripts/evaluate_llm_work.sh
  lines: 169
  classes: 0
  methods: 2
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: check
    type: function
    cc: 0
  - name: skip
    type: function
    cc: 0
- path: scripts/jetson-entrypoint.sh
  lines: 43
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: scripts/proxym-voice-server.sh
  lines: 64
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: scripts/setup.sh
  lines: 93
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: scripts/validate_system.sh
  lines: 531
  classes: 0
  methods: 11
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: api
    type: function
    cc: 0
  - name: parse_response
    type: function
    cc: 0
  - name: phase_health
    type: function
    cc: 0
  - name: phase_tools
    type: function
    cc: 0
  - name: phase_executor
    type: function
    cc: 0
  - name: dispatch_and_monitor
    type: function
    cc: 0
  - name: phase_lifecycle
    type: function
    cc: 0
  - name: phase_queue_logs
    type: function
    cc: 0
  - name: phase_tickets
    type: function
    cc: 0
  - name: phase_healthcheck
    type: function
    cc: 0
  - name: summary
    type: function
    cc: 0
- path: services/vscode/entrypoint.sh
  lines: 369
  classes: 0
  methods: 1
  cc_max: 0
  inbound_deps: 16
  exports:
  - name: print
    type: function
    cc: 0
- path: src/proxym/__init__.py
  lines: 3
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/api/__init__.py
  lines: 24
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/cli/__init__.py
  lines: 1
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/cli/_groups/__init__.py
  lines: 1
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/context/__init__.py
  lines: 24
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/dashboard/__init__.py
  lines: 39
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/dashboard/components/shared/TicketConstants.jsx
  lines: 48
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/dashboard/tickets/__init__.py
  lines: 36
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/dashboard/tools/__init__.py
  lines: 24
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/dashboard/tools/utils/__init__.py
  lines: 1
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/dashboard/utils/__init__.py
  lines: 1
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/domain/__init__.py
  lines: 26
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/domain/commands/__init__.py
  lines: 39
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/domain/commands/project_commands.py
  lines: 69
  classes: 4
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: AddProjectCommand
    type: class
    cc_avg: 0.0
  - name: UpdateProjectCommand
    type: class
    cc_avg: 0.0
  - name: RemoveProjectCommand
    type: class
    cc_avg: 0.0
  - name: ScanDirectoryCommand
    type: class
    cc_avg: 0.0
- path: src/proxym/domain/commands/setup_commands.py
  lines: 22
  classes: 2
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: ToggleSetupStepCommand
    type: class
    cc_avg: 0.0
  - name: ResetSetupChecklistCommand
    type: class
    cc_avg: 0.0
- path: src/proxym/domain/commands/task_commands.py
  lines: 39
  classes: 3
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: CreateTaskCommand
    type: class
    cc_avg: 0.0
  - name: AssignTaskCommand
    type: class
    cc_avg: 0.0
  - name: CompleteTaskCommand
    type: class
    cc_avg: 0.0
- path: src/proxym/domain/commands/user_commands.py
  lines: 37
  classes: 4
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: CreateUserCommand
    type: class
    cc_avg: 0.0
  - name: UpdateUserCommand
    type: class
    cc_avg: 0.0
  - name: DeleteUserCommand
    type: class
    cc_avg: 0.0
  - name: SyncGitUsersCommand
    type: class
    cc_avg: 0.0
- path: src/proxym/domain/handlers/__init__.py
  lines: 19
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/domain/queries/__init__.py
  lines: 25
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/domain/queries/project_queries.py
  lines: 29
  classes: 3
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: ListProjectsQuery
    type: class
    cc_avg: 0.0
  - name: GetProjectQuery
    type: class
    cc_avg: 0.0
  - name: GetProjectTicketsQuery
    type: class
    cc_avg: 0.0
- path: src/proxym/domain/queries/setup_queries.py
  lines: 14
  classes: 1
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: GetSetupChecklistQuery
    type: class
    cc_avg: 0.0
- path: src/proxym/domain/queries/user_queries.py
  lines: 31
  classes: 4
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: ListUsersQuery
    type: class
    cc_avg: 0.0
  - name: GetUserQuery
    type: class
    cc_avg: 0.0
  - name: GetDefaultUserQuery
    type: class
    cc_avg: 0.0
  - name: GetGitSyncStatusQuery
    type: class
    cc_avg: 0.0
- path: src/proxym/mcp/__init__.py
  lines: 24
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/mcp/self_server.py
  lines: 50
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/utils/__init__.py
  lines: 1
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/virt/__init__.py
  lines: 41
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
- path: src/proxym/virt/_enums.py
  lines: 18
  classes: 2
  methods: 0
  cc_max: 0
  inbound_deps: 0
  exports:
  - name: VMBackend
    type: class
    cc_avg: 0.0
  - name: VMState
    type: class
    cc_avg: 0.0
- path: src/proxym/watch/client.py
  lines: 4
  classes: 0
  methods: 0
  cc_max: 0
  inbound_deps: 0
hotspots:
- name: TicketsPanel
  fan_out: 56
  note: Orchestrates 56 calls
- name: TasksPanel
  fan_out: 46
  note: Orchestrates 46 calls
- name: useDashboardData
  fan_out: 44
  note: Orchestrates 44 calls
- name: EnvironmentsPanel
  fan_out: 42
  note: Orchestrates 42 calls
- name: SetupPanel
  fan_out: 36
  note: Orchestrates 36 calls
- name: create_ticket
  fan_out: 31
  note: Create a new ticket. Accepts 'task' (new) or 'title' (legacy).
- name: VoiceChat
  fan_out: 31
  note: Orchestrates 31 calls
- name: ProjectFormUnified
  fan_out: 31
  note: Orchestrates 31 calls
- name: DiagnosticsPanel
  fan_out: 30
  note: Orchestrates 30 calls
- name: run_all_tests
  fan_out: 28
  note: Run all diagnostic tests and return comprehensive status.
refactoring:
  priorities:
  - action: Split ToolExecutor._sync_ticket_execution (CC=25 → target CC<10)
    impact: high
    effort: low
    module: executor.py
  - action: Split enrich_project (CC=28 → target CC<10)
    impact: high
    effort: low
    module: project_handler.py
  - action: Split DiagnosticsPanel (CC=40 → target CC<10)
    impact: high
    effort: low
    module: diagnostics.jsx
  - action: Split LogPanel (CC=34 → target CC<10)
    impact: high
    effort: low
    module: logs.jsx
  - action: Split HumanTaskPanel (CC=65 → target CC<10)
    impact: high
    effort: low
    module: human.jsx
  - action: Split VMsPanel (CC=36 → target CC<10)
    impact: high
    effort: low
    module: vms.jsx
  - action: Split _resolveJobEnvironment (CC=25 → target CC<10)
    impact: high
    effort: low
    module: tasks.jsx
  - action: Split TaskCardMeta (CC=37 → target CC<10)
    impact: high
    effort: low
    module: tasks.jsx
  - action: Split TaskJobBadge (CC=25 → target CC<10)
    impact: high
    effort: low
    module: tasks.jsx
  - action: Split TaskBulkEditBar (CC=30 → target CC<10)
    impact: high
    effort: low
    module: tasks.jsx
  - action: Split QuickTaskCreator (CC=31 → target CC<10)
    impact: high
    effort: low
    module: tasks.jsx
  - action: Split TasksPanel (CC=129 → target CC<10)
    impact: high
    effort: low
    module: tasks.jsx
  - action: Split ToolCard (CC=26 → target CC<10)
    impact: high
    effort: low
    module: tools.jsx
  - action: Split JobRow (CC=35 → target CC<10)
    impact: high
    effort: low
    module: tools.jsx
  - action: Split JobDetailsPanel (CC=77 → target CC<10)
    impact: high
    effort: low
    module: tools.jsx
evolution:
- date: '2026-03-21'
  cc_avg: 3.3
  critical: 12
  lines: 11396
  note: Automated analysis
- date: '2026-03-22'
  cc_avg: 3.6
  critical: 31
  lines: 20429
  note: Automated analysis
- date: '2026-03-23'
  cc_avg: 4.4
  critical: 156
  lines: 51944
  note: Automated analysis
- date: '2026-03-24'
  cc_avg: 4.6
  critical: 208
  lines: 58422
  note: Automated analysis
