@guidemode/session-processing 0.1.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +108 -0
- package/dist/cjs/ai-models/base/index.d.ts +4 -0
- package/dist/cjs/ai-models/base/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/base/index.js +8 -0
- package/dist/cjs/ai-models/base/index.js.map +1 -0
- package/dist/cjs/ai-models/base/model-adapter.d.ts +47 -0
- package/dist/cjs/ai-models/base/model-adapter.d.ts.map +1 -0
- package/dist/cjs/ai-models/base/model-adapter.js +79 -0
- package/dist/cjs/ai-models/base/model-adapter.js.map +1 -0
- package/dist/cjs/ai-models/base/model-task.d.ts +35 -0
- package/dist/cjs/ai-models/base/model-task.d.ts.map +1 -0
- package/dist/cjs/ai-models/base/model-task.js +40 -0
- package/dist/cjs/ai-models/base/model-task.js.map +1 -0
- package/dist/cjs/ai-models/base/types.d.ts +78 -0
- package/dist/cjs/ai-models/base/types.d.ts.map +1 -0
- package/dist/cjs/ai-models/base/types.js +3 -0
- package/dist/cjs/ai-models/base/types.js.map +1 -0
- package/dist/cjs/ai-models/index.d.ts +9 -0
- package/dist/cjs/ai-models/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/index.js +38 -0
- package/dist/cjs/ai-models/index.js.map +1 -0
- package/dist/cjs/ai-models/providers/claude/client.d.ts +122 -0
- package/dist/cjs/ai-models/providers/claude/client.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/claude/client.js +140 -0
- package/dist/cjs/ai-models/providers/claude/client.js.map +1 -0
- package/dist/cjs/ai-models/providers/claude/index.d.ts +38 -0
- package/dist/cjs/ai-models/providers/claude/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/claude/index.js +144 -0
- package/dist/cjs/ai-models/providers/claude/index.js.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/index.d.ts +5 -0
- package/dist/cjs/ai-models/providers/claude/tasks/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/index.js +21 -0
- package/dist/cjs/ai-models/providers/claude/tasks/index.js.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/intent-extraction.d.ts +27 -0
- package/dist/cjs/ai-models/providers/claude/tasks/intent-extraction.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/intent-extraction.js +145 -0
- package/dist/cjs/ai-models/providers/claude/tasks/intent-extraction.js.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/quality-assessment.d.ts +31 -0
- package/dist/cjs/ai-models/providers/claude/tasks/quality-assessment.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/quality-assessment.js +160 -0
- package/dist/cjs/ai-models/providers/claude/tasks/quality-assessment.js.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-phase-analysis.d.ts +67 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-phase-analysis.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-phase-analysis.js +279 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-phase-analysis.js.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-summary.d.ts +26 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-summary.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-summary.js +178 -0
- package/dist/cjs/ai-models/providers/claude/tasks/session-summary.js.map +1 -0
- package/dist/cjs/ai-models/providers/gemini/client.d.ts +127 -0
- package/dist/cjs/ai-models/providers/gemini/client.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/gemini/client.js +211 -0
- package/dist/cjs/ai-models/providers/gemini/client.js.map +1 -0
- package/dist/cjs/ai-models/providers/gemini/index.d.ts +38 -0
- package/dist/cjs/ai-models/providers/gemini/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/gemini/index.js +144 -0
- package/dist/cjs/ai-models/providers/gemini/index.js.map +1 -0
- package/dist/cjs/ai-models/providers/gemini/tasks/index.d.ts +2 -0
- package/dist/cjs/ai-models/providers/gemini/tasks/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/gemini/tasks/index.js +11 -0
- package/dist/cjs/ai-models/providers/gemini/tasks/index.js.map +1 -0
- package/dist/cjs/ai-models/providers/index.d.ts +5 -0
- package/dist/cjs/ai-models/providers/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/index.js +26 -0
- package/dist/cjs/ai-models/providers/index.js.map +1 -0
- package/dist/cjs/ai-models/providers/openai/client.d.ts +120 -0
- package/dist/cjs/ai-models/providers/openai/client.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/openai/client.js +195 -0
- package/dist/cjs/ai-models/providers/openai/client.js.map +1 -0
- package/dist/cjs/ai-models/providers/openai/index.d.ts +38 -0
- package/dist/cjs/ai-models/providers/openai/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/openai/index.js +144 -0
- package/dist/cjs/ai-models/providers/openai/index.js.map +1 -0
- package/dist/cjs/ai-models/providers/openai/tasks/index.d.ts +5 -0
- package/dist/cjs/ai-models/providers/openai/tasks/index.d.ts.map +1 -0
- package/dist/cjs/ai-models/providers/openai/tasks/index.js +6 -0
- package/dist/cjs/ai-models/providers/openai/tasks/index.js.map +1 -0
- package/dist/cjs/index.d.ts +7 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +49 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/parsers/base/BaseParser.d.ts +67 -0
- package/dist/cjs/parsers/base/BaseParser.d.ts.map +1 -0
- package/dist/cjs/parsers/base/BaseParser.js +205 -0
- package/dist/cjs/parsers/base/BaseParser.js.map +1 -0
- package/dist/cjs/parsers/base/index.d.ts +3 -0
- package/dist/cjs/parsers/base/index.d.ts.map +1 -0
- package/dist/cjs/parsers/base/index.js +6 -0
- package/dist/cjs/parsers/base/index.js.map +1 -0
- package/dist/cjs/parsers/base/types.d.ts +112 -0
- package/dist/cjs/parsers/base/types.d.ts.map +1 -0
- package/dist/cjs/parsers/base/types.js +9 -0
- package/dist/cjs/parsers/base/types.js.map +1 -0
- package/dist/cjs/parsers/canonical/index.d.ts +8 -0
- package/dist/cjs/parsers/canonical/index.d.ts.map +1 -0
- package/dist/cjs/parsers/canonical/index.js +11 -0
- package/dist/cjs/parsers/canonical/index.js.map +1 -0
- package/dist/cjs/parsers/canonical/parser.d.ts +60 -0
- package/dist/cjs/parsers/canonical/parser.d.ts.map +1 -0
- package/dist/cjs/parsers/canonical/parser.js +423 -0
- package/dist/cjs/parsers/canonical/parser.js.map +1 -0
- package/dist/cjs/parsers/canonical/types.d.ts +99 -0
- package/dist/cjs/parsers/canonical/types.d.ts.map +1 -0
- package/dist/cjs/parsers/canonical/types.js +9 -0
- package/dist/cjs/parsers/canonical/types.js.map +1 -0
- package/dist/cjs/parsers/index.d.ts +13 -0
- package/dist/cjs/parsers/index.d.ts.map +1 -0
- package/dist/cjs/parsers/index.js +21 -0
- package/dist/cjs/parsers/index.js.map +1 -0
- package/dist/cjs/parsers/registry.d.ts +34 -0
- package/dist/cjs/parsers/registry.d.ts.map +1 -0
- package/dist/cjs/parsers/registry.js +89 -0
- package/dist/cjs/parsers/registry.js.map +1 -0
- package/dist/cjs/processors/base/git-diff-processor.d.ts +38 -0
- package/dist/cjs/processors/base/git-diff-processor.d.ts.map +1 -0
- package/dist/cjs/processors/base/git-diff-processor.js +131 -0
- package/dist/cjs/processors/base/git-diff-processor.js.map +1 -0
- package/dist/cjs/processors/base/index.d.ts +5 -0
- package/dist/cjs/processors/base/index.d.ts.map +1 -0
- package/dist/cjs/processors/base/index.js +10 -0
- package/dist/cjs/processors/base/index.js.map +1 -0
- package/dist/cjs/processors/base/metric-processor.d.ts +42 -0
- package/dist/cjs/processors/base/metric-processor.d.ts.map +1 -0
- package/dist/cjs/processors/base/metric-processor.js +83 -0
- package/dist/cjs/processors/base/metric-processor.js.map +1 -0
- package/dist/cjs/processors/base/provider-processor.d.ts +45 -0
- package/dist/cjs/processors/base/provider-processor.d.ts.map +1 -0
- package/dist/cjs/processors/base/provider-processor.js +109 -0
- package/dist/cjs/processors/base/provider-processor.js.map +1 -0
- package/dist/cjs/processors/base/types.d.ts +2 -0
- package/dist/cjs/processors/base/types.d.ts.map +1 -0
- package/dist/cjs/processors/base/types.js +3 -0
- package/dist/cjs/processors/base/types.js.map +1 -0
- package/dist/cjs/processors/canonical/index.d.ts +24 -0
- package/dist/cjs/processors/canonical/index.d.ts.map +1 -0
- package/dist/cjs/processors/canonical/index.js +49 -0
- package/dist/cjs/processors/canonical/index.js.map +1 -0
- package/dist/cjs/processors/canonical/metrics/context.d.ts +38 -0
- package/dist/cjs/processors/canonical/metrics/context.d.ts.map +1 -0
- package/dist/cjs/processors/canonical/metrics/context.js +160 -0
- package/dist/cjs/processors/canonical/metrics/context.js.map +1 -0
- package/dist/cjs/processors/canonical/metrics/engagement.d.ts +32 -0
- package/dist/cjs/processors/canonical/metrics/engagement.d.ts.map +1 -0
- package/dist/cjs/processors/canonical/metrics/engagement.js +121 -0
- package/dist/cjs/processors/canonical/metrics/engagement.js.map +1 -0
- package/dist/cjs/processors/canonical/metrics/error.d.ts +48 -0
- package/dist/cjs/processors/canonical/metrics/error.d.ts.map +1 -0
- package/dist/cjs/processors/canonical/metrics/error.js +206 -0
- package/dist/cjs/processors/canonical/metrics/error.js.map +1 -0
- package/dist/cjs/processors/canonical/metrics/performance.d.ts +24 -0
- package/dist/cjs/processors/canonical/metrics/performance.d.ts.map +1 -0
- package/dist/cjs/processors/canonical/metrics/performance.js +74 -0
- package/dist/cjs/processors/canonical/metrics/performance.js.map +1 -0
- package/dist/cjs/processors/canonical/metrics/quality.d.ts +52 -0
- package/dist/cjs/processors/canonical/metrics/quality.d.ts.map +1 -0
- package/dist/cjs/processors/canonical/metrics/quality.js +283 -0
- package/dist/cjs/processors/canonical/metrics/quality.js.map +1 -0
- package/dist/cjs/processors/canonical/metrics/usage.d.ts +64 -0
- package/dist/cjs/processors/canonical/metrics/usage.d.ts.map +1 -0
- package/dist/cjs/processors/canonical/metrics/usage.js +327 -0
- package/dist/cjs/processors/canonical/metrics/usage.js.map +1 -0
- package/dist/cjs/processors/index.d.ts +10 -0
- package/dist/cjs/processors/index.d.ts.map +1 -0
- package/dist/cjs/processors/index.js +46 -0
- package/dist/cjs/processors/index.js.map +1 -0
- package/dist/cjs/processors/providers/claude-code/index.d.ts +39 -0
- package/dist/cjs/processors/providers/claude-code/index.d.ts.map +1 -0
- package/dist/cjs/processors/providers/claude-code/index.js +199 -0
- package/dist/cjs/processors/providers/claude-code/index.js.map +1 -0
- package/dist/cjs/processors/providers/codex/index.d.ts +11 -0
- package/dist/cjs/processors/providers/codex/index.d.ts.map +1 -0
- package/dist/cjs/processors/providers/codex/index.js +34 -0
- package/dist/cjs/processors/providers/codex/index.js.map +1 -0
- package/dist/cjs/processors/providers/cursor/index.d.ts +16 -0
- package/dist/cjs/processors/providers/cursor/index.d.ts.map +1 -0
- package/dist/cjs/processors/providers/cursor/index.js +95 -0
- package/dist/cjs/processors/providers/cursor/index.js.map +1 -0
- package/dist/cjs/processors/providers/gemini/index.d.ts +16 -0
- package/dist/cjs/processors/providers/gemini/index.d.ts.map +1 -0
- package/dist/cjs/processors/providers/gemini/index.js +111 -0
- package/dist/cjs/processors/providers/gemini/index.js.map +1 -0
- package/dist/cjs/processors/providers/github-copilot/index.d.ts +11 -0
- package/dist/cjs/processors/providers/github-copilot/index.d.ts.map +1 -0
- package/dist/cjs/processors/providers/github-copilot/index.js +34 -0
- package/dist/cjs/processors/providers/github-copilot/index.js.map +1 -0
- package/dist/cjs/processors/providers/opencode/index.d.ts +11 -0
- package/dist/cjs/processors/providers/opencode/index.d.ts.map +1 -0
- package/dist/cjs/processors/providers/opencode/index.js +34 -0
- package/dist/cjs/processors/providers/opencode/index.js.map +1 -0
- package/dist/cjs/processors/registry.d.ts +95 -0
- package/dist/cjs/processors/registry.d.ts.map +1 -0
- package/dist/cjs/processors/registry.js +214 -0
- package/dist/cjs/processors/registry.js.map +1 -0
- package/dist/cjs/ui/components/DateFilter.d.ts +19 -0
- package/dist/cjs/ui/components/DateFilter.d.ts.map +1 -0
- package/dist/cjs/ui/components/DateFilter.js +81 -0
- package/dist/cjs/ui/components/DateFilter.js.map +1 -0
- package/dist/cjs/ui/components/QuickRatingPopover.d.ts +17 -0
- package/dist/cjs/ui/components/QuickRatingPopover.d.ts.map +1 -0
- package/dist/cjs/ui/components/QuickRatingPopover.js +58 -0
- package/dist/cjs/ui/components/QuickRatingPopover.js.map +1 -0
- package/dist/cjs/ui/components/RatingBadge.d.ts +17 -0
- package/dist/cjs/ui/components/RatingBadge.d.ts.map +1 -0
- package/dist/cjs/ui/components/RatingBadge.js +122 -0
- package/dist/cjs/ui/components/RatingBadge.js.map +1 -0
- package/dist/cjs/ui/components/ScrollToTopButton.d.ts +17 -0
- package/dist/cjs/ui/components/ScrollToTopButton.d.ts.map +1 -0
- package/dist/cjs/ui/components/ScrollToTopButton.js +63 -0
- package/dist/cjs/ui/components/ScrollToTopButton.js.map +1 -0
- package/dist/cjs/ui/components/SessionCard.d.ts +60 -0
- package/dist/cjs/ui/components/SessionCard.d.ts.map +1 -0
- package/dist/cjs/ui/components/SessionCard.js +252 -0
- package/dist/cjs/ui/components/SessionCard.js.map +1 -0
- package/dist/cjs/ui/components/SessionDetailHeader.d.ts +57 -0
- package/dist/cjs/ui/components/SessionDetailHeader.d.ts.map +1 -0
- package/dist/cjs/ui/components/SessionDetailHeader.js +100 -0
- package/dist/cjs/ui/components/SessionDetailHeader.js.map +1 -0
- package/dist/cjs/ui/components/SessionTodosTab.d.ts +9 -0
- package/dist/cjs/ui/components/SessionTodosTab.d.ts.map +1 -0
- package/dist/cjs/ui/components/SessionTodosTab.js +69 -0
- package/dist/cjs/ui/components/SessionTodosTab.js.map +1 -0
- package/dist/cjs/ui/components/TokenUsageChart.d.ts +20 -0
- package/dist/cjs/ui/components/TokenUsageChart.d.ts.map +1 -0
- package/dist/cjs/ui/components/TokenUsageChart.js +126 -0
- package/dist/cjs/ui/components/TokenUsageChart.js.map +1 -0
- package/dist/cjs/ui/components/assessment/AssessmentModal.d.ts +3 -0
- package/dist/cjs/ui/components/assessment/AssessmentModal.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/AssessmentModal.js +144 -0
- package/dist/cjs/ui/components/assessment/AssessmentModal.js.map +1 -0
- package/dist/cjs/ui/components/assessment/ChoiceResponse.d.ts +9 -0
- package/dist/cjs/ui/components/assessment/ChoiceResponse.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/ChoiceResponse.js +30 -0
- package/dist/cjs/ui/components/assessment/ChoiceResponse.js.map +1 -0
- package/dist/cjs/ui/components/assessment/LikertScale.d.ts +3 -0
- package/dist/cjs/ui/components/assessment/LikertScale.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/LikertScale.js +76 -0
- package/dist/cjs/ui/components/assessment/LikertScale.js.map +1 -0
- package/dist/cjs/ui/components/assessment/ProgressBar.d.ts +3 -0
- package/dist/cjs/ui/components/assessment/ProgressBar.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/ProgressBar.js +9 -0
- package/dist/cjs/ui/components/assessment/ProgressBar.js.map +1 -0
- package/dist/cjs/ui/components/assessment/QuestionCard.d.ts +3 -0
- package/dist/cjs/ui/components/assessment/QuestionCard.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/QuestionCard.js +127 -0
- package/dist/cjs/ui/components/assessment/QuestionCard.js.map +1 -0
- package/dist/cjs/ui/components/assessment/TextResponse.d.ts +3 -0
- package/dist/cjs/ui/components/assessment/TextResponse.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/TextResponse.js +8 -0
- package/dist/cjs/ui/components/assessment/TextResponse.js.map +1 -0
- package/dist/cjs/ui/components/assessment/VersionSelector.d.ts +7 -0
- package/dist/cjs/ui/components/assessment/VersionSelector.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/VersionSelector.js +71 -0
- package/dist/cjs/ui/components/assessment/VersionSelector.js.map +1 -0
- package/dist/cjs/ui/components/assessment/index.d.ts +9 -0
- package/dist/cjs/ui/components/assessment/index.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/index.js +19 -0
- package/dist/cjs/ui/components/assessment/index.js.map +1 -0
- package/dist/cjs/ui/components/assessment/types.d.ts +58 -0
- package/dist/cjs/ui/components/assessment/types.d.ts.map +1 -0
- package/dist/cjs/ui/components/assessment/types.js +3 -0
- package/dist/cjs/ui/components/assessment/types.js.map +1 -0
- package/dist/cjs/ui/components/index.d.ts +39 -0
- package/dist/cjs/ui/components/index.d.ts.map +1 -0
- package/dist/cjs/ui/components/index.js +90 -0
- package/dist/cjs/ui/components/index.js.map +1 -0
- package/dist/cjs/ui/components/metrics/AssessmentSection.d.ts +27 -0
- package/dist/cjs/ui/components/metrics/AssessmentSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/AssessmentSection.js +79 -0
- package/dist/cjs/ui/components/metrics/AssessmentSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/MetricCard.d.ts +20 -0
- package/dist/cjs/ui/components/metrics/MetricCard.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/MetricCard.js +80 -0
- package/dist/cjs/ui/components/metrics/MetricCard.js.map +1 -0
- package/dist/cjs/ui/components/metrics/MetricSection.d.ts +12 -0
- package/dist/cjs/ui/components/metrics/MetricSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/MetricSection.js +8 -0
- package/dist/cjs/ui/components/metrics/MetricSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/MetricsOverview.d.ts +89 -0
- package/dist/cjs/ui/components/metrics/MetricsOverview.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/MetricsOverview.js +29 -0
- package/dist/cjs/ui/components/metrics/MetricsOverview.js.map +1 -0
- package/dist/cjs/ui/components/metrics/metricThresholds.d.ts +40 -0
- package/dist/cjs/ui/components/metrics/metricThresholds.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/metricThresholds.js +208 -0
- package/dist/cjs/ui/components/metrics/metricThresholds.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/AIAssessmentSection.d.ts +12 -0
- package/dist/cjs/ui/components/metrics/sections/AIAssessmentSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/AIAssessmentSection.js +31 -0
- package/dist/cjs/ui/components/metrics/sections/AIAssessmentSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/ContextMetricsSection.d.ts +10 -0
- package/dist/cjs/ui/components/metrics/sections/ContextMetricsSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/ContextMetricsSection.js +21 -0
- package/dist/cjs/ui/components/metrics/sections/ContextMetricsSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/EngagementMetricsSection.d.ts +10 -0
- package/dist/cjs/ui/components/metrics/sections/EngagementMetricsSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/EngagementMetricsSection.js +21 -0
- package/dist/cjs/ui/components/metrics/sections/EngagementMetricsSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/ErrorMetricsSection.d.ts +10 -0
- package/dist/cjs/ui/components/metrics/sections/ErrorMetricsSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/ErrorMetricsSection.js +17 -0
- package/dist/cjs/ui/components/metrics/sections/ErrorMetricsSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/GitDiffMetricsSection.d.ts +10 -0
- package/dist/cjs/ui/components/metrics/sections/GitDiffMetricsSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/GitDiffMetricsSection.js +22 -0
- package/dist/cjs/ui/components/metrics/sections/GitDiffMetricsSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/PerformanceMetricsSection.d.ts +10 -0
- package/dist/cjs/ui/components/metrics/sections/PerformanceMetricsSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/PerformanceMetricsSection.js +21 -0
- package/dist/cjs/ui/components/metrics/sections/PerformanceMetricsSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/QualityMetricsSection.d.ts +10 -0
- package/dist/cjs/ui/components/metrics/sections/QualityMetricsSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/QualityMetricsSection.js +26 -0
- package/dist/cjs/ui/components/metrics/sections/QualityMetricsSection.js.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/UsageMetricsSection.d.ts +10 -0
- package/dist/cjs/ui/components/metrics/sections/UsageMetricsSection.d.ts.map +1 -0
- package/dist/cjs/ui/components/metrics/sections/UsageMetricsSection.js +17 -0
- package/dist/cjs/ui/components/metrics/sections/UsageMetricsSection.js.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseBlock.d.ts +19 -0
- package/dist/cjs/ui/components/phase/PhaseBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseBlock.js +16 -0
- package/dist/cjs/ui/components/phase/PhaseBlock.js.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseHeader.d.ts +10 -0
- package/dist/cjs/ui/components/phase/PhaseHeader.d.ts.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseHeader.js +15 -0
- package/dist/cjs/ui/components/phase/PhaseHeader.js.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseIcon.d.ts +25 -0
- package/dist/cjs/ui/components/phase/PhaseIcon.d.ts.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseIcon.js +77 -0
- package/dist/cjs/ui/components/phase/PhaseIcon.js.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseStats.d.ts +13 -0
- package/dist/cjs/ui/components/phase/PhaseStats.d.ts.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseStats.js +27 -0
- package/dist/cjs/ui/components/phase/PhaseStats.js.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseSummary.d.ts +9 -0
- package/dist/cjs/ui/components/phase/PhaseSummary.d.ts.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseSummary.js +8 -0
- package/dist/cjs/ui/components/phase/PhaseSummary.js.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseTimeline.d.ts +17 -0
- package/dist/cjs/ui/components/phase/PhaseTimeline.d.ts.map +1 -0
- package/dist/cjs/ui/components/phase/PhaseTimeline.js +25 -0
- package/dist/cjs/ui/components/phase/PhaseTimeline.js.map +1 -0
- package/dist/cjs/ui/components/phase/index.d.ts +12 -0
- package/dist/cjs/ui/components/phase/index.d.ts.map +1 -0
- package/dist/cjs/ui/components/phase/index.js +22 -0
- package/dist/cjs/ui/components/phase/index.js.map +1 -0
- package/dist/cjs/ui/components/timeline/ContentRenderer.d.ts +10 -0
- package/dist/cjs/ui/components/timeline/ContentRenderer.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/ContentRenderer.js +76 -0
- package/dist/cjs/ui/components/timeline/ContentRenderer.js.map +1 -0
- package/dist/cjs/ui/components/timeline/DebugModal.d.ts +14 -0
- package/dist/cjs/ui/components/timeline/DebugModal.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/DebugModal.js +30 -0
- package/dist/cjs/ui/components/timeline/DebugModal.js.map +1 -0
- package/dist/cjs/ui/components/timeline/MessageHeader.d.ts +11 -0
- package/dist/cjs/ui/components/timeline/MessageHeader.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/MessageHeader.js +10 -0
- package/dist/cjs/ui/components/timeline/MessageHeader.js.map +1 -0
- package/dist/cjs/ui/components/timeline/TimelineGroup.d.ts +10 -0
- package/dist/cjs/ui/components/timeline/TimelineGroup.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/TimelineGroup.js +10 -0
- package/dist/cjs/ui/components/timeline/TimelineGroup.js.map +1 -0
- package/dist/cjs/ui/components/timeline/TimelineMessage.d.ts +12 -0
- package/dist/cjs/ui/components/timeline/TimelineMessage.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/TimelineMessage.js +26 -0
- package/dist/cjs/ui/components/timeline/TimelineMessage.js.map +1 -0
- package/dist/cjs/ui/components/timeline/VirtualizedMessageList.d.ts +36 -0
- package/dist/cjs/ui/components/timeline/VirtualizedMessageList.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/VirtualizedMessageList.js +93 -0
- package/dist/cjs/ui/components/timeline/VirtualizedMessageList.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/CodeBlock.d.ts +10 -0
- package/dist/cjs/ui/components/timeline/blocks/CodeBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/CodeBlock.js +17 -0
- package/dist/cjs/ui/components/timeline/blocks/CodeBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ImageBlock.d.ts +10 -0
- package/dist/cjs/ui/components/timeline/blocks/ImageBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ImageBlock.js +8 -0
- package/dist/cjs/ui/components/timeline/blocks/ImageBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/JsonBlock.d.ts +10 -0
- package/dist/cjs/ui/components/timeline/blocks/JsonBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/JsonBlock.js +14 -0
- package/dist/cjs/ui/components/timeline/blocks/JsonBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/SystemReminderBlock.d.ts +16 -0
- package/dist/cjs/ui/components/timeline/blocks/SystemReminderBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/SystemReminderBlock.js +93 -0
- package/dist/cjs/ui/components/timeline/blocks/SystemReminderBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/TextBlock.d.ts +13 -0
- package/dist/cjs/ui/components/timeline/blocks/TextBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/TextBlock.js +191 -0
- package/dist/cjs/ui/components/timeline/blocks/TextBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ThinkingBlock.d.ts +15 -0
- package/dist/cjs/ui/components/timeline/blocks/ThinkingBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ThinkingBlock.js +18 -0
- package/dist/cjs/ui/components/timeline/blocks/ThinkingBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolBlock.d.ts +13 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolBlock.js +54 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolResultBlock.d.ts +12 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolResultBlock.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolResultBlock.js +84 -0
- package/dist/cjs/ui/components/timeline/blocks/ToolResultBlock.js.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/index.d.ts +11 -0
- package/dist/cjs/ui/components/timeline/blocks/index.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/blocks/index.js +21 -0
- package/dist/cjs/ui/components/timeline/blocks/index.js.map +1 -0
- package/dist/cjs/ui/components/timeline/index.d.ts +10 -0
- package/dist/cjs/ui/components/timeline/index.d.ts.map +1 -0
- package/dist/cjs/ui/components/timeline/index.js +32 -0
- package/dist/cjs/ui/components/timeline/index.js.map +1 -0
- package/dist/cjs/ui/index.d.ts +10 -0
- package/dist/cjs/ui/index.d.ts.map +1 -0
- package/dist/cjs/ui/index.js +37 -0
- package/dist/cjs/ui/index.js.map +1 -0
- package/dist/cjs/ui/utils/extractTokens.d.ts +94 -0
- package/dist/cjs/ui/utils/extractTokens.d.ts.map +1 -0
- package/dist/cjs/ui/utils/extractTokens.js +191 -0
- package/dist/cjs/ui/utils/extractTokens.js.map +1 -0
- package/dist/cjs/ui/utils/markdown.d.ts +65 -0
- package/dist/cjs/ui/utils/markdown.d.ts.map +1 -0
- package/dist/cjs/ui/utils/markdown.js +240 -0
- package/dist/cjs/ui/utils/markdown.js.map +1 -0
- package/dist/cjs/ui/utils/processors/BaseMessageProcessor.d.ts +133 -0
- package/dist/cjs/ui/utils/processors/BaseMessageProcessor.d.ts.map +1 -0
- package/dist/cjs/ui/utils/processors/BaseMessageProcessor.js +550 -0
- package/dist/cjs/ui/utils/processors/BaseMessageProcessor.js.map +1 -0
- package/dist/cjs/ui/utils/processors/CanonicalMessageProcessor.d.ts +81 -0
- package/dist/cjs/ui/utils/processors/CanonicalMessageProcessor.d.ts.map +1 -0
- package/dist/cjs/ui/utils/processors/CanonicalMessageProcessor.js +449 -0
- package/dist/cjs/ui/utils/processors/CanonicalMessageProcessor.js.map +1 -0
- package/dist/cjs/ui/utils/processors/GenericMessageProcessor.d.ts +46 -0
- package/dist/cjs/ui/utils/processors/GenericMessageProcessor.d.ts.map +1 -0
- package/dist/cjs/ui/utils/processors/GenericMessageProcessor.js +176 -0
- package/dist/cjs/ui/utils/processors/GenericMessageProcessor.js.map +1 -0
- package/dist/cjs/ui/utils/processors/ProcessorRegistry.d.ts +33 -0
- package/dist/cjs/ui/utils/processors/ProcessorRegistry.d.ts.map +1 -0
- package/dist/cjs/ui/utils/processors/ProcessorRegistry.js +72 -0
- package/dist/cjs/ui/utils/processors/ProcessorRegistry.js.map +1 -0
- package/dist/cjs/ui/utils/processors/index.d.ts +11 -0
- package/dist/cjs/ui/utils/processors/index.d.ts.map +1 -0
- package/dist/cjs/ui/utils/processors/index.js +18 -0
- package/dist/cjs/ui/utils/processors/index.js.map +1 -0
- package/dist/cjs/ui/utils/sessionTypes.d.ts +2 -0
- package/dist/cjs/ui/utils/sessionTypes.d.ts.map +1 -0
- package/dist/cjs/ui/utils/sessionTypes.js +4 -0
- package/dist/cjs/ui/utils/sessionTypes.js.map +1 -0
- package/dist/cjs/ui/utils/systemReminderParser.d.ts +40 -0
- package/dist/cjs/ui/utils/systemReminderParser.d.ts.map +1 -0
- package/dist/cjs/ui/utils/systemReminderParser.js +112 -0
- package/dist/cjs/ui/utils/systemReminderParser.js.map +1 -0
- package/dist/cjs/ui/utils/timelineTypes.d.ts +201 -0
- package/dist/cjs/ui/utils/timelineTypes.d.ts.map +1 -0
- package/dist/cjs/ui/utils/timelineTypes.js +44 -0
- package/dist/cjs/ui/utils/timelineTypes.js.map +1 -0
- package/dist/cjs/ui/utils/todos/extractTodosClaudeCode.d.ts +9 -0
- package/dist/cjs/ui/utils/todos/extractTodosClaudeCode.d.ts.map +1 -0
- package/dist/cjs/ui/utils/todos/extractTodosClaudeCode.js +43 -0
- package/dist/cjs/ui/utils/todos/extractTodosClaudeCode.js.map +1 -0
- package/dist/cjs/ui/utils/todos/extractTodosCodex.d.ts +29 -0
- package/dist/cjs/ui/utils/todos/extractTodosCodex.d.ts.map +1 -0
- package/dist/cjs/ui/utils/todos/extractTodosCodex.js +164 -0
- package/dist/cjs/ui/utils/todos/extractTodosCodex.js.map +1 -0
- package/dist/cjs/ui/utils/todos/index.d.ts +18 -0
- package/dist/cjs/ui/utils/todos/index.d.ts.map +1 -0
- package/dist/cjs/ui/utils/todos/index.js +54 -0
- package/dist/cjs/ui/utils/todos/index.js.map +1 -0
- package/dist/cjs/ui/utils/todos/todoUtils.d.ts +27 -0
- package/dist/cjs/ui/utils/todos/todoUtils.d.ts.map +1 -0
- package/dist/cjs/ui/utils/todos/todoUtils.js +124 -0
- package/dist/cjs/ui/utils/todos/todoUtils.js.map +1 -0
- package/dist/cjs/ui/utils/todos/types.d.ts +41 -0
- package/dist/cjs/ui/utils/todos/types.d.ts.map +1 -0
- package/dist/cjs/ui/utils/todos/types.js +6 -0
- package/dist/cjs/ui/utils/todos/types.js.map +1 -0
- package/dist/cjs/utils/git-url.d.ts +25 -0
- package/dist/cjs/utils/git-url.d.ts.map +1 -0
- package/dist/cjs/utils/git-url.js +60 -0
- package/dist/cjs/utils/git-url.js.map +1 -0
- package/dist/cjs/utils/index.d.ts +7 -0
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/utils/index.js +23 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/rating.d.ts +61 -0
- package/dist/cjs/utils/rating.d.ts.map +1 -0
- package/dist/cjs/utils/rating.js +96 -0
- package/dist/cjs/utils/rating.js.map +1 -0
- package/dist/cjs/utils/safe-access.d.ts +43 -0
- package/dist/cjs/utils/safe-access.d.ts.map +1 -0
- package/dist/cjs/utils/safe-access.js +89 -0
- package/dist/cjs/utils/safe-access.js.map +1 -0
- package/dist/cjs/utils/user.d.ts +22 -0
- package/dist/cjs/utils/user.d.ts.map +1 -0
- package/dist/cjs/utils/user.js +39 -0
- package/dist/cjs/utils/user.js.map +1 -0
- package/dist/cjs/validation/index.d.ts +8 -0
- package/dist/cjs/validation/index.d.ts.map +1 -0
- package/dist/cjs/validation/index.js +21 -0
- package/dist/cjs/validation/index.js.map +1 -0
- package/dist/cjs/validation/validator.d.ts +48 -0
- package/dist/cjs/validation/validator.d.ts.map +1 -0
- package/dist/cjs/validation/validator.js +207 -0
- package/dist/cjs/validation/validator.js.map +1 -0
- package/dist/esm/ai-models/base/index.d.ts +4 -0
- package/dist/esm/ai-models/base/index.d.ts.map +1 -0
- package/dist/esm/ai-models/base/index.js +3 -0
- package/dist/esm/ai-models/base/index.js.map +1 -0
- package/dist/esm/ai-models/base/model-adapter.d.ts +47 -0
- package/dist/esm/ai-models/base/model-adapter.d.ts.map +1 -0
- package/dist/esm/ai-models/base/model-adapter.js +76 -0
- package/dist/esm/ai-models/base/model-adapter.js.map +1 -0
- package/dist/esm/ai-models/base/model-task.d.ts +35 -0
- package/dist/esm/ai-models/base/model-task.d.ts.map +1 -0
- package/dist/esm/ai-models/base/model-task.js +36 -0
- package/dist/esm/ai-models/base/model-task.js.map +1 -0
- package/dist/esm/ai-models/base/types.d.ts +78 -0
- package/dist/esm/ai-models/base/types.d.ts.map +1 -0
- package/dist/esm/ai-models/base/types.js +2 -0
- package/dist/esm/ai-models/base/types.js.map +1 -0
- package/dist/esm/ai-models/index.d.ts +9 -0
- package/dist/esm/ai-models/index.d.ts.map +1 -0
- package/dist/esm/ai-models/index.js +11 -0
- package/dist/esm/ai-models/index.js.map +1 -0
- package/dist/esm/ai-models/providers/claude/client.d.ts +122 -0
- package/dist/esm/ai-models/providers/claude/client.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/claude/client.js +142 -0
- package/dist/esm/ai-models/providers/claude/client.js.map +1 -0
- package/dist/esm/ai-models/providers/claude/index.d.ts +38 -0
- package/dist/esm/ai-models/providers/claude/index.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/claude/index.js +141 -0
- package/dist/esm/ai-models/providers/claude/index.js.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/index.d.ts +5 -0
- package/dist/esm/ai-models/providers/claude/tasks/index.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/index.js +5 -0
- package/dist/esm/ai-models/providers/claude/tasks/index.js.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/intent-extraction.d.ts +27 -0
- package/dist/esm/ai-models/providers/claude/tasks/intent-extraction.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/intent-extraction.js +138 -0
- package/dist/esm/ai-models/providers/claude/tasks/intent-extraction.js.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/quality-assessment.d.ts +31 -0
- package/dist/esm/ai-models/providers/claude/tasks/quality-assessment.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/quality-assessment.js +153 -0
- package/dist/esm/ai-models/providers/claude/tasks/quality-assessment.js.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-phase-analysis.d.ts +67 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-phase-analysis.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-phase-analysis.js +272 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-phase-analysis.js.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-summary.d.ts +26 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-summary.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-summary.js +171 -0
- package/dist/esm/ai-models/providers/claude/tasks/session-summary.js.map +1 -0
- package/dist/esm/ai-models/providers/gemini/client.d.ts +127 -0
- package/dist/esm/ai-models/providers/gemini/client.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/gemini/client.js +213 -0
- package/dist/esm/ai-models/providers/gemini/client.js.map +1 -0
- package/dist/esm/ai-models/providers/gemini/index.d.ts +38 -0
- package/dist/esm/ai-models/providers/gemini/index.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/gemini/index.js +141 -0
- package/dist/esm/ai-models/providers/gemini/index.js.map +1 -0
- package/dist/esm/ai-models/providers/gemini/tasks/index.d.ts +2 -0
- package/dist/esm/ai-models/providers/gemini/tasks/index.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/gemini/tasks/index.js +4 -0
- package/dist/esm/ai-models/providers/gemini/tasks/index.js.map +1 -0
- package/dist/esm/ai-models/providers/index.d.ts +5 -0
- package/dist/esm/ai-models/providers/index.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/index.js +6 -0
- package/dist/esm/ai-models/providers/index.js.map +1 -0
- package/dist/esm/ai-models/providers/openai/client.d.ts +120 -0
- package/dist/esm/ai-models/providers/openai/client.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/openai/client.js +197 -0
- package/dist/esm/ai-models/providers/openai/client.js.map +1 -0
- package/dist/esm/ai-models/providers/openai/index.d.ts +38 -0
- package/dist/esm/ai-models/providers/openai/index.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/openai/index.js +141 -0
- package/dist/esm/ai-models/providers/openai/index.js.map +1 -0
- package/dist/esm/ai-models/providers/openai/tasks/index.d.ts +5 -0
- package/dist/esm/ai-models/providers/openai/tasks/index.d.ts.map +1 -0
- package/dist/esm/ai-models/providers/openai/tasks/index.js +7 -0
- package/dist/esm/ai-models/providers/openai/tasks/index.js.map +1 -0
- package/dist/esm/index.d.ts +7 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/parsers/base/BaseParser.d.ts +67 -0
- package/dist/esm/parsers/base/BaseParser.d.ts.map +1 -0
- package/dist/esm/parsers/base/BaseParser.js +201 -0
- package/dist/esm/parsers/base/BaseParser.js.map +1 -0
- package/dist/esm/parsers/base/index.d.ts +3 -0
- package/dist/esm/parsers/base/index.d.ts.map +1 -0
- package/dist/esm/parsers/base/index.js +2 -0
- package/dist/esm/parsers/base/index.js.map +1 -0
- package/dist/esm/parsers/base/types.d.ts +112 -0
- package/dist/esm/parsers/base/types.d.ts.map +1 -0
- package/dist/esm/parsers/base/types.js +8 -0
- package/dist/esm/parsers/base/types.js.map +1 -0
- package/dist/esm/parsers/canonical/index.d.ts +8 -0
- package/dist/esm/parsers/canonical/index.d.ts.map +1 -0
- package/dist/esm/parsers/canonical/index.js +7 -0
- package/dist/esm/parsers/canonical/index.js.map +1 -0
- package/dist/esm/parsers/canonical/parser.d.ts +60 -0
- package/dist/esm/parsers/canonical/parser.d.ts.map +1 -0
- package/dist/esm/parsers/canonical/parser.js +416 -0
- package/dist/esm/parsers/canonical/parser.js.map +1 -0
- package/dist/esm/parsers/canonical/types.d.ts +99 -0
- package/dist/esm/parsers/canonical/types.d.ts.map +1 -0
- package/dist/esm/parsers/canonical/types.js +8 -0
- package/dist/esm/parsers/canonical/types.js.map +1 -0
- package/dist/esm/parsers/index.d.ts +13 -0
- package/dist/esm/parsers/index.d.ts.map +1 -0
- package/dist/esm/parsers/index.js +14 -0
- package/dist/esm/parsers/index.js.map +1 -0
- package/dist/esm/parsers/registry.d.ts +34 -0
- package/dist/esm/parsers/registry.d.ts.map +1 -0
- package/dist/esm/parsers/registry.js +85 -0
- package/dist/esm/parsers/registry.js.map +1 -0
- package/dist/esm/processors/base/git-diff-processor.d.ts +38 -0
- package/dist/esm/processors/base/git-diff-processor.d.ts.map +1 -0
- package/dist/esm/processors/base/git-diff-processor.js +124 -0
- package/dist/esm/processors/base/git-diff-processor.js.map +1 -0
- package/dist/esm/processors/base/index.d.ts +5 -0
- package/dist/esm/processors/base/index.d.ts.map +1 -0
- package/dist/esm/processors/base/index.js +4 -0
- package/dist/esm/processors/base/index.js.map +1 -0
- package/dist/esm/processors/base/metric-processor.d.ts +42 -0
- package/dist/esm/processors/base/metric-processor.d.ts.map +1 -0
- package/dist/esm/processors/base/metric-processor.js +79 -0
- package/dist/esm/processors/base/metric-processor.js.map +1 -0
- package/dist/esm/processors/base/provider-processor.d.ts +45 -0
- package/dist/esm/processors/base/provider-processor.d.ts.map +1 -0
- package/dist/esm/processors/base/provider-processor.js +105 -0
- package/dist/esm/processors/base/provider-processor.js.map +1 -0
- package/dist/esm/processors/base/types.d.ts +2 -0
- package/dist/esm/processors/base/types.d.ts.map +1 -0
- package/dist/esm/processors/base/types.js +2 -0
- package/dist/esm/processors/base/types.js.map +1 -0
- package/dist/esm/processors/canonical/index.d.ts +24 -0
- package/dist/esm/processors/canonical/index.d.ts.map +1 -0
- package/dist/esm/processors/canonical/index.js +42 -0
- package/dist/esm/processors/canonical/index.js.map +1 -0
- package/dist/esm/processors/canonical/metrics/context.d.ts +38 -0
- package/dist/esm/processors/canonical/metrics/context.d.ts.map +1 -0
- package/dist/esm/processors/canonical/metrics/context.js +153 -0
- package/dist/esm/processors/canonical/metrics/context.js.map +1 -0
- package/dist/esm/processors/canonical/metrics/engagement.d.ts +32 -0
- package/dist/esm/processors/canonical/metrics/engagement.d.ts.map +1 -0
- package/dist/esm/processors/canonical/metrics/engagement.js +114 -0
- package/dist/esm/processors/canonical/metrics/engagement.js.map +1 -0
- package/dist/esm/processors/canonical/metrics/error.d.ts +48 -0
- package/dist/esm/processors/canonical/metrics/error.d.ts.map +1 -0
- package/dist/esm/processors/canonical/metrics/error.js +199 -0
- package/dist/esm/processors/canonical/metrics/error.js.map +1 -0
- package/dist/esm/processors/canonical/metrics/performance.d.ts +24 -0
- package/dist/esm/processors/canonical/metrics/performance.d.ts.map +1 -0
- package/dist/esm/processors/canonical/metrics/performance.js +67 -0
- package/dist/esm/processors/canonical/metrics/performance.js.map +1 -0
- package/dist/esm/processors/canonical/metrics/quality.d.ts +52 -0
- package/dist/esm/processors/canonical/metrics/quality.d.ts.map +1 -0
- package/dist/esm/processors/canonical/metrics/quality.js +276 -0
- package/dist/esm/processors/canonical/metrics/quality.js.map +1 -0
- package/dist/esm/processors/canonical/metrics/usage.d.ts +64 -0
- package/dist/esm/processors/canonical/metrics/usage.d.ts.map +1 -0
- package/dist/esm/processors/canonical/metrics/usage.js +320 -0
- package/dist/esm/processors/canonical/metrics/usage.js.map +1 -0
- package/dist/esm/processors/index.d.ts +10 -0
- package/dist/esm/processors/index.d.ts.map +1 -0
- package/dist/esm/processors/index.js +14 -0
- package/dist/esm/processors/index.js.map +1 -0
- package/dist/esm/processors/providers/claude-code/index.d.ts +39 -0
- package/dist/esm/processors/providers/claude-code/index.d.ts.map +1 -0
- package/dist/esm/processors/providers/claude-code/index.js +196 -0
- package/dist/esm/processors/providers/claude-code/index.js.map +1 -0
- package/dist/esm/processors/providers/codex/index.d.ts +11 -0
- package/dist/esm/processors/providers/codex/index.d.ts.map +1 -0
- package/dist/esm/processors/providers/codex/index.js +31 -0
- package/dist/esm/processors/providers/codex/index.js.map +1 -0
- package/dist/esm/processors/providers/cursor/index.d.ts +16 -0
- package/dist/esm/processors/providers/cursor/index.d.ts.map +1 -0
- package/dist/esm/processors/providers/cursor/index.js +92 -0
- package/dist/esm/processors/providers/cursor/index.js.map +1 -0
- package/dist/esm/processors/providers/gemini/index.d.ts +16 -0
- package/dist/esm/processors/providers/gemini/index.d.ts.map +1 -0
- package/dist/esm/processors/providers/gemini/index.js +108 -0
- package/dist/esm/processors/providers/gemini/index.js.map +1 -0
- package/dist/esm/processors/providers/github-copilot/index.d.ts +11 -0
- package/dist/esm/processors/providers/github-copilot/index.d.ts.map +1 -0
- package/dist/esm/processors/providers/github-copilot/index.js +31 -0
- package/dist/esm/processors/providers/github-copilot/index.js.map +1 -0
- package/dist/esm/processors/providers/opencode/index.d.ts +11 -0
- package/dist/esm/processors/providers/opencode/index.d.ts.map +1 -0
- package/dist/esm/processors/providers/opencode/index.js +31 -0
- package/dist/esm/processors/providers/opencode/index.js.map +1 -0
- package/dist/esm/processors/registry.d.ts +95 -0
- package/dist/esm/processors/registry.d.ts.map +1 -0
- package/dist/esm/processors/registry.js +210 -0
- package/dist/esm/processors/registry.js.map +1 -0
- package/dist/esm/ui/components/DateFilter.d.ts +19 -0
- package/dist/esm/ui/components/DateFilter.d.ts.map +1 -0
- package/dist/esm/ui/components/DateFilter.js +79 -0
- package/dist/esm/ui/components/DateFilter.js.map +1 -0
- package/dist/esm/ui/components/QuickRatingPopover.d.ts +17 -0
- package/dist/esm/ui/components/QuickRatingPopover.d.ts.map +1 -0
- package/dist/esm/ui/components/QuickRatingPopover.js +55 -0
- package/dist/esm/ui/components/QuickRatingPopover.js.map +1 -0
- package/dist/esm/ui/components/RatingBadge.d.ts +17 -0
- package/dist/esm/ui/components/RatingBadge.d.ts.map +1 -0
- package/dist/esm/ui/components/RatingBadge.js +119 -0
- package/dist/esm/ui/components/RatingBadge.js.map +1 -0
- package/dist/esm/ui/components/ScrollToTopButton.d.ts +17 -0
- package/dist/esm/ui/components/ScrollToTopButton.d.ts.map +1 -0
- package/dist/esm/ui/components/ScrollToTopButton.js +60 -0
- package/dist/esm/ui/components/ScrollToTopButton.js.map +1 -0
- package/dist/esm/ui/components/SessionCard.d.ts +60 -0
- package/dist/esm/ui/components/SessionCard.d.ts.map +1 -0
- package/dist/esm/ui/components/SessionCard.js +250 -0
- package/dist/esm/ui/components/SessionCard.js.map +1 -0
- package/dist/esm/ui/components/SessionDetailHeader.d.ts +57 -0
- package/dist/esm/ui/components/SessionDetailHeader.d.ts.map +1 -0
- package/dist/esm/ui/components/SessionDetailHeader.js +97 -0
- package/dist/esm/ui/components/SessionDetailHeader.js.map +1 -0
- package/dist/esm/ui/components/SessionTodosTab.d.ts +9 -0
- package/dist/esm/ui/components/SessionTodosTab.d.ts.map +1 -0
- package/dist/esm/ui/components/SessionTodosTab.js +66 -0
- package/dist/esm/ui/components/SessionTodosTab.js.map +1 -0
- package/dist/esm/ui/components/TokenUsageChart.d.ts +20 -0
- package/dist/esm/ui/components/TokenUsageChart.d.ts.map +1 -0
- package/dist/esm/ui/components/TokenUsageChart.js +123 -0
- package/dist/esm/ui/components/TokenUsageChart.js.map +1 -0
- package/dist/esm/ui/components/assessment/AssessmentModal.d.ts +3 -0
- package/dist/esm/ui/components/assessment/AssessmentModal.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/AssessmentModal.js +141 -0
- package/dist/esm/ui/components/assessment/AssessmentModal.js.map +1 -0
- package/dist/esm/ui/components/assessment/ChoiceResponse.d.ts +9 -0
- package/dist/esm/ui/components/assessment/ChoiceResponse.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/ChoiceResponse.js +27 -0
- package/dist/esm/ui/components/assessment/ChoiceResponse.js.map +1 -0
- package/dist/esm/ui/components/assessment/LikertScale.d.ts +3 -0
- package/dist/esm/ui/components/assessment/LikertScale.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/LikertScale.js +73 -0
- package/dist/esm/ui/components/assessment/LikertScale.js.map +1 -0
- package/dist/esm/ui/components/assessment/ProgressBar.d.ts +3 -0
- package/dist/esm/ui/components/assessment/ProgressBar.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/ProgressBar.js +6 -0
- package/dist/esm/ui/components/assessment/ProgressBar.js.map +1 -0
- package/dist/esm/ui/components/assessment/QuestionCard.d.ts +3 -0
- package/dist/esm/ui/components/assessment/QuestionCard.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/QuestionCard.js +124 -0
- package/dist/esm/ui/components/assessment/QuestionCard.js.map +1 -0
- package/dist/esm/ui/components/assessment/TextResponse.d.ts +3 -0
- package/dist/esm/ui/components/assessment/TextResponse.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/TextResponse.js +5 -0
- package/dist/esm/ui/components/assessment/TextResponse.js.map +1 -0
- package/dist/esm/ui/components/assessment/VersionSelector.d.ts +7 -0
- package/dist/esm/ui/components/assessment/VersionSelector.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/VersionSelector.js +68 -0
- package/dist/esm/ui/components/assessment/VersionSelector.js.map +1 -0
- package/dist/esm/ui/components/assessment/index.d.ts +9 -0
- package/dist/esm/ui/components/assessment/index.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/index.js +9 -0
- package/dist/esm/ui/components/assessment/index.js.map +1 -0
- package/dist/esm/ui/components/assessment/types.d.ts +58 -0
- package/dist/esm/ui/components/assessment/types.d.ts.map +1 -0
- package/dist/esm/ui/components/assessment/types.js +2 -0
- package/dist/esm/ui/components/assessment/types.js.map +1 -0
- package/dist/esm/ui/components/index.d.ts +39 -0
- package/dist/esm/ui/components/index.d.ts.map +1 -0
- package/dist/esm/ui/components/index.js +45 -0
- package/dist/esm/ui/components/index.js.map +1 -0
- package/dist/esm/ui/components/metrics/AssessmentSection.d.ts +27 -0
- package/dist/esm/ui/components/metrics/AssessmentSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/AssessmentSection.js +76 -0
- package/dist/esm/ui/components/metrics/AssessmentSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/MetricCard.d.ts +20 -0
- package/dist/esm/ui/components/metrics/MetricCard.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/MetricCard.js +77 -0
- package/dist/esm/ui/components/metrics/MetricCard.js.map +1 -0
- package/dist/esm/ui/components/metrics/MetricSection.d.ts +12 -0
- package/dist/esm/ui/components/metrics/MetricSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/MetricSection.js +5 -0
- package/dist/esm/ui/components/metrics/MetricSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/MetricsOverview.d.ts +89 -0
- package/dist/esm/ui/components/metrics/MetricsOverview.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/MetricsOverview.js +26 -0
- package/dist/esm/ui/components/metrics/MetricsOverview.js.map +1 -0
- package/dist/esm/ui/components/metrics/metricThresholds.d.ts +40 -0
- package/dist/esm/ui/components/metrics/metricThresholds.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/metricThresholds.js +203 -0
- package/dist/esm/ui/components/metrics/metricThresholds.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/AIAssessmentSection.d.ts +12 -0
- package/dist/esm/ui/components/metrics/sections/AIAssessmentSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/AIAssessmentSection.js +28 -0
- package/dist/esm/ui/components/metrics/sections/AIAssessmentSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/ContextMetricsSection.d.ts +10 -0
- package/dist/esm/ui/components/metrics/sections/ContextMetricsSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/ContextMetricsSection.js +18 -0
- package/dist/esm/ui/components/metrics/sections/ContextMetricsSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/EngagementMetricsSection.d.ts +10 -0
- package/dist/esm/ui/components/metrics/sections/EngagementMetricsSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/EngagementMetricsSection.js +18 -0
- package/dist/esm/ui/components/metrics/sections/EngagementMetricsSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/ErrorMetricsSection.d.ts +10 -0
- package/dist/esm/ui/components/metrics/sections/ErrorMetricsSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/ErrorMetricsSection.js +14 -0
- package/dist/esm/ui/components/metrics/sections/ErrorMetricsSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/GitDiffMetricsSection.d.ts +10 -0
- package/dist/esm/ui/components/metrics/sections/GitDiffMetricsSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/GitDiffMetricsSection.js +19 -0
- package/dist/esm/ui/components/metrics/sections/GitDiffMetricsSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/PerformanceMetricsSection.d.ts +10 -0
- package/dist/esm/ui/components/metrics/sections/PerformanceMetricsSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/PerformanceMetricsSection.js +18 -0
- package/dist/esm/ui/components/metrics/sections/PerformanceMetricsSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/QualityMetricsSection.d.ts +10 -0
- package/dist/esm/ui/components/metrics/sections/QualityMetricsSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/QualityMetricsSection.js +23 -0
- package/dist/esm/ui/components/metrics/sections/QualityMetricsSection.js.map +1 -0
- package/dist/esm/ui/components/metrics/sections/UsageMetricsSection.d.ts +10 -0
- package/dist/esm/ui/components/metrics/sections/UsageMetricsSection.d.ts.map +1 -0
- package/dist/esm/ui/components/metrics/sections/UsageMetricsSection.js +14 -0
- package/dist/esm/ui/components/metrics/sections/UsageMetricsSection.js.map +1 -0
- package/dist/esm/ui/components/phase/PhaseBlock.d.ts +19 -0
- package/dist/esm/ui/components/phase/PhaseBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/phase/PhaseBlock.js +13 -0
- package/dist/esm/ui/components/phase/PhaseBlock.js.map +1 -0
- package/dist/esm/ui/components/phase/PhaseHeader.d.ts +10 -0
- package/dist/esm/ui/components/phase/PhaseHeader.d.ts.map +1 -0
- package/dist/esm/ui/components/phase/PhaseHeader.js +12 -0
- package/dist/esm/ui/components/phase/PhaseHeader.js.map +1 -0
- package/dist/esm/ui/components/phase/PhaseIcon.d.ts +22 -0
- package/dist/esm/ui/components/phase/PhaseIcon.d.ts.map +1 -0
- package/dist/esm/ui/components/phase/PhaseIcon.js +71 -0
- package/dist/esm/ui/components/phase/PhaseIcon.js.map +1 -0
- package/dist/esm/ui/components/phase/PhaseStats.d.ts +13 -0
- package/dist/esm/ui/components/phase/PhaseStats.d.ts.map +1 -0
- package/dist/esm/ui/components/phase/PhaseStats.js +24 -0
- package/dist/esm/ui/components/phase/PhaseStats.js.map +1 -0
- package/dist/esm/ui/components/phase/PhaseSummary.d.ts +9 -0
- package/dist/esm/ui/components/phase/PhaseSummary.d.ts.map +1 -0
- package/dist/esm/ui/components/phase/PhaseSummary.js +5 -0
- package/dist/esm/ui/components/phase/PhaseSummary.js.map +1 -0
- package/dist/esm/ui/components/phase/PhaseTimeline.d.ts +17 -0
- package/dist/esm/ui/components/phase/PhaseTimeline.d.ts.map +1 -0
- package/dist/esm/ui/components/phase/PhaseTimeline.js +22 -0
- package/dist/esm/ui/components/phase/PhaseTimeline.js.map +1 -0
- package/dist/esm/ui/components/phase/index.d.ts +12 -0
- package/dist/esm/ui/components/phase/index.d.ts.map +1 -0
- package/dist/esm/ui/components/phase/index.js +10 -0
- package/dist/esm/ui/components/phase/index.js.map +1 -0
- package/dist/esm/ui/components/timeline/ContentRenderer.d.ts +10 -0
- package/dist/esm/ui/components/timeline/ContentRenderer.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/ContentRenderer.js +73 -0
- package/dist/esm/ui/components/timeline/ContentRenderer.js.map +1 -0
- package/dist/esm/ui/components/timeline/DebugModal.d.ts +14 -0
- package/dist/esm/ui/components/timeline/DebugModal.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/DebugModal.js +27 -0
- package/dist/esm/ui/components/timeline/DebugModal.js.map +1 -0
- package/dist/esm/ui/components/timeline/MessageHeader.d.ts +11 -0
- package/dist/esm/ui/components/timeline/MessageHeader.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/MessageHeader.js +7 -0
- package/dist/esm/ui/components/timeline/MessageHeader.js.map +1 -0
- package/dist/esm/ui/components/timeline/TimelineGroup.d.ts +10 -0
- package/dist/esm/ui/components/timeline/TimelineGroup.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/TimelineGroup.js +7 -0
- package/dist/esm/ui/components/timeline/TimelineGroup.js.map +1 -0
- package/dist/esm/ui/components/timeline/TimelineMessage.d.ts +12 -0
- package/dist/esm/ui/components/timeline/TimelineMessage.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/TimelineMessage.js +23 -0
- package/dist/esm/ui/components/timeline/TimelineMessage.js.map +1 -0
- package/dist/esm/ui/components/timeline/VirtualizedMessageList.d.ts +36 -0
- package/dist/esm/ui/components/timeline/VirtualizedMessageList.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/VirtualizedMessageList.js +90 -0
- package/dist/esm/ui/components/timeline/VirtualizedMessageList.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/CodeBlock.d.ts +10 -0
- package/dist/esm/ui/components/timeline/blocks/CodeBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/CodeBlock.js +14 -0
- package/dist/esm/ui/components/timeline/blocks/CodeBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ImageBlock.d.ts +10 -0
- package/dist/esm/ui/components/timeline/blocks/ImageBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ImageBlock.js +5 -0
- package/dist/esm/ui/components/timeline/blocks/ImageBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/JsonBlock.d.ts +10 -0
- package/dist/esm/ui/components/timeline/blocks/JsonBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/JsonBlock.js +11 -0
- package/dist/esm/ui/components/timeline/blocks/JsonBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/SystemReminderBlock.d.ts +16 -0
- package/dist/esm/ui/components/timeline/blocks/SystemReminderBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/SystemReminderBlock.js +90 -0
- package/dist/esm/ui/components/timeline/blocks/SystemReminderBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/TextBlock.d.ts +13 -0
- package/dist/esm/ui/components/timeline/blocks/TextBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/TextBlock.js +188 -0
- package/dist/esm/ui/components/timeline/blocks/TextBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ThinkingBlock.d.ts +15 -0
- package/dist/esm/ui/components/timeline/blocks/ThinkingBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ThinkingBlock.js +15 -0
- package/dist/esm/ui/components/timeline/blocks/ThinkingBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ToolBlock.d.ts +13 -0
- package/dist/esm/ui/components/timeline/blocks/ToolBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ToolBlock.js +51 -0
- package/dist/esm/ui/components/timeline/blocks/ToolBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ToolResultBlock.d.ts +12 -0
- package/dist/esm/ui/components/timeline/blocks/ToolResultBlock.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/ToolResultBlock.js +81 -0
- package/dist/esm/ui/components/timeline/blocks/ToolResultBlock.js.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/index.d.ts +11 -0
- package/dist/esm/ui/components/timeline/blocks/index.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/blocks/index.js +11 -0
- package/dist/esm/ui/components/timeline/blocks/index.js.map +1 -0
- package/dist/esm/ui/components/timeline/index.d.ts +10 -0
- package/dist/esm/ui/components/timeline/index.d.ts.map +1 -0
- package/dist/esm/ui/components/timeline/index.js +10 -0
- package/dist/esm/ui/components/timeline/index.js.map +1 -0
- package/dist/esm/ui/index.d.ts +10 -0
- package/dist/esm/ui/index.d.ts.map +1 -0
- package/dist/esm/ui/index.js +15 -0
- package/dist/esm/ui/index.js.map +1 -0
- package/dist/esm/ui/utils/extractTokens.d.ts +94 -0
- package/dist/esm/ui/utils/extractTokens.d.ts.map +1 -0
- package/dist/esm/ui/utils/extractTokens.js +185 -0
- package/dist/esm/ui/utils/extractTokens.js.map +1 -0
- package/dist/esm/ui/utils/markdown.d.ts +65 -0
- package/dist/esm/ui/utils/markdown.d.ts.map +1 -0
- package/dist/esm/ui/utils/markdown.js +199 -0
- package/dist/esm/ui/utils/markdown.js.map +1 -0
- package/dist/esm/ui/utils/processors/BaseMessageProcessor.d.ts +133 -0
- package/dist/esm/ui/utils/processors/BaseMessageProcessor.d.ts.map +1 -0
- package/dist/esm/ui/utils/processors/BaseMessageProcessor.js +546 -0
- package/dist/esm/ui/utils/processors/BaseMessageProcessor.js.map +1 -0
- package/dist/esm/ui/utils/processors/CanonicalMessageProcessor.d.ts +81 -0
- package/dist/esm/ui/utils/processors/CanonicalMessageProcessor.d.ts.map +1 -0
- package/dist/esm/ui/utils/processors/CanonicalMessageProcessor.js +442 -0
- package/dist/esm/ui/utils/processors/CanonicalMessageProcessor.js.map +1 -0
- package/dist/esm/ui/utils/processors/GenericMessageProcessor.d.ts +46 -0
- package/dist/esm/ui/utils/processors/GenericMessageProcessor.d.ts.map +1 -0
- package/dist/esm/ui/utils/processors/GenericMessageProcessor.js +169 -0
- package/dist/esm/ui/utils/processors/GenericMessageProcessor.js.map +1 -0
- package/dist/esm/ui/utils/processors/ProcessorRegistry.d.ts +33 -0
- package/dist/esm/ui/utils/processors/ProcessorRegistry.d.ts.map +1 -0
- package/dist/esm/ui/utils/processors/ProcessorRegistry.js +71 -0
- package/dist/esm/ui/utils/processors/ProcessorRegistry.js.map +1 -0
- package/dist/esm/ui/utils/processors/index.d.ts +11 -0
- package/dist/esm/ui/utils/processors/index.d.ts.map +1 -0
- package/dist/esm/ui/utils/processors/index.js +11 -0
- package/dist/esm/ui/utils/processors/index.js.map +1 -0
- package/dist/esm/ui/utils/sessionTypes.d.ts +2 -0
- package/dist/esm/ui/utils/sessionTypes.d.ts.map +1 -0
- package/dist/esm/ui/utils/sessionTypes.js +3 -0
- package/dist/esm/ui/utils/sessionTypes.js.map +1 -0
- package/dist/esm/ui/utils/systemReminderParser.d.ts +40 -0
- package/dist/esm/ui/utils/systemReminderParser.d.ts.map +1 -0
- package/dist/esm/ui/utils/systemReminderParser.js +104 -0
- package/dist/esm/ui/utils/systemReminderParser.js.map +1 -0
- package/dist/esm/ui/utils/timelineTypes.d.ts +201 -0
- package/dist/esm/ui/utils/timelineTypes.d.ts.map +1 -0
- package/dist/esm/ui/utils/timelineTypes.js +38 -0
- package/dist/esm/ui/utils/timelineTypes.js.map +1 -0
- package/dist/esm/ui/utils/todos/extractTodosClaudeCode.d.ts +9 -0
- package/dist/esm/ui/utils/todos/extractTodosClaudeCode.d.ts.map +1 -0
- package/dist/esm/ui/utils/todos/extractTodosClaudeCode.js +37 -0
- package/dist/esm/ui/utils/todos/extractTodosClaudeCode.js.map +1 -0
- package/dist/esm/ui/utils/todos/extractTodosCodex.d.ts +29 -0
- package/dist/esm/ui/utils/todos/extractTodosCodex.d.ts.map +1 -0
- package/dist/esm/ui/utils/todos/extractTodosCodex.js +158 -0
- package/dist/esm/ui/utils/todos/extractTodosCodex.js.map +1 -0
- package/dist/esm/ui/utils/todos/index.d.ts +18 -0
- package/dist/esm/ui/utils/todos/index.d.ts.map +1 -0
- package/dist/esm/ui/utils/todos/index.js +36 -0
- package/dist/esm/ui/utils/todos/index.js.map +1 -0
- package/dist/esm/ui/utils/todos/todoUtils.d.ts +27 -0
- package/dist/esm/ui/utils/todos/todoUtils.d.ts.map +1 -0
- package/dist/esm/ui/utils/todos/todoUtils.js +117 -0
- package/dist/esm/ui/utils/todos/todoUtils.js.map +1 -0
- package/dist/esm/ui/utils/todos/types.d.ts +41 -0
- package/dist/esm/ui/utils/todos/types.d.ts.map +1 -0
- package/dist/esm/ui/utils/todos/types.js +5 -0
- package/dist/esm/ui/utils/todos/types.js.map +1 -0
- package/dist/esm/utils/git-url.d.ts +25 -0
- package/dist/esm/utils/git-url.d.ts.map +1 -0
- package/dist/esm/utils/git-url.js +56 -0
- package/dist/esm/utils/git-url.js.map +1 -0
- package/dist/esm/utils/index.d.ts +7 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +7 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/rating.d.ts +61 -0
- package/dist/esm/utils/rating.d.ts.map +1 -0
- package/dist/esm/utils/rating.js +91 -0
- package/dist/esm/utils/rating.js.map +1 -0
- package/dist/esm/utils/safe-access.d.ts +43 -0
- package/dist/esm/utils/safe-access.d.ts.map +1 -0
- package/dist/esm/utils/safe-access.js +78 -0
- package/dist/esm/utils/safe-access.js.map +1 -0
- package/dist/esm/utils/user.d.ts +22 -0
- package/dist/esm/utils/user.d.ts.map +1 -0
- package/dist/esm/utils/user.js +36 -0
- package/dist/esm/utils/user.js.map +1 -0
- package/dist/esm/validation/index.d.ts +8 -0
- package/dist/esm/validation/index.d.ts.map +1 -0
- package/dist/esm/validation/index.js +10 -0
- package/dist/esm/validation/index.js.map +1 -0
- package/dist/esm/validation/validator.d.ts +48 -0
- package/dist/esm/validation/validator.d.ts.map +1 -0
- package/dist/esm/validation/validator.js +203 -0
- package/dist/esm/validation/validator.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/index.css +31 -0
- package/package.json +144 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { CheckCircleIcon, ClockIcon } from '@heroicons/react/24/outline';
|
|
3
|
+
import { ListBulletIcon } from '@heroicons/react/24/solid';
|
|
4
|
+
import { useEffect, useMemo, useState } from 'react';
|
|
5
|
+
import { extractTodosAuto, formatDuration, groupTodoLists, } from '../utils/todos/index.js';
|
|
6
|
+
export function SessionTodosTab({ fileContent }) {
|
|
7
|
+
const [showAll, setShowAll] = useState(() => {
|
|
8
|
+
const saved = localStorage.getItem('sessionTodosShowAll');
|
|
9
|
+
return saved !== null ? saved === 'true' : true; // Default to true (show all)
|
|
10
|
+
});
|
|
11
|
+
const todoUpdates = useMemo(() => extractTodosAuto(fileContent || ''), [fileContent]);
|
|
12
|
+
// Group todo lists by content
|
|
13
|
+
const todoGroups = useMemo(() => groupTodoLists(todoUpdates), [todoUpdates]);
|
|
14
|
+
// Get the latest group (most recent todo list) - groups are sorted most recent first
|
|
15
|
+
const latestGroup = todoGroups.length > 0 ? todoGroups[0] : null;
|
|
16
|
+
// Save showAll preference to localStorage
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
localStorage.setItem('sessionTodosShowAll', String(showAll));
|
|
19
|
+
}, [showAll]);
|
|
20
|
+
// Calculate stats for the latest group (or all groups if showing all)
|
|
21
|
+
const stats = useMemo(() => {
|
|
22
|
+
const todos = showAll
|
|
23
|
+
? todoGroups.flatMap(g => g.enrichedTodos)
|
|
24
|
+
: latestGroup?.enrichedTodos || [];
|
|
25
|
+
const total = todos.length;
|
|
26
|
+
const completed = todos.filter(t => t.status === 'completed').length;
|
|
27
|
+
const inProgress = todos.filter(t => t.status === 'in_progress').length;
|
|
28
|
+
const pending = todos.filter(t => t.status === 'pending').length;
|
|
29
|
+
const percent = total > 0 ? Math.round((completed / total) * 100) : 0;
|
|
30
|
+
return { total, completed, inProgress, pending, percent };
|
|
31
|
+
}, [todoGroups, latestGroup, showAll]);
|
|
32
|
+
// Empty state
|
|
33
|
+
if (todoUpdates.length === 0) {
|
|
34
|
+
return (_jsxs("div", { className: "flex flex-col items-center justify-center min-h-[400px] text-base-content/60", children: [_jsx(ListBulletIcon, { className: "w-16 h-16 mb-4 opacity-50" }), _jsx("p", { className: "text-lg font-medium", children: "No todos found" }), _jsx("p", { className: "text-sm mt-1", children: "This session didn't use TodoWrite tracking" })] }));
|
|
35
|
+
}
|
|
36
|
+
return (_jsxs("div", { className: "space-y-4 p-4", children: [_jsx("div", { className: "card bg-base-200 border border-base-300", children: _jsx("div", { className: "card-body p-4", children: _jsxs("div", { className: "flex items-center justify-between flex-wrap gap-4", children: [_jsxs("div", { className: "flex items-center gap-4 flex-wrap", children: [_jsxs("div", { className: "badge badge-lg gap-2", children: [_jsx(CheckCircleIcon, { className: "w-4 h-4" }), stats.completed, " / ", stats.total, " completed"] }), stats.inProgress > 0 && (_jsxs("div", { className: "badge badge-primary badge-lg gap-2", children: [_jsx(ClockIcon, { className: "w-4 h-4" }), stats.inProgress, " in progress"] })), stats.pending > 0 && (_jsxs("div", { className: "badge badge-ghost badge-lg", children: [stats.pending, " pending"] }))] }), _jsxs("div", { className: "flex items-center gap-3", children: [todoGroups.length > 1 && (_jsx("button", { type: "button", onClick: () => setShowAll(!showAll), className: `btn btn-sm ${!showAll ? 'btn-primary' : 'btn-ghost'}`, title: showAll ? 'Show latest list only' : 'Show all todo lists', children: showAll ? 'Latest Only' : `All ${todoGroups.length} Lists` })), _jsx("progress", { className: "progress progress-primary w-32", value: stats.percent, max: "100" }), _jsxs("span", { className: "text-sm font-medium text-base-content/70 min-w-[3rem] text-right", children: [stats.percent, "%"] })] })] }) }) }), showAll ? (
|
|
37
|
+
// Show all groups
|
|
38
|
+
_jsx("div", { className: "space-y-6", children: todoGroups.map((group, groupIdx) => (_jsxs("div", { className: "space-y-2", children: [todoGroups.length > 1 && (_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("h3", { className: "text-sm font-semibold text-base-content/70", children: ["List ", todoGroups.length - groupIdx] }), _jsxs("div", { className: "text-xs text-base-content/50", children: [group.updates.length, " update", group.updates.length > 1 ? 's' : '', " \u2022", new Date(group.firstSeen).toLocaleString()] })] })), _jsx("div", { className: "space-y-2", children: group.enrichedTodos.map((todo, todoIdx) => (_jsx(TodoCard, { todo: todo }, `${group.id}-${todoIdx}`))) })] }, group.id))) })) : (
|
|
39
|
+
// Show only latest group
|
|
40
|
+
latestGroup && (_jsx("div", { className: "space-y-2", children: latestGroup.enrichedTodos.map((todo, todoIdx) => (_jsx(TodoCard, { todo: todo }, `${latestGroup.id}-${todoIdx}`))) })))] }));
|
|
41
|
+
}
|
|
42
|
+
// Extracted TodoCard component for reuse
|
|
43
|
+
function TodoCard({ todo }) {
|
|
44
|
+
const statusColors = {
|
|
45
|
+
completed: 'bg-base-200 border-success',
|
|
46
|
+
in_progress: 'bg-primary border-primary border-2',
|
|
47
|
+
pending: 'bg-base-100 border-base-300',
|
|
48
|
+
};
|
|
49
|
+
const StatusIcon = {
|
|
50
|
+
completed: CheckCircleIcon,
|
|
51
|
+
in_progress: ClockIcon,
|
|
52
|
+
pending: ListBulletIcon,
|
|
53
|
+
}[todo.status];
|
|
54
|
+
const iconColors = {
|
|
55
|
+
completed: 'text-success',
|
|
56
|
+
in_progress: 'text-primary-content',
|
|
57
|
+
pending: 'text-base-content opacity-30',
|
|
58
|
+
};
|
|
59
|
+
const textColors = {
|
|
60
|
+
completed: 'text-base-content opacity-60',
|
|
61
|
+
in_progress: 'text-primary-content font-semibold',
|
|
62
|
+
pending: 'text-base-content opacity-40',
|
|
63
|
+
};
|
|
64
|
+
return (_jsx("div", { className: `card border ${statusColors[todo.status]}`, children: _jsx("div", { className: "card-body p-3", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsx(StatusIcon, { className: `w-5 h-5 flex-shrink-0 mt-0.5 ${iconColors[todo.status]}` }), _jsxs("div", { className: "flex-1 min-w-0", children: [_jsx("p", { className: `text-sm ${textColors[todo.status]} ${todo.status === 'completed' ? 'line-through' : ''}`, children: todo.content }), todo.status === 'in_progress' && (_jsx("p", { className: "text-xs text-primary-content opacity-80 mt-1 italic font-medium", children: todo.activeForm })), todo.status === 'completed' && todo.durationMs && (_jsxs("div", { className: "flex items-center gap-2 mt-2 text-xs text-base-content opacity-50", children: [_jsx(ClockIcon, { className: "w-3 h-3" }), _jsx("span", { children: formatDuration(todo.durationMs) }), todo.startTime && todo.endTime && (_jsxs(_Fragment, { children: [_jsx("span", { children: "\u2022" }), _jsxs("span", { children: [new Date(todo.startTime).toLocaleTimeString(), " \u2192", ' ', new Date(todo.endTime).toLocaleTimeString()] })] }))] }))] }), _jsxs("div", { className: "flex-shrink-0", children: [todo.status === 'completed' && (_jsx("span", { className: "badge badge-success badge-sm", children: "Done" })), todo.status === 'in_progress' && (_jsx("span", { className: "badge badge-accent badge-sm font-semibold", children: "Active" }))] })] }) }) }));
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=SessionTodosTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionTodosTab.js","sourceRoot":"","sources":["../../../../src/ui/components/SessionTodosTab.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TokenUsageChart - Interactive bar chart showing per-message token usage
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Stacked bars showing input and output tokens
|
|
6
|
+
* - In cumulative mode, also shows cache reads (already cumulative from API)
|
|
7
|
+
* - Toggle between per-message and cumulative views
|
|
8
|
+
* - Clickable bars that scroll to corresponding messages
|
|
9
|
+
* - Responsive width (bars auto-thin with more messages)
|
|
10
|
+
* - DaisyUI themed colors
|
|
11
|
+
*/
|
|
12
|
+
import type { TimelineItem } from '../utils/timelineTypes.js';
|
|
13
|
+
export interface TokenUsageChartProps {
|
|
14
|
+
/** Timeline items (filtered by current transcript filters) */
|
|
15
|
+
items: TimelineItem[];
|
|
16
|
+
/** Callback to scroll to a specific message */
|
|
17
|
+
onMessageClick?: (messageId: string) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare function TokenUsageChart({ items, onMessageClick }: TokenUsageChartProps): import("react/jsx-runtime").JSX.Element | null;
|
|
20
|
+
//# sourceMappingURL=TokenUsageChart.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenUsageChart.d.ts","sourceRoot":"","sources":["../../../../src/ui/components/TokenUsageChart.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAmBH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AAE7D,MAAM,WAAW,oBAAoB;IACnC,8DAA8D;IAC9D,KAAK,EAAE,YAAY,EAAE,CAAA;IAErB,+CAA+C;IAC/C,cAAc,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAA;CAC7C;AAgDD,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,oBAAoB,kDA8R9E"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* TokenUsageChart - Interactive bar chart showing per-message token usage
|
|
4
|
+
*
|
|
5
|
+
* Features:
|
|
6
|
+
* - Stacked bars showing input and output tokens
|
|
7
|
+
* - In cumulative mode, also shows cache reads (already cumulative from API)
|
|
8
|
+
* - Toggle between per-message and cumulative views
|
|
9
|
+
* - Clickable bars that scroll to corresponding messages
|
|
10
|
+
* - Responsive width (bars auto-thin with more messages)
|
|
11
|
+
* - DaisyUI themed colors
|
|
12
|
+
*/
|
|
13
|
+
import { useCallback, useMemo } from 'react';
|
|
14
|
+
import { Bar, ComposedChart, Line, ReferenceLine, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts';
|
|
15
|
+
import { calculateCumulativeTokens, calculatePerMessageTokens, formatForRecharts, } from '../utils/extractTokens.js';
|
|
16
|
+
/**
|
|
17
|
+
* Custom tooltip showing per-message tokens and current cache total
|
|
18
|
+
*/
|
|
19
|
+
function CustomTooltip({ active, payload, }) {
|
|
20
|
+
if (!active || !payload || payload.length === 0) {
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
const data = payload[0].payload;
|
|
24
|
+
return (_jsxs("div", { className: "bg-base-100 border border-base-300 rounded-lg shadow-lg p-3 text-sm", children: [_jsxs("div", { className: "font-semibold mb-2", children: ["Message ", data.index + 1] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("div", { className: "flex justify-between gap-4", children: [_jsx("span", { className: "text-primary", children: "Input:" }), _jsx("span", { className: "font-mono", children: data.input.toLocaleString() })] }), _jsxs("div", { className: "flex justify-between gap-4", children: [_jsx("span", { className: "text-secondary", children: "Output:" }), _jsx("span", { className: "font-mono", children: data.output.toLocaleString() })] }), data.cacheRead > 0 && (_jsxs("div", { className: "flex justify-between gap-4 border-t border-base-300 pt-1 mt-1", children: [_jsx("span", { style: { color: CHART_COLORS.cacheRead }, children: "Cached Context:" }), _jsx("span", { className: "font-mono", children: data.cacheRead.toLocaleString() })] }))] })] }));
|
|
25
|
+
}
|
|
26
|
+
// Theme colors that work well in both light and dark modes
|
|
27
|
+
const CHART_COLORS = {
|
|
28
|
+
primary: '#0891b2', // Cyan - for input tokens
|
|
29
|
+
secondary: '#a855f7', // Purple - for output tokens
|
|
30
|
+
cacheRead: '#f59e0b', // Amber/orange - for cache reads line
|
|
31
|
+
};
|
|
32
|
+
export function TokenUsageChart({ items, onMessageClick }) {
|
|
33
|
+
// Calculate per-message data with cumulative cache reads for the line
|
|
34
|
+
const chartData = useMemo(() => {
|
|
35
|
+
const perMessage = calculatePerMessageTokens(items);
|
|
36
|
+
const cumulative = calculateCumulativeTokens(items);
|
|
37
|
+
// Combine: per-message bars + cumulative cache line
|
|
38
|
+
return formatForRecharts(perMessage, 'per-message')
|
|
39
|
+
.map((d, i) => ({
|
|
40
|
+
...d,
|
|
41
|
+
cacheRead: cumulative[i]?.cacheRead || 0, // Add cumulative cache for line
|
|
42
|
+
}))
|
|
43
|
+
.filter(d => d.total > 0 || d.cacheRead > 0); // Keep if has tokens OR cache
|
|
44
|
+
}, [items]);
|
|
45
|
+
// Calculate current cached context from the most recent message
|
|
46
|
+
const currentContextLength = useMemo(() => {
|
|
47
|
+
const cumulative = calculateCumulativeTokens(items);
|
|
48
|
+
if (cumulative.length === 0)
|
|
49
|
+
return 0;
|
|
50
|
+
// Get the last message's cached context (cacheRead only)
|
|
51
|
+
return cumulative[cumulative.length - 1].cacheRead;
|
|
52
|
+
}, [items]);
|
|
53
|
+
// Get color based on context length thresholds
|
|
54
|
+
const getContextColor = (contextLength) => {
|
|
55
|
+
if (contextLength < 100000)
|
|
56
|
+
return '#22C55E'; // Green: < 100k
|
|
57
|
+
if (contextLength < 150000)
|
|
58
|
+
return '#F59E0B'; // Orange: 100k-150k
|
|
59
|
+
return '#EF4444'; // Red: > 150k
|
|
60
|
+
};
|
|
61
|
+
// Handle bar click - scroll to message
|
|
62
|
+
const handleBarClick = useCallback((data) => {
|
|
63
|
+
if (onMessageClick) {
|
|
64
|
+
onMessageClick(data.messageId);
|
|
65
|
+
}
|
|
66
|
+
}, [onMessageClick]);
|
|
67
|
+
// If no messages with tokens, don't show the chart
|
|
68
|
+
const hasTokens = chartData.some(d => d.total > 0);
|
|
69
|
+
if (!hasTokens) {
|
|
70
|
+
return null;
|
|
71
|
+
}
|
|
72
|
+
// Shared function to calculate Y-axis ticks and domain
|
|
73
|
+
const calculateAxisScale = (maxValue) => {
|
|
74
|
+
// Find the appropriate tick interval based on data range
|
|
75
|
+
let tickInterval;
|
|
76
|
+
if (maxValue <= 1000) {
|
|
77
|
+
tickInterval = 250; // 0, 250, 500, 750, 1000
|
|
78
|
+
}
|
|
79
|
+
else if (maxValue <= 2500) {
|
|
80
|
+
tickInterval = 500; // 0, 500, 1000, 1500, 2000, 2500
|
|
81
|
+
}
|
|
82
|
+
else if (maxValue <= 5000) {
|
|
83
|
+
tickInterval = 1000; // 0, 1k, 2k, 3k, 4k, 5k
|
|
84
|
+
}
|
|
85
|
+
else if (maxValue <= 25000) {
|
|
86
|
+
tickInterval = 5000; // 0, 5k, 10k, 15k, 20k, 25k
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
tickInterval = 10000; // 0, 10k, 20k, 30k, etc.
|
|
90
|
+
}
|
|
91
|
+
// Calculate how many ticks we need to cover the max value
|
|
92
|
+
const numTicks = Math.ceil(maxValue / tickInterval) + 1;
|
|
93
|
+
const ticks = Array.from({ length: numTicks }, (_, i) => i * tickInterval);
|
|
94
|
+
const domain = [0, tickInterval * (numTicks - 1)];
|
|
95
|
+
return { ticks, domain };
|
|
96
|
+
};
|
|
97
|
+
// Calculate max values for dual Y-axes
|
|
98
|
+
const maxBarTokens = Math.max(...chartData.map(d => d.total));
|
|
99
|
+
const maxCacheTokens = Math.max(...chartData.map(d => d.cacheRead));
|
|
100
|
+
const showCacheLine = maxCacheTokens > 0;
|
|
101
|
+
// Left Y-axis (bars) - per-message tokens
|
|
102
|
+
const { ticks: barYTicks, domain: barYDomain } = calculateAxisScale(maxBarTokens);
|
|
103
|
+
// Right Y-axis (line) - cumulative cache (uses same formula)
|
|
104
|
+
const { ticks: cacheYTicks, domain: cacheYDomain } = calculateAxisScale(maxCacheTokens);
|
|
105
|
+
const showReferenceLine = maxCacheTokens > 150000;
|
|
106
|
+
const contextWindowSize = 200000; // Claude Sonnet 4.5 context window
|
|
107
|
+
const contextPercent = Math.min((currentContextLength / contextWindowSize) * 100, 100);
|
|
108
|
+
const contextColor = getContextColor(currentContextLength);
|
|
109
|
+
return (_jsxs("div", { className: "bg-base-100 border border-base-300 rounded-lg p-4 mb-4", children: [_jsxs("div", { className: "mb-3", children: [_jsx("h3", { className: "text-sm font-semibold", children: "Token Usage" }), _jsx("p", { className: "text-xs text-base-content/60", children: "Per-message tokens and cumulative cache context" })] }), _jsxs("div", { className: "hidden md:flex items-stretch", children: [_jsxs("div", { className: "flex-1 min-w-0", style: { height: '120px' }, children: [_jsx(ResponsiveContainer, { width: "99%", height: "100%", children: _jsxs(ComposedChart, { data: chartData, margin: { top: 5, right: 5, left: 0, bottom: 5 }, barCategoryGap: "1%", children: [_jsx(XAxis, { dataKey: "index", hide: true, domain: [0, chartData.length - 1] }), _jsx(YAxis, { yAxisId: "left", domain: barYDomain, ticks: barYTicks, tick: { fontSize: 10, fill: 'currentColor' }, tickFormatter: (value) => value >= 1000 ? `${(value / 1000).toFixed(0)}k` : value.toString() }), showCacheLine && (_jsx(YAxis, { yAxisId: "right", orientation: "right", domain: cacheYDomain, ticks: cacheYTicks, tick: { fontSize: 10, fill: CHART_COLORS.cacheRead }, tickFormatter: (value) => value >= 1000 ? `${(value / 1000).toFixed(0)}k` : value.toString() })), _jsx(Tooltip, { content: _jsx(CustomTooltip, {}), cursor: { fill: 'rgba(0,0,0,0.1)' } }), showReferenceLine && (_jsx(ReferenceLine, { yAxisId: "right", y: 200000, stroke: CHART_COLORS.cacheRead, strokeDasharray: "3 3", strokeOpacity: 0.3, label: {
|
|
110
|
+
value: '200k',
|
|
111
|
+
position: 'right',
|
|
112
|
+
fontSize: 10,
|
|
113
|
+
fill: CHART_COLORS.cacheRead,
|
|
114
|
+
opacity: 0.5,
|
|
115
|
+
} })), _jsx(Bar, { yAxisId: "left", dataKey: "input", stackId: "tokens", fill: CHART_COLORS.primary, onClick: (data) => handleBarClick(data), cursor: "pointer", isAnimationActive: false }), _jsx(Bar, { yAxisId: "left", dataKey: "output", stackId: "tokens", fill: CHART_COLORS.secondary, onClick: (data) => handleBarClick(data), cursor: "pointer", isAnimationActive: false }), showCacheLine && (_jsx(Line, { yAxisId: "right", type: "monotone", dataKey: "cacheRead", stroke: CHART_COLORS.cacheRead, strokeWidth: 2, dot: false, isAnimationActive: false }))] }) }), _jsxs("div", { className: "flex justify-center gap-4 mt-2 text-xs", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "w-3 h-3 rounded", style: { backgroundColor: CHART_COLORS.primary } }), _jsx("span", { children: "Input" })] }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "w-3 h-3 rounded", style: { backgroundColor: CHART_COLORS.secondary } }), _jsx("span", { children: "Output" })] }), showCacheLine && (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("div", { className: "w-3 h-0.5", style: { backgroundColor: CHART_COLORS.cacheRead } }), _jsx("span", { children: "Cached Context" })] }))] })] }), currentContextLength > 0 && (_jsxs("div", { className: "flex flex-col items-center justify-center", style: { width: '90px' }, children: [_jsxs("div", { className: "relative w-8 bg-base-200 border border-base-300 rounded overflow-hidden", style: { height: '120px' }, children: [_jsx("div", { className: "absolute bottom-0 w-full transition-all duration-300", style: {
|
|
116
|
+
height: `${contextPercent}%`,
|
|
117
|
+
backgroundColor: contextColor,
|
|
118
|
+
} }), _jsx("div", { className: "absolute left-0 bottom-1/2 w-full h-px bg-base-content/10" }), ' ', _jsx("div", { className: "absolute left-0 w-full h-px bg-base-content/10", style: { bottom: '75%' } }), ' '] }), _jsx("div", { className: "mt-2 text-center", children: _jsxs("div", { className: "text-xs font-semibold", style: { color: contextColor }, children: [(currentContextLength / 1000).toFixed(0), "k"] }) })] }))] }), currentContextLength > 0 && (_jsx("div", { className: "block md:hidden", children: _jsxs("div", { className: "space-y-2", children: [_jsxs("div", { className: "flex justify-between items-center text-xs", children: [_jsx("span", { className: "text-base-content/60", children: "Cached Context" }), _jsxs("span", { className: "font-semibold", style: { color: contextColor }, children: [(currentContextLength / 1000).toFixed(0), "k / 200k (", contextPercent.toFixed(0), "%)"] })] }), _jsxs("div", { className: "relative w-full h-6 bg-base-200 border border-base-300 rounded overflow-hidden", children: [_jsx("div", { className: "absolute left-0 h-full transition-all duration-300", style: {
|
|
119
|
+
width: `${contextPercent}%`,
|
|
120
|
+
backgroundColor: contextColor,
|
|
121
|
+
} }), _jsx("div", { className: "absolute left-1/2 top-0 w-px h-full bg-base-content/10" }), _jsx("div", { className: "absolute left-3/4 top-0 w-px h-full bg-base-content/10" })] }), _jsxs("div", { className: "flex justify-between text-xs text-base-content/40", children: [_jsx("span", { children: "0k" }), _jsx("span", { children: "100k" }), _jsx("span", { children: "150k" }), _jsx("span", { children: "200k" })] })] }) }))] }));
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=TokenUsageChart.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenUsageChart.js","sourceRoot":"","sources":["../../../../src/ui/components/TokenUsageChart.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { AssessmentModalProps } from './types';
|
|
2
|
+
export declare function AssessmentModal({ sessionId: _sessionId, isOpen, onClose, questions, initialResponses, onSubmit, onDraft, title, showVersionSelector, completionMessage, previewMode, }: AssessmentModalProps): import("react/jsx-runtime").JSX.Element | null;
|
|
3
|
+
//# sourceMappingURL=AssessmentModal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssessmentModal.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/AssessmentModal.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAEnD,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EAAE,UAAU,EACrB,MAAM,EACN,OAAO,EACP,SAAS,EACT,gBAAqB,EACrB,QAAQ,EACR,OAAO,EACP,KAA4B,EAC5B,mBAAmB,EACnB,iBAAoE,EACpE,WAAmB,GACpB,EAAE,oBAAoB,kDAsStB"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { CheckIcon, ChevronLeftIcon, ChevronRightIcon, XMarkIcon, } from '@heroicons/react/24/outline';
|
|
3
|
+
import { useCallback, useEffect, useState } from 'react';
|
|
4
|
+
import { ProgressBar } from './ProgressBar';
|
|
5
|
+
import { QuestionCard } from './QuestionCard';
|
|
6
|
+
import { VersionSelector } from './VersionSelector';
|
|
7
|
+
export function AssessmentModal({ sessionId: _sessionId, isOpen, onClose, questions, initialResponses = {}, onSubmit, onDraft, title = 'Session Assessment', showVersionSelector, completionMessage = 'Your feedback has been submitted successfully.', previewMode = false, }) {
|
|
8
|
+
// Auto-detect if version selector should be shown
|
|
9
|
+
// Show if explicitly enabled, or if any question has a 'version' property
|
|
10
|
+
const hasVersions = questions.some(q => q.version && q.version.length > 0);
|
|
11
|
+
const shouldShowVersionSelector = showVersionSelector ?? hasVersions;
|
|
12
|
+
const [selectedVersion, setSelectedVersion] = useState(null);
|
|
13
|
+
const [currentIndex, setCurrentIndex] = useState(0);
|
|
14
|
+
const [responses, setResponses] = useState(initialResponses);
|
|
15
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
16
|
+
const [startTime, setStartTime] = useState(null);
|
|
17
|
+
const [showCompletion, setShowCompletion] = useState(false);
|
|
18
|
+
// Reset start time when modal opens
|
|
19
|
+
useEffect(() => {
|
|
20
|
+
if (isOpen && !startTime) {
|
|
21
|
+
setStartTime(Date.now());
|
|
22
|
+
}
|
|
23
|
+
}, [isOpen, startTime]);
|
|
24
|
+
// Filter questions based on selected version (if version selector is shown)
|
|
25
|
+
const filteredQuestions = shouldShowVersionSelector && selectedVersion
|
|
26
|
+
? questions.filter(q => q.version?.includes(selectedVersion))
|
|
27
|
+
: questions;
|
|
28
|
+
const currentQuestion = filteredQuestions[currentIndex];
|
|
29
|
+
const isLastQuestion = currentIndex === filteredQuestions.length - 1;
|
|
30
|
+
const canGoNext = previewMode || responses[currentQuestion?.id] !== undefined;
|
|
31
|
+
// Auto-save draft every 30 seconds (disabled in preview mode)
|
|
32
|
+
useEffect(() => {
|
|
33
|
+
if (!isOpen || !onDraft || previewMode)
|
|
34
|
+
return;
|
|
35
|
+
const interval = setInterval(() => {
|
|
36
|
+
const responseArray = Object.entries(responses).map(([questionId, answer]) => ({
|
|
37
|
+
questionId,
|
|
38
|
+
answer,
|
|
39
|
+
timestamp: new Date().toISOString(),
|
|
40
|
+
}));
|
|
41
|
+
if (responseArray.length > 0) {
|
|
42
|
+
onDraft(responseArray).catch(console.error);
|
|
43
|
+
}
|
|
44
|
+
}, 30000);
|
|
45
|
+
return () => clearInterval(interval);
|
|
46
|
+
}, [isOpen, responses, onDraft, previewMode]);
|
|
47
|
+
// Keyboard navigation
|
|
48
|
+
useEffect(() => {
|
|
49
|
+
if (!isOpen)
|
|
50
|
+
return;
|
|
51
|
+
const handleKeyPress = (e) => {
|
|
52
|
+
// Ignore arrow keys if user is typing in a text field
|
|
53
|
+
if (e.target instanceof HTMLTextAreaElement &&
|
|
54
|
+
(e.key === 'ArrowLeft' || e.key === 'ArrowRight')) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
if (e.key === 'Escape') {
|
|
58
|
+
onClose();
|
|
59
|
+
}
|
|
60
|
+
else if (e.key === 'Enter' && canGoNext && !isLastQuestion) {
|
|
61
|
+
handleNext();
|
|
62
|
+
}
|
|
63
|
+
else if (e.key === 'ArrowRight' && canGoNext && !isLastQuestion) {
|
|
64
|
+
e.preventDefault();
|
|
65
|
+
handleNext();
|
|
66
|
+
}
|
|
67
|
+
else if (e.key === 'ArrowLeft' && currentIndex > 0) {
|
|
68
|
+
e.preventDefault();
|
|
69
|
+
handlePrevious();
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
window.addEventListener('keydown', handleKeyPress);
|
|
73
|
+
return () => window.removeEventListener('keydown', handleKeyPress);
|
|
74
|
+
}, [isOpen, canGoNext, isLastQuestion, currentIndex, onClose]);
|
|
75
|
+
const handleAnswer = useCallback((answer) => {
|
|
76
|
+
setResponses(prev => ({
|
|
77
|
+
...prev,
|
|
78
|
+
[currentQuestion.id]: answer,
|
|
79
|
+
}));
|
|
80
|
+
}, [currentQuestion]);
|
|
81
|
+
const handleNext = () => {
|
|
82
|
+
if (currentIndex < filteredQuestions.length - 1) {
|
|
83
|
+
setCurrentIndex(prev => prev + 1);
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const handlePrevious = () => {
|
|
87
|
+
if (currentIndex > 0) {
|
|
88
|
+
setCurrentIndex(prev => prev - 1);
|
|
89
|
+
}
|
|
90
|
+
};
|
|
91
|
+
const handleSubmit = async () => {
|
|
92
|
+
setIsSubmitting(true);
|
|
93
|
+
try {
|
|
94
|
+
const responseArray = Object.entries(responses).map(([questionId, answer]) => ({
|
|
95
|
+
questionId,
|
|
96
|
+
answer,
|
|
97
|
+
timestamp: new Date().toISOString(),
|
|
98
|
+
}));
|
|
99
|
+
// Calculate duration in seconds
|
|
100
|
+
const durationSeconds = startTime ? Math.round((Date.now() - startTime) / 1000) : undefined;
|
|
101
|
+
await onSubmit(responseArray, durationSeconds);
|
|
102
|
+
setShowCompletion(true);
|
|
103
|
+
// Auto-close after showing completion
|
|
104
|
+
setTimeout(() => {
|
|
105
|
+
setShowCompletion(false);
|
|
106
|
+
onClose();
|
|
107
|
+
}, 2000);
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
console.error('Failed to submit assessment:', error);
|
|
111
|
+
alert('Failed to submit assessment. Please try again.');
|
|
112
|
+
}
|
|
113
|
+
finally {
|
|
114
|
+
setIsSubmitting(false);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
// Reset state when modal closes
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
if (!isOpen) {
|
|
120
|
+
setCurrentIndex(0);
|
|
121
|
+
setShowCompletion(false);
|
|
122
|
+
setSelectedVersion(null);
|
|
123
|
+
setStartTime(null); // Reset start time for next use
|
|
124
|
+
}
|
|
125
|
+
}, [isOpen]);
|
|
126
|
+
const handleVersionSelect = (version) => {
|
|
127
|
+
setSelectedVersion(version);
|
|
128
|
+
};
|
|
129
|
+
if (!isOpen)
|
|
130
|
+
return null;
|
|
131
|
+
// Completion screen
|
|
132
|
+
if (showCompletion) {
|
|
133
|
+
return (_jsxs("div", { className: "modal modal-open", children: [_jsx("div", { className: "modal-box max-w-md text-center", children: _jsxs("div", { className: "flex flex-col items-center gap-4 py-8", children: [_jsx("div", { className: "w-16 h-16 rounded-full bg-success/20 flex items-center justify-center", children: _jsx(CheckIcon, { className: "w-10 h-10 text-success" }) }), _jsx("h3", { className: "text-2xl font-bold", children: "Thank You!" }), _jsx("p", { className: "text-base-content/70", children: completionMessage })] }) }), _jsx("div", { className: "modal-backdrop bg-black/50 backdrop-blur-sm" })] }));
|
|
134
|
+
}
|
|
135
|
+
// Version selection screen (only if version selector should be shown)
|
|
136
|
+
if (shouldShowVersionSelector && !selectedVersion) {
|
|
137
|
+
return (_jsxs("div", { className: "modal modal-open", children: [_jsxs("div", { className: "modal-box max-w-3xl", children: [_jsxs("div", { className: "flex items-center justify-between mb-4 md:mb-6", children: [_jsx("h2", { className: "text-lg md:text-xl font-bold", children: title }), _jsx("button", { type: "button", onClick: onClose, className: "btn btn-sm btn-circle btn-ghost", children: _jsx(XMarkIcon, { className: "w-5 h-5" }) })] }), _jsx(VersionSelector, { onSelect: handleVersionSelect })] }), _jsx("div", { className: "modal-backdrop bg-black/70 backdrop-blur-sm", onClick: onClose })] }));
|
|
138
|
+
}
|
|
139
|
+
return (_jsxs("div", { className: "modal modal-open", children: [_jsxs("div", { className: "modal-box max-w-4xl max-h-[90vh] overflow-y-auto", children: [_jsxs("div", { className: "flex items-center justify-between mb-4 md:mb-6", children: [_jsx("h2", { className: "text-lg md:text-xl font-bold", children: title }), _jsx("button", { type: "button", onClick: onClose, className: "btn btn-sm btn-circle btn-ghost", children: _jsx(XMarkIcon, { className: "w-5 h-5" }) })] }), _jsx(ProgressBar, { current: currentIndex + 1, total: filteredQuestions.length, className: "mb-6 md:mb-8" }), currentQuestion && (_jsx(QuestionCard, { question: currentQuestion, value: responses[currentQuestion.id], onChange: handleAnswer, onNext: !isLastQuestion ? handleNext : undefined, autoFocus: true })), _jsxs("div", { className: "flex flex-col-reverse md:flex-row items-stretch md:items-center justify-between gap-3 mt-6 md:mt-8 pt-4 md:pt-6 border-t border-base-300", children: [_jsxs("button", { type: "button", onClick: handlePrevious, disabled: currentIndex === 0, className: "btn btn-ghost gap-2", children: [_jsx(ChevronLeftIcon, { className: "w-5 h-5" }), "Previous"] }), _jsxs("div", { className: "hidden md:block text-center text-xs text-base-content/50 space-y-1", children: [_jsxs("div", { children: [_jsx("kbd", { className: "kbd kbd-xs", children: "\u2190" }), " Previous \u2022 ", _jsx("kbd", { className: "kbd kbd-xs", children: "\u2192" }), ' ', "Next", currentQuestion?.type !== 'text' && (_jsxs("span", { children: [' ', "\u2022 ", _jsx("kbd", { className: "kbd kbd-xs", children: "Esc" }), " to close"] }))] }), (currentQuestion?.type === 'likert-5' || currentQuestion?.type === 'likert-7') && (_jsx("div", { className: "text-base-content/40", children: "Use number keys to select \u2022 Auto-advances" })), currentQuestion?.type === 'choice' && (_jsx("div", { className: "text-base-content/40", children: "Use number or letter keys \u2022 Auto-advances" }))] }), isLastQuestion ? (_jsx("button", { type: "button", onClick: previewMode ? onClose : handleSubmit, disabled: !previewMode && (!canGoNext || isSubmitting), className: "btn btn-primary gap-2", children: previewMode ? (_jsxs(_Fragment, { children: ["Close", _jsx(XMarkIcon, { className: "w-5 h-5" })] })) : isSubmitting ? (_jsxs(_Fragment, { children: [_jsx("span", { className: "loading loading-spinner loading-sm" }), "Submitting..."] })) : (_jsxs(_Fragment, { children: ["Submit", _jsx(CheckIcon, { className: "w-5 h-5" })] })) })) : (_jsxs("button", { type: "button", onClick: handleNext, disabled: !canGoNext, className: "btn btn-primary gap-2", children: ["Next", _jsx(ChevronRightIcon, { className: "w-5 h-5" })] }))] })] }), _jsx("div", { className: "modal-backdrop bg-black/70 backdrop-blur-sm", onClick: onClose })] }));
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=AssessmentModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssessmentModal.js","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/AssessmentModal.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface ChoiceResponseProps {
|
|
2
|
+
choices: string[];
|
|
3
|
+
value?: string;
|
|
4
|
+
onChange: (value: string) => void;
|
|
5
|
+
disabled?: boolean;
|
|
6
|
+
}
|
|
7
|
+
export declare function ChoiceResponse({ choices, value, onChange, disabled, }: ChoiceResponseProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=ChoiceResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChoiceResponse.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/ChoiceResponse.tsx"],"names":[],"mappings":"AAAA,UAAU,mBAAmB;IAC3B,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAgB,GACjB,EAAE,mBAAmB,2CAsDrB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
export function ChoiceResponse({ choices, value, onChange, disabled = false, }) {
|
|
3
|
+
const getKeyboardHint = (index) => {
|
|
4
|
+
if (index < 9) {
|
|
5
|
+
// Support up to 9 options (1-9)
|
|
6
|
+
const letter = String.fromCharCode(65 + index); // A, B, C, D, E, F, G, H, I...
|
|
7
|
+
return `${index + 1} / ${letter}`;
|
|
8
|
+
}
|
|
9
|
+
return null;
|
|
10
|
+
};
|
|
11
|
+
return (_jsx("div", { className: "space-y-2", children: choices.map((choice, index) => {
|
|
12
|
+
const isSelected = value === choice;
|
|
13
|
+
const keyHint = getKeyboardHint(index);
|
|
14
|
+
return (_jsx("button", { type: "button", onClick: () => !disabled && onChange(choice), disabled: disabled, className: `
|
|
15
|
+
w-full text-left px-4 py-3 rounded-lg
|
|
16
|
+
transition-all duration-200
|
|
17
|
+
${isSelected
|
|
18
|
+
? 'bg-primary text-primary-content shadow-md'
|
|
19
|
+
: 'bg-base-200 hover:bg-base-300'}
|
|
20
|
+
${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}
|
|
21
|
+
`, children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: `
|
|
22
|
+
w-5 h-5 rounded-full border-2 flex items-center justify-center
|
|
23
|
+
${isSelected ? 'border-primary-content' : 'border-base-content/30'}
|
|
24
|
+
`, children: isSelected && _jsx("div", { className: "w-3 h-3 rounded-full bg-primary-content" }) }), _jsx("span", { className: "flex-1", children: choice }), keyHint && (_jsx("kbd", { className: `kbd kbd-sm ${isSelected ? 'opacity-70' : 'opacity-50'}`, children: keyHint }))] }) }, choice));
|
|
25
|
+
}) }));
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ChoiceResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChoiceResponse.js","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/ChoiceResponse.tsx"],"names":[],"mappings":";AAOA,MAAM,UAAU,cAAc,CAAC,EAC7B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,GAAG,KAAK,GACI;IACpB,MAAM,eAAe,GAAG,CAAC,KAAa,EAAE,EAAE;QACxC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,gCAAgC;YAChC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,GAAG,KAAK,CAAC,CAAA,CAAC,+BAA+B;YAC9E,OAAO,GAAG,KAAK,GAAG,CAAC,MAAM,MAAM,EAAE,CAAA;QACnC,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,OAAO,CACL,cAAK,SAAS,EAAC,WAAW,YACvB,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YAC7B,MAAM,UAAU,GAAG,KAAK,KAAK,MAAM,CAAA;YACnC,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAAC,CAAA;YAEtC,OAAO,CACL,iBAEE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,CAAC,EAC5C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE;;;gBAIP,UAAU;oBACR,CAAC,CAAC,2CAA2C;oBAC7C,CAAC,CAAC,+BACN;gBACE,QAAQ,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,gBAAgB;aAChE,YAED,eAAK,SAAS,EAAC,yBAAyB,aACtC,cACE,SAAS,EAAE;;kBAET,UAAU,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB;eACnE,YAEE,UAAU,IAAI,cAAK,SAAS,EAAC,yCAAyC,GAAG,GACtE,EACN,eAAM,SAAS,EAAC,QAAQ,YAAE,MAAM,GAAQ,EACvC,OAAO,IAAI,CACV,cAAK,SAAS,EAAE,cAAc,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,YACrE,OAAO,GACJ,CACP,IACG,IA9BD,MAAM,CA+BJ,CACV,CAAA;QACH,CAAC,CAAC,GACE,CACP,CAAA;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LikertScale.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/LikertScale.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,MAAM,EACN,QAAgB,EAChB,UAAc,EACd,aAAqB,GACtB,EAAE,gBAAgB,2CAsLlB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useState } from 'react';
|
|
3
|
+
export function LikertScale({ scale, value, onChange, labels, disabled = false, startValue = 1, reverseScored = false, }) {
|
|
4
|
+
const [hoverValue, setHoverValue] = useState(null);
|
|
5
|
+
const numbers = Array.from({ length: scale }, (_, i) => i + startValue);
|
|
6
|
+
// Reset hover state when the selected value changes (indicates new question or reset)
|
|
7
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: value prop change is intentional trigger
|
|
8
|
+
useEffect(() => {
|
|
9
|
+
setHoverValue(null);
|
|
10
|
+
}, [value]);
|
|
11
|
+
// Determine label colors based on scoring direction
|
|
12
|
+
// reverseScored = true means low scores are positive (e.g., "Never" checking = good)
|
|
13
|
+
const leftLabelColor = reverseScored ? 'text-success' : 'text-error';
|
|
14
|
+
const rightLabelColor = reverseScored ? 'text-error' : 'text-success';
|
|
15
|
+
// For NPS (scale === 11), split into two rows on mobile: 0-5 and 6-10
|
|
16
|
+
const isNPS = scale === 11 && startValue === 0;
|
|
17
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "space-y-3", children: [_jsx("div", { className: "hidden md:flex justify-center gap-2", children: numbers.map(num => {
|
|
18
|
+
const isSelected = value === num;
|
|
19
|
+
const isHovered = hoverValue === num;
|
|
20
|
+
return (_jsx("button", { type: "button", onClick: () => !disabled && onChange(num), onMouseEnter: () => setHoverValue(num), onMouseLeave: () => setHoverValue(null), disabled: disabled, className: `
|
|
21
|
+
w-12 h-12 rounded-full font-semibold text-lg
|
|
22
|
+
transition-all duration-200 relative
|
|
23
|
+
${isSelected
|
|
24
|
+
? 'bg-primary text-primary-content scale-110 shadow-lg'
|
|
25
|
+
: isHovered
|
|
26
|
+
? 'bg-primary/20 scale-105'
|
|
27
|
+
: 'bg-base-200 hover:bg-base-300'}
|
|
28
|
+
${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}
|
|
29
|
+
`, children: num }, num));
|
|
30
|
+
}) }), isNPS ? (_jsxs(_Fragment, { children: [_jsx("div", { className: "flex md:hidden justify-center gap-2", children: numbers.slice(0, 6).map(num => {
|
|
31
|
+
const isSelected = value === num;
|
|
32
|
+
const isHovered = hoverValue === num;
|
|
33
|
+
return (_jsx("button", { type: "button", onClick: () => !disabled && onChange(num), onMouseEnter: () => setHoverValue(num), onMouseLeave: () => setHoverValue(null), disabled: disabled, className: `
|
|
34
|
+
w-12 h-12 rounded-full font-semibold text-lg
|
|
35
|
+
transition-all duration-200 relative
|
|
36
|
+
${isSelected
|
|
37
|
+
? 'bg-primary text-primary-content scale-110 shadow-lg'
|
|
38
|
+
: isHovered
|
|
39
|
+
? 'bg-primary/20 scale-105'
|
|
40
|
+
: 'bg-base-200 hover:bg-base-300'}
|
|
41
|
+
${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}
|
|
42
|
+
`, children: num }, num));
|
|
43
|
+
}) }), _jsx("div", { className: "flex md:hidden justify-center gap-2", children: numbers.slice(6).map(num => {
|
|
44
|
+
const isSelected = value === num;
|
|
45
|
+
const isHovered = hoverValue === num;
|
|
46
|
+
return (_jsx("button", { type: "button", onClick: () => !disabled && onChange(num), onMouseEnter: () => setHoverValue(num), onMouseLeave: () => setHoverValue(null), disabled: disabled, className: `
|
|
47
|
+
w-12 h-12 rounded-full font-semibold text-lg
|
|
48
|
+
transition-all duration-200 relative
|
|
49
|
+
${isSelected
|
|
50
|
+
? 'bg-primary text-primary-content scale-110 shadow-lg'
|
|
51
|
+
: isHovered
|
|
52
|
+
? 'bg-primary/20 scale-105'
|
|
53
|
+
: 'bg-base-200 hover:bg-base-300'}
|
|
54
|
+
${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}
|
|
55
|
+
`, children: num }, num));
|
|
56
|
+
}) })] })) : (
|
|
57
|
+
/* Mobile: single row for non-NPS scales */
|
|
58
|
+
_jsx("div", { className: "flex md:hidden justify-center gap-2", children: numbers.map(num => {
|
|
59
|
+
const isSelected = value === num;
|
|
60
|
+
const isHovered = hoverValue === num;
|
|
61
|
+
return (_jsx("button", { type: "button", onClick: () => !disabled && onChange(num), onMouseEnter: () => setHoverValue(num), onMouseLeave: () => setHoverValue(null), disabled: disabled, className: `
|
|
62
|
+
w-12 h-12 rounded-full font-semibold text-lg
|
|
63
|
+
transition-all duration-200 relative
|
|
64
|
+
${isSelected
|
|
65
|
+
? 'bg-primary text-primary-content scale-110 shadow-lg'
|
|
66
|
+
: isHovered
|
|
67
|
+
? 'bg-primary/20 scale-105'
|
|
68
|
+
: 'bg-base-200 hover:bg-base-300'}
|
|
69
|
+
${disabled ? 'opacity-50 cursor-not-allowed' : 'cursor-pointer'}
|
|
70
|
+
`, children: num }, num));
|
|
71
|
+
}) })), labels && (_jsxs("div", { className: "flex justify-between px-6", children: [_jsx("span", { className: `text-sm font-bold ${leftLabelColor}`, children: labels[0] }), _jsx("span", { className: `text-sm font-bold ${rightLabelColor}`, children: labels[1] })] }))] }), scale <= 7 && (_jsxs("div", { className: "text-center text-xs text-base-content/50", children: ["Press ", _jsx("kbd", { className: "kbd kbd-xs", children: startValue }), " -", ' ', _jsx("kbd", { className: "kbd kbd-xs", children: startValue + scale - 1 }), " to select"] })), value && (_jsxs("div", { className: "text-center text-sm text-primary font-medium", children: ["Selected: ", value] }))] }));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=LikertScale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LikertScale.js","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/LikertScale.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/ProgressBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAc,EAAE,EAAE,gBAAgB,2CAmB/E"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
export function ProgressBar({ current, total, className = '' }) {
|
|
3
|
+
const percentage = Math.round((current / total) * 100);
|
|
4
|
+
return (_jsxs("div", { className: `space-y-2 ${className}`, children: [_jsxs("div", { className: "flex justify-between text-sm text-base-content/70", children: [_jsxs("span", { children: ["Question ", current, " of ", total] }), _jsxs("span", { children: [percentage, "%"] })] }), _jsx("div", { className: "w-full bg-base-300 rounded-full h-2", children: _jsx("div", { className: "bg-primary h-2 rounded-full transition-all duration-300", style: { width: `${percentage}%` } }) })] }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../../../../src/ui/components/assessment/ProgressBar.tsx"],"names":[],"mappings":";AAEA,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,GAAG,EAAE,EAAoB;IAC9E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAA;IAEtD,OAAO,CACL,eAAK,SAAS,EAAE,aAAa,SAAS,EAAE,aACtC,eAAK,SAAS,EAAC,mDAAmD,aAChE,wCACY,OAAO,UAAM,KAAK,IACvB,EACP,2BAAO,UAAU,SAAS,IACtB,EACN,cAAK,SAAS,EAAC,qCAAqC,YAClD,cACE,SAAS,EAAC,yDAAyD,EACnE,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,UAAU,GAAG,EAAE,GAClC,GACE,IACF,CACP,CAAA;AACH,CAAC"}
|