@jacques-ai/cli 0.0.7-alpha.1
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/dist/assets/mascot-ansi.d.ts +8 -0
- package/dist/assets/mascot-ansi.d.ts.map +1 -0
- package/dist/assets/mascot-ansi.js +15 -0
- package/dist/assets/mascot-ansi.js.map +1 -0
- package/dist/cli.d.ts +15 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +53 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/client-helper.d.ts +14 -0
- package/dist/commands/client-helper.d.ts.map +1 -0
- package/dist/commands/client-helper.js +38 -0
- package/dist/commands/client-helper.js.map +1 -0
- package/dist/commands/dashboard.d.ts +8 -0
- package/dist/commands/dashboard.d.ts.map +1 -0
- package/dist/commands/dashboard.js +159 -0
- package/dist/commands/dashboard.js.map +1 -0
- package/dist/commands/index.d.ts +6 -0
- package/dist/commands/index.d.ts.map +1 -0
- package/dist/commands/index.js +6 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/list.d.ts +5 -0
- package/dist/commands/list.d.ts.map +1 -0
- package/dist/commands/list.js +13 -0
- package/dist/commands/list.js.map +1 -0
- package/dist/commands/search.d.ts +13 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +79 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/setup.d.ts +8 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +32 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/commands/status.d.ts +5 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +27 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/components/ActiveSessionsView.d.ts +18 -0
- package/dist/components/ActiveSessionsView.d.ts.map +1 -0
- package/dist/components/ActiveSessionsView.js +68 -0
- package/dist/components/ActiveSessionsView.js.map +1 -0
- package/dist/components/AddContextConfirmView.d.ts +21 -0
- package/dist/components/AddContextConfirmView.d.ts.map +1 -0
- package/dist/components/AddContextConfirmView.js +44 -0
- package/dist/components/AddContextConfirmView.js.map +1 -0
- package/dist/components/App.d.ts +11 -0
- package/dist/components/App.d.ts.map +1 -0
- package/dist/components/App.js +292 -0
- package/dist/components/App.js.map +1 -0
- package/dist/components/ArchiveBrowserView.d.ts +40 -0
- package/dist/components/ArchiveBrowserView.d.ts.map +1 -0
- package/dist/components/ArchiveBrowserView.js +161 -0
- package/dist/components/ArchiveBrowserView.js.map +1 -0
- package/dist/components/ArchiveInitProgressView.d.ts +16 -0
- package/dist/components/ArchiveInitProgressView.d.ts.map +1 -0
- package/dist/components/ArchiveInitProgressView.js +72 -0
- package/dist/components/ArchiveInitProgressView.js.map +1 -0
- package/dist/components/AutoCompactToggle.d.ts +16 -0
- package/dist/components/AutoCompactToggle.d.ts.map +1 -0
- package/dist/components/AutoCompactToggle.js +12 -0
- package/dist/components/AutoCompactToggle.js.map +1 -0
- package/dist/components/BottomControls.d.ts +12 -0
- package/dist/components/BottomControls.d.ts.map +1 -0
- package/dist/components/BottomControls.js +11 -0
- package/dist/components/BottomControls.js.map +1 -0
- package/dist/components/CompactHeader.d.ts +21 -0
- package/dist/components/CompactHeader.d.ts.map +1 -0
- package/dist/components/CompactHeader.js +63 -0
- package/dist/components/CompactHeader.js.map +1 -0
- package/dist/components/CompactPanel.d.ts +22 -0
- package/dist/components/CompactPanel.d.ts.map +1 -0
- package/dist/components/CompactPanel.js +31 -0
- package/dist/components/CompactPanel.js.map +1 -0
- package/dist/components/ContentBox.d.ts +14 -0
- package/dist/components/ContentBox.d.ts.map +1 -0
- package/dist/components/ContentBox.js +24 -0
- package/dist/components/ContentBox.js.map +1 -0
- package/dist/components/ContextProgress.d.ts +14 -0
- package/dist/components/ContextProgress.d.ts.map +1 -0
- package/dist/components/ContextProgress.js +36 -0
- package/dist/components/ContextProgress.js.map +1 -0
- package/dist/components/Dashboard.d.ts +46 -0
- package/dist/components/Dashboard.d.ts.map +1 -0
- package/dist/components/Dashboard.js +67 -0
- package/dist/components/Dashboard.js.map +1 -0
- package/dist/components/FilterSelectionView.d.ts +15 -0
- package/dist/components/FilterSelectionView.d.ts.map +1 -0
- package/dist/components/FilterSelectionView.js +27 -0
- package/dist/components/FilterSelectionView.js.map +1 -0
- package/dist/components/GoogleDocsBrowserView.d.ts +20 -0
- package/dist/components/GoogleDocsBrowserView.d.ts.map +1 -0
- package/dist/components/GoogleDocsBrowserView.js +72 -0
- package/dist/components/GoogleDocsBrowserView.js.map +1 -0
- package/dist/components/HandoffBrowserView.d.ts +20 -0
- package/dist/components/HandoffBrowserView.d.ts.map +1 -0
- package/dist/components/HandoffBrowserView.js +66 -0
- package/dist/components/HandoffBrowserView.js.map +1 -0
- package/dist/components/Header.d.ts +14 -0
- package/dist/components/Header.d.ts.map +1 -0
- package/dist/components/Header.js +16 -0
- package/dist/components/Header.js.map +1 -0
- package/dist/components/HorizontalMenu.d.ts +24 -0
- package/dist/components/HorizontalMenu.d.ts.map +1 -0
- package/dist/components/HorizontalMenu.js +20 -0
- package/dist/components/HorizontalMenu.js.map +1 -0
- package/dist/components/ImageMascot.d.ts +8 -0
- package/dist/components/ImageMascot.d.ts.map +1 -0
- package/dist/components/ImageMascot.js +7 -0
- package/dist/components/ImageMascot.js.map +1 -0
- package/dist/components/LLMWorkingView.d.ts +19 -0
- package/dist/components/LLMWorkingView.d.ts.map +1 -0
- package/dist/components/LLMWorkingView.js +72 -0
- package/dist/components/LLMWorkingView.js.map +1 -0
- package/dist/components/LoadContextView.d.ts +22 -0
- package/dist/components/LoadContextView.d.ts.map +1 -0
- package/dist/components/LoadContextView.js +83 -0
- package/dist/components/LoadContextView.js.map +1 -0
- package/dist/components/MainMenuView.d.ts +20 -0
- package/dist/components/MainMenuView.d.ts.map +1 -0
- package/dist/components/MainMenuView.js +49 -0
- package/dist/components/MainMenuView.js.map +1 -0
- package/dist/components/Mascot.d.ts +24 -0
- package/dist/components/Mascot.d.ts.map +1 -0
- package/dist/components/Mascot.js +32 -0
- package/dist/components/Mascot.js.map +1 -0
- package/dist/components/Menu.d.ts +22 -0
- package/dist/components/Menu.d.ts.map +1 -0
- package/dist/components/Menu.js +28 -0
- package/dist/components/Menu.js.map +1 -0
- package/dist/components/NotionBrowserView.d.ts +21 -0
- package/dist/components/NotionBrowserView.d.ts.map +1 -0
- package/dist/components/NotionBrowserView.js +75 -0
- package/dist/components/NotionBrowserView.js.map +1 -0
- package/dist/components/ObsidianBrowserView.d.ts +21 -0
- package/dist/components/ObsidianBrowserView.d.ts.map +1 -0
- package/dist/components/ObsidianBrowserView.js +74 -0
- package/dist/components/ObsidianBrowserView.js.map +1 -0
- package/dist/components/ObsidianConfigView.d.ts +19 -0
- package/dist/components/ObsidianConfigView.d.ts.map +1 -0
- package/dist/components/ObsidianConfigView.js +45 -0
- package/dist/components/ObsidianConfigView.js.map +1 -0
- package/dist/components/PlaceholderView.d.ts +15 -0
- package/dist/components/PlaceholderView.d.ts.map +1 -0
- package/dist/components/PlaceholderView.js +20 -0
- package/dist/components/PlaceholderView.js.map +1 -0
- package/dist/components/PlanViewerView.d.ts +26 -0
- package/dist/components/PlanViewerView.d.ts.map +1 -0
- package/dist/components/PlanViewerView.js +170 -0
- package/dist/components/PlanViewerView.js.map +1 -0
- package/dist/components/ProgressBar.d.ts +24 -0
- package/dist/components/ProgressBar.d.ts.map +1 -0
- package/dist/components/ProgressBar.js +23 -0
- package/dist/components/ProgressBar.js.map +1 -0
- package/dist/components/ProjectDashboardView.d.ts +38 -0
- package/dist/components/ProjectDashboardView.d.ts.map +1 -0
- package/dist/components/ProjectDashboardView.js +129 -0
- package/dist/components/ProjectDashboardView.js.map +1 -0
- package/dist/components/SaveContextView.d.ts +32 -0
- package/dist/components/SaveContextView.d.ts.map +1 -0
- package/dist/components/SaveContextView.js +41 -0
- package/dist/components/SaveContextView.js.map +1 -0
- package/dist/components/SessionDetails.d.ts +14 -0
- package/dist/components/SessionDetails.d.ts.map +1 -0
- package/dist/components/SessionDetails.js +87 -0
- package/dist/components/SessionDetails.js.map +1 -0
- package/dist/components/SessionsExperimentView.d.ts +35 -0
- package/dist/components/SessionsExperimentView.d.ts.map +1 -0
- package/dist/components/SessionsExperimentView.js +347 -0
- package/dist/components/SessionsExperimentView.js.map +1 -0
- package/dist/components/SessionsList.d.ts +20 -0
- package/dist/components/SessionsList.d.ts.map +1 -0
- package/dist/components/SessionsList.js +75 -0
- package/dist/components/SessionsList.js.map +1 -0
- package/dist/components/SettingsView.d.ts +48 -0
- package/dist/components/SettingsView.d.ts.map +1 -0
- package/dist/components/SettingsView.js +156 -0
- package/dist/components/SettingsView.js.map +1 -0
- package/dist/components/SourceSelectionView.d.ts +26 -0
- package/dist/components/SourceSelectionView.d.ts.map +1 -0
- package/dist/components/SourceSelectionView.js +109 -0
- package/dist/components/SourceSelectionView.js.map +1 -0
- package/dist/components/VerticalMenu.d.ts +18 -0
- package/dist/components/VerticalMenu.d.ts.map +1 -0
- package/dist/components/VerticalMenu.js +15 -0
- package/dist/components/VerticalMenu.js.map +1 -0
- package/dist/components/ascii-art/index.d.ts +6 -0
- package/dist/components/ascii-art/index.d.ts.map +1 -0
- package/dist/components/ascii-art/index.js +6 -0
- package/dist/components/ascii-art/index.js.map +1 -0
- package/dist/components/ascii-art/progress.d.ts +53 -0
- package/dist/components/ascii-art/progress.d.ts.map +1 -0
- package/dist/components/ascii-art/progress.js +102 -0
- package/dist/components/ascii-art/progress.js.map +1 -0
- package/dist/components/ascii-art/scene.d.ts +34 -0
- package/dist/components/ascii-art/scene.d.ts.map +1 -0
- package/dist/components/ascii-art/scene.js +72 -0
- package/dist/components/ascii-art/scene.js.map +1 -0
- package/dist/components/index.d.ts +27 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.js +25 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components/layout/HorizontalLayout.d.ts +19 -0
- package/dist/components/layout/HorizontalLayout.d.ts.map +1 -0
- package/dist/components/layout/HorizontalLayout.js +62 -0
- package/dist/components/layout/HorizontalLayout.js.map +1 -0
- package/dist/components/layout/VerticalLayout.d.ts +16 -0
- package/dist/components/layout/VerticalLayout.d.ts.map +1 -0
- package/dist/components/layout/VerticalLayout.js +32 -0
- package/dist/components/layout/VerticalLayout.js.map +1 -0
- package/dist/components/layout/index.d.ts +6 -0
- package/dist/components/layout/index.d.ts.map +1 -0
- package/dist/components/layout/index.js +4 -0
- package/dist/components/layout/index.js.map +1 -0
- package/dist/components/layout/theme.d.ts +20 -0
- package/dist/components/layout/theme.d.ts.map +1 -0
- package/dist/components/layout/theme.js +23 -0
- package/dist/components/layout/theme.js.map +1 -0
- package/dist/components/setup/DoneStep.d.ts +7 -0
- package/dist/components/setup/DoneStep.d.ts.map +1 -0
- package/dist/components/setup/DoneStep.js +31 -0
- package/dist/components/setup/DoneStep.js.map +1 -0
- package/dist/components/setup/InstallingStep.d.ts +11 -0
- package/dist/components/setup/InstallingStep.d.ts.map +1 -0
- package/dist/components/setup/InstallingStep.js +27 -0
- package/dist/components/setup/InstallingStep.js.map +1 -0
- package/dist/components/setup/OptionsStep.d.ts +9 -0
- package/dist/components/setup/OptionsStep.d.ts.map +1 -0
- package/dist/components/setup/OptionsStep.js +39 -0
- package/dist/components/setup/OptionsStep.js.map +1 -0
- package/dist/components/setup/PrerequisitesStep.d.ts +7 -0
- package/dist/components/setup/PrerequisitesStep.d.ts.map +1 -0
- package/dist/components/setup/PrerequisitesStep.js +31 -0
- package/dist/components/setup/PrerequisitesStep.js.map +1 -0
- package/dist/components/setup/SetupFrame.d.ts +17 -0
- package/dist/components/setup/SetupFrame.d.ts.map +1 -0
- package/dist/components/setup/SetupFrame.js +33 -0
- package/dist/components/setup/SetupFrame.js.map +1 -0
- package/dist/components/setup/SetupWizard.d.ts +9 -0
- package/dist/components/setup/SetupWizard.d.ts.map +1 -0
- package/dist/components/setup/SetupWizard.js +149 -0
- package/dist/components/setup/SetupWizard.js.map +1 -0
- package/dist/components/setup/Spinner.d.ts +10 -0
- package/dist/components/setup/Spinner.d.ts.map +1 -0
- package/dist/components/setup/Spinner.js +20 -0
- package/dist/components/setup/Spinner.js.map +1 -0
- package/dist/components/setup/SyncStep.d.ts +11 -0
- package/dist/components/setup/SyncStep.d.ts.map +1 -0
- package/dist/components/setup/SyncStep.js +47 -0
- package/dist/components/setup/SyncStep.js.map +1 -0
- package/dist/components/setup/VerificationStep.d.ts +7 -0
- package/dist/components/setup/VerificationStep.d.ts.map +1 -0
- package/dist/components/setup/VerificationStep.js +27 -0
- package/dist/components/setup/VerificationStep.js.map +1 -0
- package/dist/components/setup/WelcomeStep.d.ts +6 -0
- package/dist/components/setup/WelcomeStep.d.ts.map +1 -0
- package/dist/components/setup/WelcomeStep.js +17 -0
- package/dist/components/setup/WelcomeStep.js.map +1 -0
- package/dist/components/shared/ProgressLine.d.ts +10 -0
- package/dist/components/shared/ProgressLine.d.ts.map +1 -0
- package/dist/components/shared/ProgressLine.js +18 -0
- package/dist/components/shared/ProgressLine.js.map +1 -0
- package/dist/components/shared/ProjectLine.d.ts +10 -0
- package/dist/components/shared/ProjectLine.d.ts.map +1 -0
- package/dist/components/shared/ProjectLine.js +19 -0
- package/dist/components/shared/ProjectLine.js.map +1 -0
- package/dist/components/shared/ScanningIndicator.d.ts +9 -0
- package/dist/components/shared/ScanningIndicator.d.ts.map +1 -0
- package/dist/components/shared/ScanningIndicator.js +22 -0
- package/dist/components/shared/ScanningIndicator.js.map +1 -0
- package/dist/components/shared/StatusLine.d.ts +13 -0
- package/dist/components/shared/StatusLine.d.ts.map +1 -0
- package/dist/components/shared/StatusLine.js +24 -0
- package/dist/components/shared/StatusLine.js.map +1 -0
- package/dist/components/shared/StatusLine.test.d.ts +8 -0
- package/dist/components/shared/StatusLine.test.d.ts.map +1 -0
- package/dist/components/shared/StatusLine.test.js +50 -0
- package/dist/components/shared/StatusLine.test.js.map +1 -0
- package/dist/components/shared/index.d.ts +4 -0
- package/dist/components/shared/index.d.ts.map +1 -0
- package/dist/components/shared/index.js +4 -0
- package/dist/components/shared/index.js.map +1 -0
- package/dist/handoff/catalog.test.d.ts +5 -0
- package/dist/handoff/catalog.test.d.ts.map +1 -0
- package/dist/handoff/catalog.test.js +172 -0
- package/dist/handoff/catalog.test.js.map +1 -0
- package/dist/handoff/subagents.test.d.ts +8 -0
- package/dist/handoff/subagents.test.d.ts.map +1 -0
- package/dist/handoff/subagents.test.js +139 -0
- package/dist/handoff/subagents.test.js.map +1 -0
- package/dist/hooks/useAddContextFlow.d.ts +29 -0
- package/dist/hooks/useAddContextFlow.d.ts.map +1 -0
- package/dist/hooks/useAddContextFlow.js +83 -0
- package/dist/hooks/useAddContextFlow.js.map +1 -0
- package/dist/hooks/useArchiveBrowser.d.ts +37 -0
- package/dist/hooks/useArchiveBrowser.d.ts.map +1 -0
- package/dist/hooks/useArchiveBrowser.js +175 -0
- package/dist/hooks/useArchiveBrowser.js.map +1 -0
- package/dist/hooks/useClaudeToken.d.ts +29 -0
- package/dist/hooks/useClaudeToken.d.ts.map +1 -0
- package/dist/hooks/useClaudeToken.js +166 -0
- package/dist/hooks/useClaudeToken.js.map +1 -0
- package/dist/hooks/useGoogleDocsBrowser.d.ts +29 -0
- package/dist/hooks/useGoogleDocsBrowser.d.ts.map +1 -0
- package/dist/hooks/useGoogleDocsBrowser.js +146 -0
- package/dist/hooks/useGoogleDocsBrowser.js.map +1 -0
- package/dist/hooks/useHandoffBrowser.d.ts +27 -0
- package/dist/hooks/useHandoffBrowser.d.ts.map +1 -0
- package/dist/hooks/useHandoffBrowser.js +92 -0
- package/dist/hooks/useHandoffBrowser.js.map +1 -0
- package/dist/hooks/useJacquesClient.d.ts +69 -0
- package/dist/hooks/useJacquesClient.d.ts.map +1 -0
- package/dist/hooks/useJacquesClient.js +248 -0
- package/dist/hooks/useJacquesClient.js.map +1 -0
- package/dist/hooks/useLlmWorking.d.ts +30 -0
- package/dist/hooks/useLlmWorking.d.ts.map +1 -0
- package/dist/hooks/useLlmWorking.js +127 -0
- package/dist/hooks/useLlmWorking.js.map +1 -0
- package/dist/hooks/useLoadContext.d.ts +27 -0
- package/dist/hooks/useLoadContext.d.ts.map +1 -0
- package/dist/hooks/useLoadContext.js +102 -0
- package/dist/hooks/useLoadContext.js.map +1 -0
- package/dist/hooks/useNotification.d.ts +36 -0
- package/dist/hooks/useNotification.d.ts.map +1 -0
- package/dist/hooks/useNotification.js +89 -0
- package/dist/hooks/useNotification.js.map +1 -0
- package/dist/hooks/useNotification.test.d.ts +9 -0
- package/dist/hooks/useNotification.test.d.ts.map +1 -0
- package/dist/hooks/useNotification.test.js +144 -0
- package/dist/hooks/useNotification.test.js.map +1 -0
- package/dist/hooks/useNotionBrowser.d.ts +30 -0
- package/dist/hooks/useNotionBrowser.d.ts.map +1 -0
- package/dist/hooks/useNotionBrowser.js +154 -0
- package/dist/hooks/useNotionBrowser.js.map +1 -0
- package/dist/hooks/useObsidianBrowser.d.ts +42 -0
- package/dist/hooks/useObsidianBrowser.d.ts.map +1 -0
- package/dist/hooks/useObsidianBrowser.js +63 -0
- package/dist/hooks/useObsidianBrowser.js.map +1 -0
- package/dist/hooks/useObsidianConfig.d.ts +28 -0
- package/dist/hooks/useObsidianConfig.d.ts.map +1 -0
- package/dist/hooks/useObsidianConfig.js +119 -0
- package/dist/hooks/useObsidianConfig.js.map +1 -0
- package/dist/hooks/useObsidianFileBrowser.d.ts +29 -0
- package/dist/hooks/useObsidianFileBrowser.d.ts.map +1 -0
- package/dist/hooks/useObsidianFileBrowser.js +114 -0
- package/dist/hooks/useObsidianFileBrowser.js.map +1 -0
- package/dist/hooks/useProjectDashboard.d.ts +38 -0
- package/dist/hooks/useProjectDashboard.d.ts.map +1 -0
- package/dist/hooks/useProjectDashboard.js +224 -0
- package/dist/hooks/useProjectDashboard.js.map +1 -0
- package/dist/hooks/useProjectSelector.d.ts +17 -0
- package/dist/hooks/useProjectSelector.d.ts.map +1 -0
- package/dist/hooks/useProjectSelector.js +43 -0
- package/dist/hooks/useProjectSelector.js.map +1 -0
- package/dist/hooks/useProjectSelector.test.d.ts +7 -0
- package/dist/hooks/useProjectSelector.test.d.ts.map +1 -0
- package/dist/hooks/useProjectSelector.test.js +117 -0
- package/dist/hooks/useProjectSelector.test.js.map +1 -0
- package/dist/hooks/useSaveFlow.d.ts +30 -0
- package/dist/hooks/useSaveFlow.d.ts.map +1 -0
- package/dist/hooks/useSaveFlow.js +195 -0
- package/dist/hooks/useSaveFlow.js.map +1 -0
- package/dist/hooks/useSessions.test.d.ts +7 -0
- package/dist/hooks/useSessions.test.d.ts.map +1 -0
- package/dist/hooks/useSessions.test.js +153 -0
- package/dist/hooks/useSessions.test.js.map +1 -0
- package/dist/hooks/useSessionsExperiment.d.ts +97 -0
- package/dist/hooks/useSessionsExperiment.d.ts.map +1 -0
- package/dist/hooks/useSessionsExperiment.js +321 -0
- package/dist/hooks/useSessionsExperiment.js.map +1 -0
- package/dist/hooks/useSettings.d.ts +47 -0
- package/dist/hooks/useSettings.d.ts.map +1 -0
- package/dist/hooks/useSettings.js +245 -0
- package/dist/hooks/useSettings.js.map +1 -0
- package/dist/hooks/useSetupWizard.d.ts +35 -0
- package/dist/hooks/useSetupWizard.d.ts.map +1 -0
- package/dist/hooks/useSetupWizard.js +438 -0
- package/dist/hooks/useSetupWizard.js.map +1 -0
- package/dist/hooks/useUsageLimits.d.ts +24 -0
- package/dist/hooks/useUsageLimits.d.ts.map +1 -0
- package/dist/hooks/useUsageLimits.js +58 -0
- package/dist/hooks/useUsageLimits.js.map +1 -0
- package/dist/hooks/useUsageLimits.test.d.ts +7 -0
- package/dist/hooks/useUsageLimits.test.d.ts.map +1 -0
- package/dist/hooks/useUsageLimits.test.js +136 -0
- package/dist/hooks/useUsageLimits.test.js.map +1 -0
- package/dist/hooks/useWorktrees.d.ts +28 -0
- package/dist/hooks/useWorktrees.d.ts.map +1 -0
- package/dist/hooks/useWorktrees.js +57 -0
- package/dist/hooks/useWorktrees.js.map +1 -0
- package/dist/hooks/useWorktrees.test.d.ts +7 -0
- package/dist/hooks/useWorktrees.test.d.ts.map +1 -0
- package/dist/hooks/useWorktrees.test.js +119 -0
- package/dist/hooks/useWorktrees.test.js.map +1 -0
- package/dist/templates/compact-prompt.d.ts +16 -0
- package/dist/templates/compact-prompt.d.ts.map +1 -0
- package/dist/templates/compact-prompt.js +47 -0
- package/dist/templates/compact-prompt.js.map +1 -0
- package/dist/templates/context-skill.d.ts +8 -0
- package/dist/templates/context-skill.d.ts.map +1 -0
- package/dist/templates/context-skill.js +42 -0
- package/dist/templates/context-skill.js.map +1 -0
- package/dist/types.d.ts +127 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/activity.d.ts +17 -0
- package/dist/utils/activity.d.ts.map +1 -0
- package/dist/utils/activity.js +78 -0
- package/dist/utils/activity.js.map +1 -0
- package/dist/utils/bottom-controls.d.ts +24 -0
- package/dist/utils/bottom-controls.d.ts.map +1 -0
- package/dist/utils/bottom-controls.js +29 -0
- package/dist/utils/bottom-controls.js.map +1 -0
- package/dist/utils/clipboard.d.ts +2 -0
- package/dist/utils/clipboard.d.ts.map +1 -0
- package/dist/utils/clipboard.js +20 -0
- package/dist/utils/clipboard.js.map +1 -0
- package/dist/utils/constants.d.ts +6 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +6 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/format.d.ts +17 -0
- package/dist/utils/format.d.ts.map +1 -0
- package/dist/utils/format.js +31 -0
- package/dist/utils/format.js.map +1 -0
- package/dist/utils/session-mode.d.ts +14 -0
- package/dist/utils/session-mode.d.ts.map +1 -0
- package/dist/utils/session-mode.js +29 -0
- package/dist/utils/session-mode.js.map +1 -0
- package/dist/utils/session-mode.test.d.ts +7 -0
- package/dist/utils/session-mode.test.d.ts.map +1 -0
- package/dist/utils/session-mode.test.js +102 -0
- package/dist/utils/session-mode.test.js.map +1 -0
- package/dist/utils/sessions-items-builder.d.ts +29 -0
- package/dist/utils/sessions-items-builder.d.ts.map +1 -0
- package/dist/utils/sessions-items-builder.js +394 -0
- package/dist/utils/sessions-items-builder.js.map +1 -0
- package/dist/utils/settings.d.ts +100 -0
- package/dist/utils/settings.d.ts.map +1 -0
- package/dist/utils/settings.js +206 -0
- package/dist/utils/settings.js.map +1 -0
- package/dist/websocket-client.d.ts +70 -0
- package/dist/websocket-client.d.ts.map +1 -0
- package/dist/websocket-client.js +188 -0
- package/dist/websocket-client.js.map +1 -0
- package/hooks/adapters/__init__.py +17 -0
- package/hooks/adapters/__pycache__/__init__.cpython-311.pyc +0 -0
- package/hooks/adapters/__pycache__/__init__.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
- package/hooks/adapters/__pycache__/base.cpython-311.pyc +0 -0
- package/hooks/adapters/__pycache__/base.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/base.cpython-314.pyc +0 -0
- package/hooks/adapters/__pycache__/calibration.cpython-311.pyc +0 -0
- package/hooks/adapters/__pycache__/calibration.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/calibration.cpython-314.pyc +0 -0
- package/hooks/adapters/__pycache__/claude_code.cpython-311.pyc +0 -0
- package/hooks/adapters/__pycache__/claude_code.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/claude_code.cpython-314.pyc +0 -0
- package/hooks/adapters/__pycache__/cursor.cpython-311.pyc +0 -0
- package/hooks/adapters/__pycache__/cursor.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/cursor.cpython-314.pyc +0 -0
- package/hooks/adapters/__pycache__/skills.cpython-311.pyc +0 -0
- package/hooks/adapters/__pycache__/skills.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/skills.cpython-314.pyc +0 -0
- package/hooks/adapters/__pycache__/test_adapters.cpython-311-pytest-9.0.2.pyc +0 -0
- package/hooks/adapters/__pycache__/test_adapters.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/test_calibration.cpython-311-pytest-9.0.2.pyc +0 -0
- package/hooks/adapters/__pycache__/test_skills.cpython-311-pytest-9.0.2.pyc +0 -0
- package/hooks/adapters/__pycache__/test_tokenizer.cpython-311-pytest-9.0.2.pyc +0 -0
- package/hooks/adapters/__pycache__/tokenizer.cpython-311.pyc +0 -0
- package/hooks/adapters/__pycache__/tokenizer.cpython-313.pyc +0 -0
- package/hooks/adapters/__pycache__/tokenizer.cpython-314.pyc +0 -0
- package/hooks/adapters/base.py +459 -0
- package/hooks/adapters/calibration.py +236 -0
- package/hooks/adapters/claude_code.py +316 -0
- package/hooks/adapters/context_parser.py +288 -0
- package/hooks/adapters/cursor.py +258 -0
- package/hooks/adapters/skills.py +160 -0
- package/hooks/adapters/template.py +281 -0
- package/hooks/adapters/test_adapters.py +516 -0
- package/hooks/adapters/test_calibration.py +235 -0
- package/hooks/adapters/test_skills.py +162 -0
- package/hooks/adapters/test_tokenizer.py +158 -0
- package/hooks/adapters/tokenizer.py +192 -0
- package/hooks/claude-code/pre-tool-use.py +36 -0
- package/hooks/claude-code/register-session.py +35 -0
- package/hooks/claude-code/report-activity.py +32 -0
- package/hooks/claude-code/session-idle.py +32 -0
- package/hooks/claude-code/statusline.sh +91 -0
- package/hooks/claude-code/unregister-session.py +32 -0
- package/hooks/cursor/README.md +61 -0
- package/hooks/cursor/after-agent-response.py +97 -0
- package/hooks/cursor/hooks.json.template +30 -0
- package/hooks/cursor/post-tool-use.py +32 -0
- package/hooks/cursor/pre-compact.py +61 -0
- package/hooks/cursor/session-end.py +32 -0
- package/hooks/cursor/session-start.py +66 -0
- package/hooks/git-detect.sh +47 -0
- package/hooks/install.py +441 -0
- package/hooks/jacques-register-session.py +286 -0
- package/hooks/jacques-report-activity.py +145 -0
- package/hooks/jacques-session-idle.py +57 -0
- package/hooks/jacques-unregister-session.py +57 -0
- package/hooks/requirements.txt +9 -0
- package/hooks/statusline.py +457 -0
- package/hooks/statusline.sh +212 -0
- package/package.json +63 -0
- package/skills/jacques-continue/SKILL.md +87 -0
- package/skills/jacques-handoff/SKILL.md +147 -0
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* SessionsExperimentView Component
|
|
4
|
+
*
|
|
5
|
+
* Active sessions grouped by worktree. Responsive layout:
|
|
6
|
+
* - Wide (≥62): bordered box with mascot column + shortcuts
|
|
7
|
+
* - Narrow (<62): flat vertical with mascot at top, no border
|
|
8
|
+
*
|
|
9
|
+
* Both layouts render at natural/minimum height and scroll
|
|
10
|
+
* when the terminal is shorter than the content.
|
|
11
|
+
*/
|
|
12
|
+
import React, { useRef } from "react";
|
|
13
|
+
import { Box, Text } from "ink";
|
|
14
|
+
import { MASCOT_ANSI } from "../assets/mascot-ansi.js";
|
|
15
|
+
import { BORDER_COLOR, ACCENT_COLOR, MUTED_TEXT, SUCCESS_COLOR, WARNING_COLOR, ERROR_COLOR, INVERTED_TEXT, MASCOT_WIDTH, CONTENT_PADDING, FIXED_CONTENT_HEIGHT, HORIZONTAL_LAYOUT_MIN_WIDTH, } from "./layout/theme.js";
|
|
16
|
+
import { formatSessionTitle, APP_ENDEARMENT } from "@jacques-ai/core";
|
|
17
|
+
import { getCliActivity } from "../utils/activity.js";
|
|
18
|
+
import { getSessionModeDisplay } from "../utils/session-mode.js";
|
|
19
|
+
import { buildBottomControls } from "../utils/bottom-controls.js";
|
|
20
|
+
import { ScanningIndicator } from "./shared/ScanningIndicator.js";
|
|
21
|
+
/**
|
|
22
|
+
* Compute a follow-cursor scroll offset.
|
|
23
|
+
* Adjusts the offset only when the selected line is outside the visible window.
|
|
24
|
+
*/
|
|
25
|
+
function computeScroll(prevOffset, selectedLine, visibleRows, totalRows) {
|
|
26
|
+
let offset = prevOffset;
|
|
27
|
+
if (selectedLine < offset)
|
|
28
|
+
offset = selectedLine;
|
|
29
|
+
if (selectedLine >= offset + visibleRows)
|
|
30
|
+
offset = selectedLine - visibleRows + 1;
|
|
31
|
+
return Math.max(0, Math.min(offset, totalRows - visibleRows));
|
|
32
|
+
}
|
|
33
|
+
export function SessionsExperimentView({ items, selectableIndices, selectedIndex, selectedIds, showHelp, scrollBias, notification, terminalWidth, terminalHeight, isCreatingWorktree, newWorktreeName, worktreeCreateError, repoRoot, creatingForRepoRoot, projectName, removeDeleteBranch, removeForce, scanning, }) {
|
|
34
|
+
const isWide = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
35
|
+
const currentItemIndex = selectableIndices[selectedIndex] ?? -1;
|
|
36
|
+
const scrollRef = useRef(0);
|
|
37
|
+
// --- Layout dimensions ---
|
|
38
|
+
const mascotPadding = 3;
|
|
39
|
+
const mascotDisplayWidth = MASCOT_WIDTH + mascotPadding;
|
|
40
|
+
const wideContentWidth = Math.max(30, terminalWidth - mascotDisplayWidth - 3);
|
|
41
|
+
const availableWidth = isWide
|
|
42
|
+
? wideContentWidth - CONTENT_PADDING * 2
|
|
43
|
+
: terminalWidth;
|
|
44
|
+
// Responsive column visibility
|
|
45
|
+
const showBar = availableWidth >= 45;
|
|
46
|
+
const showActivityLabel = availableWidth >= 30;
|
|
47
|
+
// Mascot
|
|
48
|
+
const mascotLines = MASCOT_ANSI.split("\n").filter((l) => l.trim().length > 0);
|
|
49
|
+
// Shortcut legend (wide layout only)
|
|
50
|
+
const shortcutRows = [
|
|
51
|
+
{ key: "\u2191\u2193", label: "nav" },
|
|
52
|
+
{ key: "\u23CE", label: "foc" },
|
|
53
|
+
{ key: "\u2423", label: "sel" },
|
|
54
|
+
{ key: "f", label: "full" },
|
|
55
|
+
{ key: "t", label: "tile" },
|
|
56
|
+
];
|
|
57
|
+
// --- Header ---
|
|
58
|
+
const headerLabel = "Sessions";
|
|
59
|
+
// --- Build session content lines with position tracking ---
|
|
60
|
+
const contentLines = [];
|
|
61
|
+
const itemToContentLine = new Map();
|
|
62
|
+
if (items.length === 0) {
|
|
63
|
+
contentLines.push(scanning
|
|
64
|
+
? _jsx(ScanningIndicator, {}, "scanning")
|
|
65
|
+
: _jsx(Text, { color: MUTED_TEXT, children: "No active sessions" }, "empty"));
|
|
66
|
+
}
|
|
67
|
+
items.forEach((item, idx) => {
|
|
68
|
+
itemToContentLine.set(idx, contentLines.length);
|
|
69
|
+
switch (item.kind) {
|
|
70
|
+
case "project-header": {
|
|
71
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: "~/" }), _jsx(Text, { bold: true, color: ACCENT_COLOR, children: item.projectName }), _jsx(Text, { color: MUTED_TEXT, children: "/" })] }, `ph-${idx}`));
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
case "worktree-header": {
|
|
75
|
+
const dot = item.isMain ? "\u25CF " : "";
|
|
76
|
+
const branchName = item.branch || item.name;
|
|
77
|
+
const { ahead, behind, dirty, merged } = item;
|
|
78
|
+
// Build muted branch status suffix
|
|
79
|
+
const statusParts = [];
|
|
80
|
+
if (!item.isMain && ahead != null && ahead > 0)
|
|
81
|
+
statusParts.push(`\u2191${ahead}`);
|
|
82
|
+
if (!item.isMain && behind != null && behind > 0)
|
|
83
|
+
statusParts.push(`\u2193${behind}`);
|
|
84
|
+
if (dirty)
|
|
85
|
+
statusParts.push("*");
|
|
86
|
+
else if (!item.isMain && merged)
|
|
87
|
+
statusParts.push("\u2713");
|
|
88
|
+
const statusSuffix = statusParts.length > 0 ? ` ${statusParts.join(" ")}` : "";
|
|
89
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: ACCENT_COLOR, children: dot }), _jsx(Text, { bold: true, color: "white", children: branchName }), statusSuffix && _jsx(Text, { color: MUTED_TEXT, children: statusSuffix })] }, `wh-${idx}`));
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
case "session": {
|
|
93
|
+
const session = item.session;
|
|
94
|
+
const isSelected = idx === currentItemIndex;
|
|
95
|
+
const isMultiSelected = selectedIds.has(session.session_id);
|
|
96
|
+
const nextItem = items[idx + 1];
|
|
97
|
+
const isLastInGroup = !nextItem || (nextItem.kind !== "session" && nextItem.kind !== "new-session-button");
|
|
98
|
+
const treeCh = isLastInGroup ? "\u2514" : "\u251C";
|
|
99
|
+
const cursor = isSelected ? "\u25B6" : " ";
|
|
100
|
+
const fg = isMultiSelected ? INVERTED_TEXT : undefined;
|
|
101
|
+
const activity = getCliActivity(session.status, session.last_tool_name);
|
|
102
|
+
const { label: modeLabel, color: modeColor } = getSessionModeDisplay(session);
|
|
103
|
+
// Responsive fixed columns budget
|
|
104
|
+
// tree(2) + cursor(2) + icon(1) + activityLabel(10 or 1) + mode(8) + progress(varies)
|
|
105
|
+
const fixedWidth = showBar ? 38 : showActivityLabel ? 29 : 20;
|
|
106
|
+
const maxTitleLen = Math.max(0, availableWidth - fixedWidth);
|
|
107
|
+
const { displayTitle } = formatSessionTitle(session.session_title, maxTitleLen);
|
|
108
|
+
// Progress
|
|
109
|
+
const pct = session.context_metrics?.used_percentage;
|
|
110
|
+
const pctStr = pct != null
|
|
111
|
+
? `${session.context_metrics.is_estimate ? "~" : ""}${pct.toFixed(0)}%`
|
|
112
|
+
: "N/A";
|
|
113
|
+
let progressNode;
|
|
114
|
+
if (showBar && session.context_metrics) {
|
|
115
|
+
const barW = 7;
|
|
116
|
+
const filled = Math.round((pct / 100) * barW);
|
|
117
|
+
const empty = barW - filled;
|
|
118
|
+
progressNode = (_jsxs(_Fragment, { children: [_jsx(Text, { color: fg || (isSelected ? "white" : ACCENT_COLOR), children: "\u2588".repeat(filled) }), _jsx(Text, { color: fg || (isSelected ? "gray" : MUTED_TEXT), children: "\u2591".repeat(empty) }), _jsxs(Text, { color: fg || (isSelected ? "white" : ACCENT_COLOR), children: [" ", pctStr] })] }));
|
|
119
|
+
}
|
|
120
|
+
else if (showBar) {
|
|
121
|
+
progressNode = _jsxs(Text, { color: fg || (isSelected ? "gray" : MUTED_TEXT), children: ["\u2591".repeat(7), " ", pctStr] });
|
|
122
|
+
}
|
|
123
|
+
else {
|
|
124
|
+
progressNode = _jsxs(Text, { color: fg || (isSelected ? "white" : ACCENT_COLOR), children: [" ", pctStr] });
|
|
125
|
+
}
|
|
126
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", backgroundColor: isMultiSelected ? ACCENT_COLOR : undefined, color: isMultiSelected ? INVERTED_TEXT : undefined, children: [_jsxs(Text, { color: fg || MUTED_TEXT, children: [treeCh, " "] }), _jsxs(Text, { color: fg || (isSelected ? ACCENT_COLOR : "white"), children: [cursor, " "] }), _jsx(Text, { color: fg || activity.color, children: activity.icon }), showActivityLabel ? (_jsxs(Text, { color: fg || activity.color, children: [" ", activity.label.padEnd(9)] })) : (_jsx(Text, { children: " " })), _jsx(Text, { color: fg || modeColor, children: modeLabel.padStart(Math.ceil((8 + modeLabel.length) / 2)).padEnd(8) }), maxTitleLen > 0 && _jsx(Text, { color: fg || "white", children: displayTitle }), showBar && _jsx(Text, { children: " " }), progressNode] }, `s-${idx}`));
|
|
127
|
+
break;
|
|
128
|
+
}
|
|
129
|
+
case "new-session-button": {
|
|
130
|
+
const isSelected = idx === currentItemIndex;
|
|
131
|
+
const nsbNext = items[idx + 1];
|
|
132
|
+
const nsbIsLast = !nsbNext || nsbNext.kind === "spacer" || nsbNext.kind === "project-header" || nsbNext.kind === "worktree-header" || nsbNext.kind === "new-worktree-button";
|
|
133
|
+
const nsbTree = nsbIsLast ? "\u2514" : "\u251C";
|
|
134
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: MUTED_TEXT, children: [nsbTree, " "] }), _jsxs(Text, { color: isSelected ? ACCENT_COLOR : MUTED_TEXT, children: [isSelected ? "\u25B6" : " ", " "] }), _jsx(Text, { color: isSelected ? ACCENT_COLOR : MUTED_TEXT, children: "+ New Session" })] }, `nsb-${idx}`));
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
case "remove-worktree-button": {
|
|
138
|
+
const isSelected = idx === currentItemIndex;
|
|
139
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: MUTED_TEXT, children: ["\u2514", " "] }), _jsxs(Text, { color: isSelected ? ERROR_COLOR : MUTED_TEXT, children: [isSelected ? "\u25B6" : " ", " "] }), _jsxs(Text, { color: isSelected ? ERROR_COLOR : MUTED_TEXT, children: ["\u2717", " Remove worktree"] })] }, `rwb-${idx}`));
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
case "remove-worktree-confirm": {
|
|
143
|
+
// Line 1: Confirmation header
|
|
144
|
+
contentLines.push(_jsx(Text, { wrap: "truncate-end", children: _jsxs(Text, { color: ERROR_COLOR, bold: true, children: ["\u25B6", " Remove \"", item.worktreeName, "\"?"] }) }, `rwc-title-${idx}`));
|
|
145
|
+
// Line 2: Status badges
|
|
146
|
+
const badges = [];
|
|
147
|
+
if (item.hasUncommittedChanges) {
|
|
148
|
+
badges.push(_jsxs(Text, { color: WARNING_COLOR, children: ["\u26A0", " uncommitted changes"] }, "uc"));
|
|
149
|
+
}
|
|
150
|
+
if (item.isMergedToMain) {
|
|
151
|
+
badges.push(_jsxs(Text, { color: SUCCESS_COLOR, children: ["\u2713", " merged"] }, "mg"));
|
|
152
|
+
}
|
|
153
|
+
else {
|
|
154
|
+
badges.push(_jsxs(Text, { color: ERROR_COLOR, children: ["\u2717", " unmerged"] }, "um"));
|
|
155
|
+
}
|
|
156
|
+
if (item.sessionCount > 0) {
|
|
157
|
+
badges.push(_jsxs(Text, { color: ACCENT_COLOR, children: [item.sessionCount, " active ", item.sessionCount === 1 ? "session" : "sessions"] }, "sc"));
|
|
158
|
+
}
|
|
159
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { children: " " }), badges.map((badge, i) => (_jsxs(React.Fragment, { children: [i > 0 && _jsx(Text, { color: MUTED_TEXT, children: " " }), badge] }, i)))] }, `rwc-status-${idx}`));
|
|
160
|
+
// Line 3: Toggles
|
|
161
|
+
const branchLabel = item.branch || item.worktreeName;
|
|
162
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: ACCENT_COLOR, children: "[b]" }), _jsxs(Text, { color: removeDeleteBranch ? "white" : MUTED_TEXT, children: [removeDeleteBranch ? " \u2611" : " \u2610", " delete branch ", branchLabel] }), item.hasUncommittedChanges && (_jsxs(_Fragment, { children: [_jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: ACCENT_COLOR, children: "[f]" }), _jsxs(Text, { color: removeForce ? ERROR_COLOR : MUTED_TEXT, children: [removeForce ? " \u2611" : " \u2610", " force"] })] }))] }, `rwc-toggles-${idx}`));
|
|
163
|
+
// Line 4: Action hints
|
|
164
|
+
const canConfirm = !item.hasUncommittedChanges || removeForce;
|
|
165
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: canConfirm ? ACCENT_COLOR : MUTED_TEXT, children: "[Enter]" }), _jsx(Text, { color: canConfirm ? "white" : MUTED_TEXT, children: " confirm" }), _jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: ACCENT_COLOR, children: "[Esc]" }), _jsx(Text, { color: "white", children: " cancel" })] }, `rwc-actions-${idx}`));
|
|
166
|
+
break;
|
|
167
|
+
}
|
|
168
|
+
case "new-worktree-button": {
|
|
169
|
+
const isSelected = idx === currentItemIndex;
|
|
170
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: isSelected ? ACCENT_COLOR : "white", children: [isSelected ? "\u25B6" : " ", " "] }), _jsx(Text, { bold: true, color: isSelected ? ACCENT_COLOR : "white", children: "+ New Worktree" })] }, `nwb-${idx}`));
|
|
171
|
+
break;
|
|
172
|
+
}
|
|
173
|
+
case "new-worktree-input": {
|
|
174
|
+
const inputRoot = creatingForRepoRoot || repoRoot;
|
|
175
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: ACCENT_COLOR, children: ["\u25B6", " New: "] }), _jsx(Text, { color: "white", children: newWorktreeName }), _jsx(Text, { color: ACCENT_COLOR, children: "_" })] }, `nwi-${idx}`));
|
|
176
|
+
if (inputRoot) {
|
|
177
|
+
contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: [" ", inputRoot, "/", newWorktreeName || "..."] }, `nwi-path-${idx}`));
|
|
178
|
+
}
|
|
179
|
+
if (worktreeCreateError) {
|
|
180
|
+
contentLines.push(_jsxs(Text, { color: ERROR_COLOR, children: [" ", worktreeCreateError] }, `nwi-err-${idx}`));
|
|
181
|
+
}
|
|
182
|
+
break;
|
|
183
|
+
}
|
|
184
|
+
case "show-all-worktrees-button": {
|
|
185
|
+
const label = `${item.hiddenCount} more worktree${item.hiddenCount === 1 ? "" : "s"} [d]`;
|
|
186
|
+
contentLines.push(_jsx(Text, { wrap: "truncate-end", children: _jsxs(Text, { color: MUTED_TEXT, children: [" ", label] }) }, `sawb-${idx}`));
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
case "spacer": {
|
|
190
|
+
contentLines.push(_jsx(Text, { children: " " }, `sp-${idx}`));
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
// --- Bottom controls ---
|
|
196
|
+
const { element: bottomControlsElement, width: controlsWidth } = buildBottomControls([
|
|
197
|
+
{ key: "Esc", label: "back " },
|
|
198
|
+
{ key: "d", label: "etails " },
|
|
199
|
+
{ key: "h", label: "elp" },
|
|
200
|
+
]);
|
|
201
|
+
// --- Notification ---
|
|
202
|
+
let bottomNotificationText = "";
|
|
203
|
+
let bottomIsNotification = false;
|
|
204
|
+
let bottomIsError = false;
|
|
205
|
+
if (notification) {
|
|
206
|
+
const isError = notification.startsWith("!");
|
|
207
|
+
const cleanMsg = isError ? notification.slice(1) : notification;
|
|
208
|
+
const maxLen = terminalWidth - 6;
|
|
209
|
+
const truncated = cleanMsg.length > maxLen ? cleanMsg.substring(0, maxLen - 3) + "..." : cleanMsg;
|
|
210
|
+
bottomNotificationText = isError ? `\u2717 ${truncated}` : `\u2713 ${truncated}`;
|
|
211
|
+
bottomIsNotification = true;
|
|
212
|
+
bottomIsError = isError;
|
|
213
|
+
}
|
|
214
|
+
// ========== WIDE LAYOUT (≥62) ==========
|
|
215
|
+
if (isWide) {
|
|
216
|
+
const showVersion = terminalWidth >= 70;
|
|
217
|
+
// Right column: header + spacer + session content
|
|
218
|
+
const allLines = [
|
|
219
|
+
_jsx(Text, { bold: true, color: ACCENT_COLOR, children: headerLabel }, "header"),
|
|
220
|
+
_jsx(Text, { children: " " }, "header-spacer"),
|
|
221
|
+
...contentLines,
|
|
222
|
+
];
|
|
223
|
+
const mascotTopPad = Math.floor((FIXED_CONTENT_HEIGHT - mascotLines.length) / 2);
|
|
224
|
+
const shortcutsStart = mascotTopPad + mascotLines.length + 1;
|
|
225
|
+
const minMascotColumnHeight = showHelp
|
|
226
|
+
? shortcutsStart + shortcutRows.length
|
|
227
|
+
: mascotTopPad + mascotLines.length;
|
|
228
|
+
const totalRows = Math.max(minMascotColumnHeight, allLines.length);
|
|
229
|
+
// --- Scroll ---
|
|
230
|
+
const totalWideHeight = totalRows + 2; // +2 for top/bottom borders
|
|
231
|
+
const needsScroll = totalWideHeight > terminalHeight;
|
|
232
|
+
const visibleRows = needsScroll ? Math.max(1, terminalHeight - 2) : totalRows;
|
|
233
|
+
// Find which row the selected item is at in allLines (offset by 2 for header + spacer)
|
|
234
|
+
const selContentIdx = itemToContentLine.get(currentItemIndex);
|
|
235
|
+
const selRow = selContentIdx != null ? selContentIdx + 2 : 0;
|
|
236
|
+
if (needsScroll) {
|
|
237
|
+
scrollRef.current = computeScroll(scrollRef.current, selRow, visibleRows, totalRows);
|
|
238
|
+
}
|
|
239
|
+
else {
|
|
240
|
+
scrollRef.current = 0;
|
|
241
|
+
}
|
|
242
|
+
// Apply scroll bias for rendering (positive = scroll up toward top, negative = scroll down)
|
|
243
|
+
// scrollRef tracks pure cursor-follow; bias is only for display
|
|
244
|
+
const scrollStart = needsScroll
|
|
245
|
+
? Math.max(0, Math.min(scrollRef.current - scrollBias, totalRows - visibleRows))
|
|
246
|
+
: 0;
|
|
247
|
+
const canScrollUp = needsScroll && scrollStart > 0;
|
|
248
|
+
const canScrollDown = needsScroll && scrollStart + visibleRows < totalRows;
|
|
249
|
+
// Top border
|
|
250
|
+
const borderTitle = "\u2500 Jacques";
|
|
251
|
+
const borderVersion = showVersion ? " v0.1.0 " : " ";
|
|
252
|
+
const scrollUpInd = canScrollUp ? " \u25B2" : "";
|
|
253
|
+
const topRemaining = Math.max(0, terminalWidth - borderTitle.length - borderVersion.length - scrollUpInd.length - 2);
|
|
254
|
+
// Bottom border
|
|
255
|
+
const scrollDownInd = canScrollDown ? "\u25BC " : "";
|
|
256
|
+
const bottomTextWidth = bottomIsNotification ? bottomNotificationText.length : controlsWidth;
|
|
257
|
+
const totalBottomDashes = Math.max(0, terminalWidth - bottomTextWidth - scrollDownInd.length - 2);
|
|
258
|
+
const bottomLeftBorder = Math.max(1, Math.floor(totalBottomDashes / 2));
|
|
259
|
+
const bottomRightBorder = Math.max(1, totalBottomDashes - bottomLeftBorder);
|
|
260
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: BORDER_COLOR, children: "\u256D" }), _jsx(Text, { color: ACCENT_COLOR, children: borderTitle }), _jsx(Text, { color: MUTED_TEXT, children: borderVersion }), _jsx(Text, { color: BORDER_COLOR, children: "\u2500".repeat(topRemaining) }), canScrollUp && _jsx(Text, { color: MUTED_TEXT, children: scrollUpInd }), _jsx(Text, { color: BORDER_COLOR, children: "\u256E" })] }), Array.from({ length: visibleRows }).map((_, i) => {
|
|
261
|
+
const rowIndex = scrollStart + i;
|
|
262
|
+
const mascotIdx = rowIndex - mascotTopPad;
|
|
263
|
+
let leftCell = _jsx(Text, { children: " " });
|
|
264
|
+
if (mascotIdx >= 0 && mascotIdx < mascotLines.length) {
|
|
265
|
+
leftCell = _jsx(Text, { wrap: "truncate-end", children: mascotLines[mascotIdx] });
|
|
266
|
+
}
|
|
267
|
+
else if (showHelp) {
|
|
268
|
+
const scIdx = rowIndex - shortcutsStart;
|
|
269
|
+
if (scIdx >= 0 && scIdx < shortcutRows.length) {
|
|
270
|
+
const sc = shortcutRows[scIdx];
|
|
271
|
+
leftCell = (_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: MUTED_TEXT, children: [" ", sc.key.padEnd(3)] }), _jsxs(Text, { color: MUTED_TEXT, children: [" ", sc.label] })] }));
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
const contentLine = allLines[rowIndex];
|
|
275
|
+
return (_jsxs(Box, { flexDirection: "row", height: 1, children: [_jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: mascotDisplayWidth, justifyContent: "center", flexShrink: 0, children: leftCell }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: wideContentWidth, paddingLeft: CONTENT_PADDING, paddingRight: CONTENT_PADDING, flexShrink: 0, children: contentLine || _jsx(Text, { children: " " }) }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" })] }, rowIndex));
|
|
276
|
+
}), _jsxs(Box, { children: [_jsxs(Text, { color: BORDER_COLOR, children: ["\u2570", "\u2500".repeat(bottomLeftBorder)] }), bottomIsNotification ? (_jsx(Text, { color: bottomIsError ? ERROR_COLOR : SUCCESS_COLOR, children: bottomNotificationText })) : (bottomControlsElement), _jsx(Text, { color: BORDER_COLOR, children: "\u2500".repeat(bottomRightBorder) }), canScrollDown && _jsx(Text, { color: MUTED_TEXT, children: scrollDownInd }), _jsx(Text, { color: BORDER_COLOR, children: "\u256F" })] })] }));
|
|
277
|
+
}
|
|
278
|
+
// ========== NARROW LAYOUT (<62) ==========
|
|
279
|
+
// Build flat line array for scroll support
|
|
280
|
+
const showNarrowVersion = terminalWidth >= 30;
|
|
281
|
+
const narrowLines = [];
|
|
282
|
+
// Spacer (marginTop=1)
|
|
283
|
+
narrowLines.push(_jsx(Text, { children: " " }, "n-mt"));
|
|
284
|
+
// Mascot + name rendered line-by-line (ANSI mascot must be per-line in row contexts)
|
|
285
|
+
const mascotCenter = Math.floor((mascotLines.length - 1) / 2);
|
|
286
|
+
for (let mi = 0; mi < mascotLines.length; mi++) {
|
|
287
|
+
const textLineIndex = mi - mascotCenter;
|
|
288
|
+
if (textLineIndex >= 0 && textLineIndex <= 2) {
|
|
289
|
+
let textContent;
|
|
290
|
+
if (textLineIndex === 0) {
|
|
291
|
+
textContent = _jsx(Text, { color: MUTED_TEXT, children: APP_ENDEARMENT });
|
|
292
|
+
}
|
|
293
|
+
else if (textLineIndex === 1) {
|
|
294
|
+
textContent = _jsxs(Text, { bold: true, color: ACCENT_COLOR, children: ["Jacques", showNarrowVersion ? _jsx(Text, { color: MUTED_TEXT, children: " v0.1.0" }) : ""] });
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
textContent = _jsx(Text, { color: "white", children: "Sessions Manager" });
|
|
298
|
+
}
|
|
299
|
+
narrowLines.push(_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { flexDirection: "column", flexShrink: 0, children: _jsx(Text, { wrap: "truncate-end", children: mascotLines[mi] }) }), _jsx(Box, { marginLeft: 2, children: textContent })] }, `n-m-${mi}`));
|
|
300
|
+
}
|
|
301
|
+
else {
|
|
302
|
+
narrowLines.push(_jsx(Text, { wrap: "truncate-end", children: mascotLines[mi] }, `n-m-${mi}`));
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// Spacer (marginBottom=1)
|
|
306
|
+
narrowLines.push(_jsx(Text, { children: " " }, "n-mb"));
|
|
307
|
+
// Shortcuts (toggled with h)
|
|
308
|
+
if (showHelp) {
|
|
309
|
+
shortcutRows.forEach((sc, i) => {
|
|
310
|
+
narrowLines.push(_jsxs(Text, { color: MUTED_TEXT, children: [" ", sc.key.padEnd(3), " ", sc.label] }, `n-sc-${i}`));
|
|
311
|
+
});
|
|
312
|
+
}
|
|
313
|
+
// Spacer before header
|
|
314
|
+
narrowLines.push(_jsx(Text, { children: " " }, "n-hs"));
|
|
315
|
+
// Header
|
|
316
|
+
narrowLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: headerLabel }, "n-hdr"));
|
|
317
|
+
// Spacer before content
|
|
318
|
+
narrowLines.push(_jsx(Text, { children: " " }, "n-cs"));
|
|
319
|
+
// Content lines start index (for mapping selected item to line number)
|
|
320
|
+
const narrowContentStart = narrowLines.length;
|
|
321
|
+
contentLines.forEach((line, i) => {
|
|
322
|
+
narrowLines.push(_jsx(Box, { children: line }, `n-cl-${i}`));
|
|
323
|
+
});
|
|
324
|
+
// Spacer before controls
|
|
325
|
+
narrowLines.push(_jsx(Text, { children: " " }, "n-bs"));
|
|
326
|
+
// Controls
|
|
327
|
+
narrowLines.push(_jsx(Box, { children: bottomIsNotification ? (_jsx(Text, { color: bottomIsError ? ERROR_COLOR : SUCCESS_COLOR, children: bottomNotificationText })) : (bottomControlsElement) }, "n-ctrl"));
|
|
328
|
+
// --- Narrow scroll ---
|
|
329
|
+
const narrowTotal = narrowLines.length;
|
|
330
|
+
const narrowNeedsScroll = narrowTotal > terminalHeight;
|
|
331
|
+
const narrowVisible = narrowNeedsScroll ? terminalHeight : narrowTotal;
|
|
332
|
+
const narrowSelIdx = itemToContentLine.get(currentItemIndex);
|
|
333
|
+
const narrowSelLine = narrowSelIdx != null ? narrowContentStart + narrowSelIdx : 0;
|
|
334
|
+
if (narrowNeedsScroll) {
|
|
335
|
+
scrollRef.current = computeScroll(scrollRef.current, narrowSelLine, narrowVisible, narrowTotal);
|
|
336
|
+
}
|
|
337
|
+
else {
|
|
338
|
+
scrollRef.current = 0;
|
|
339
|
+
}
|
|
340
|
+
// Apply scroll bias for rendering
|
|
341
|
+
const narrowStart = narrowNeedsScroll
|
|
342
|
+
? Math.max(0, Math.min(scrollRef.current - scrollBias, narrowTotal - narrowVisible))
|
|
343
|
+
: 0;
|
|
344
|
+
const narrowSlice = narrowLines.slice(narrowStart, narrowStart + narrowVisible);
|
|
345
|
+
return (_jsx(Box, { flexDirection: "column", children: narrowSlice }));
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=SessionsExperimentView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionsExperimentView.js","sourceRoot":"","sources":["../../src/components/SessionsExperimentView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SessionsList Component
|
|
3
|
+
*
|
|
4
|
+
* Displays all active sessions with status icons and context usage
|
|
5
|
+
*/
|
|
6
|
+
import React from "react";
|
|
7
|
+
import type { Session } from "@jacques-ai/core";
|
|
8
|
+
interface SessionsListProps {
|
|
9
|
+
sessions: Session[];
|
|
10
|
+
focusedSessionId: string | null;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Sessions list with status icons
|
|
14
|
+
* - 🟢 for focused session
|
|
15
|
+
* - 💤 for idle/background sessions
|
|
16
|
+
* Sorted: focused first, then by last_activity
|
|
17
|
+
*/
|
|
18
|
+
export declare function SessionsList({ sessions, focusedSessionId }: SessionsListProps): React.ReactElement;
|
|
19
|
+
export default SessionsList;
|
|
20
|
+
//# sourceMappingURL=SessionsList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionsList.d.ts","sourceRoot":"","sources":["../../src/components/SessionsList.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAgDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA8ClG;AAED,eAAe,YAAY,CAAC"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Text, Box } from "ink";
|
|
3
|
+
import { MUTED_TEXT, ERROR_COLOR, WARNING_COLOR, SUCCESS_COLOR } from "./layout/theme.js";
|
|
4
|
+
import { getCliActivity } from "../utils/activity.js";
|
|
5
|
+
/**
|
|
6
|
+
* Format session name as "project / terminal"
|
|
7
|
+
*/
|
|
8
|
+
function formatSessionName(session) {
|
|
9
|
+
const project = session.project || "unknown";
|
|
10
|
+
const terminal = session.terminal?.term_program || "Terminal";
|
|
11
|
+
const branch = session.git_branch;
|
|
12
|
+
const maxLength = 50;
|
|
13
|
+
let formatted;
|
|
14
|
+
if (branch) {
|
|
15
|
+
formatted = `${project} @${branch} / ${terminal}`;
|
|
16
|
+
}
|
|
17
|
+
else {
|
|
18
|
+
formatted = `${project} / ${terminal}`;
|
|
19
|
+
}
|
|
20
|
+
if (formatted.length > maxLength) {
|
|
21
|
+
return formatted.substring(0, maxLength - 3) + "...";
|
|
22
|
+
}
|
|
23
|
+
return formatted;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Format percentage with fallback
|
|
27
|
+
*/
|
|
28
|
+
function formatPercentage(percentage) {
|
|
29
|
+
if (percentage === undefined || percentage === null) {
|
|
30
|
+
return "N/A";
|
|
31
|
+
}
|
|
32
|
+
return `${percentage.toFixed(1)}%`;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get color for context percentage
|
|
36
|
+
*/
|
|
37
|
+
function getContextColor(percentage) {
|
|
38
|
+
if (percentage === undefined || percentage === null) {
|
|
39
|
+
return MUTED_TEXT;
|
|
40
|
+
}
|
|
41
|
+
if (percentage < 50)
|
|
42
|
+
return SUCCESS_COLOR;
|
|
43
|
+
if (percentage < 70)
|
|
44
|
+
return WARNING_COLOR;
|
|
45
|
+
return ERROR_COLOR;
|
|
46
|
+
}
|
|
47
|
+
// Activity label now provided by shared getCliActivity() utility
|
|
48
|
+
/**
|
|
49
|
+
* Sessions list with status icons
|
|
50
|
+
* - 🟢 for focused session
|
|
51
|
+
* - 💤 for idle/background sessions
|
|
52
|
+
* Sorted: focused first, then by last_activity
|
|
53
|
+
*/
|
|
54
|
+
export function SessionsList({ sessions, focusedSessionId }) {
|
|
55
|
+
// Sort sessions: focused first, then by last_activity (most recent)
|
|
56
|
+
const sortedSessions = [...sessions].sort((a, b) => {
|
|
57
|
+
if (a.session_id === focusedSessionId)
|
|
58
|
+
return -1;
|
|
59
|
+
if (b.session_id === focusedSessionId)
|
|
60
|
+
return 1;
|
|
61
|
+
return b.last_activity - a.last_activity;
|
|
62
|
+
});
|
|
63
|
+
// Limit to first 10 sessions
|
|
64
|
+
const displaySessions = sortedSessions.slice(0, 10);
|
|
65
|
+
const remainingCount = sortedSessions.length - displaySessions.length;
|
|
66
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: MUTED_TEXT, children: ["Active Sessions (", sessions.length, "):"] }), displaySessions.map((session) => {
|
|
67
|
+
const isFocused = session.session_id === focusedSessionId;
|
|
68
|
+
const icon = isFocused ? "🟢" : "💤";
|
|
69
|
+
const percentage = session.context_metrics?.used_percentage;
|
|
70
|
+
const activity = getCliActivity(session.status, session.last_tool_name);
|
|
71
|
+
return (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { children: [icon, " ", formatSessionName(session), " ", _jsx(Text, { color: getContextColor(percentage), children: formatPercentage(percentage) }), " ", _jsx(Text, { color: activity.color, children: activity.label })] }) }, session.session_id));
|
|
72
|
+
}), remainingCount > 0 && (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: MUTED_TEXT, children: ["... and ", remainingCount, " more"] }) }))] }));
|
|
73
|
+
}
|
|
74
|
+
export default SessionsList;
|
|
75
|
+
//# sourceMappingURL=SessionsList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionsList.js","sourceRoot":"","sources":["../../src/components/SessionsList.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings View Component
|
|
3
|
+
*
|
|
4
|
+
* Displays and allows configuration of settings:
|
|
5
|
+
* - Claude Code connection
|
|
6
|
+
* - Auto-archive toggle
|
|
7
|
+
* - Skip permissions toggle
|
|
8
|
+
* - Sync controls (Sync New / Re-sync All)
|
|
9
|
+
* - Subscription usage visualization
|
|
10
|
+
* - Browse Archive
|
|
11
|
+
*/
|
|
12
|
+
import React from "react";
|
|
13
|
+
import type { UsageLimits } from "../hooks/useUsageLimits.js";
|
|
14
|
+
import type { NotificationSettings } from "@jacques-ai/core/notifications";
|
|
15
|
+
export interface ArchiveStatsData {
|
|
16
|
+
totalConversations: number;
|
|
17
|
+
totalProjects: number;
|
|
18
|
+
totalSize: string;
|
|
19
|
+
archivePath: string;
|
|
20
|
+
}
|
|
21
|
+
interface SettingsViewProps {
|
|
22
|
+
terminalWidth: number;
|
|
23
|
+
selectedIndex: number;
|
|
24
|
+
autoArchive: boolean;
|
|
25
|
+
skipPermissions: boolean;
|
|
26
|
+
stats: ArchiveStatsData | null;
|
|
27
|
+
loading?: boolean;
|
|
28
|
+
scrollOffset?: number;
|
|
29
|
+
syncProgress?: string | null;
|
|
30
|
+
usageLimits?: UsageLimits | null;
|
|
31
|
+
usageLoading?: boolean;
|
|
32
|
+
claudeConnected?: boolean;
|
|
33
|
+
claudeTokenMasked?: string | null;
|
|
34
|
+
claudeTokenInput?: string;
|
|
35
|
+
claudeTokenError?: string | null;
|
|
36
|
+
isTokenInputMode?: boolean;
|
|
37
|
+
isTokenVerifying?: boolean;
|
|
38
|
+
showConnectionSuccess?: boolean;
|
|
39
|
+
notificationSettings?: NotificationSettings;
|
|
40
|
+
notificationsLoading?: boolean;
|
|
41
|
+
}
|
|
42
|
+
declare const TOTAL_ITEMS = 13;
|
|
43
|
+
/** Indices that should be skipped during navigation (disabled categories) */
|
|
44
|
+
declare const DISABLED_INDICES: Set<number>;
|
|
45
|
+
export { TOTAL_ITEMS as SETTINGS_TOTAL_ITEMS, DISABLED_INDICES as SETTINGS_DISABLED_INDICES };
|
|
46
|
+
export declare function SettingsView({ terminalWidth, selectedIndex, autoArchive, skipPermissions, stats, loading, scrollOffset, syncProgress, usageLimits, usageLoading, claudeConnected, claudeTokenMasked, claudeTokenInput, claudeTokenError, isTokenInputMode, isTokenVerifying, showConnectionSuccess, notificationSettings, notificationsLoading, }: SettingsViewProps): React.ReactElement;
|
|
47
|
+
export default SettingsView;
|
|
48
|
+
//# sourceMappingURL=SettingsView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingsView.d.ts","sourceRoot":"","sources":["../../src/components/SettingsView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAwB,MAAM,gCAAgC,CAAC;AAGjG,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAWD,QAAA,MAAM,WAAW,KAAK,CAAC;AAEvB,6EAA6E;AAC7E,QAAA,MAAM,gBAAgB,aAAmB,CAAC;AAW1C,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,gBAAgB,IAAI,yBAAyB,EAAE,CAAC;AAe9F,wBAAgB,YAAY,CAAC,EAC3B,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,KAAK,EACL,OAAe,EACf,YAAgB,EAChB,YAAmB,EACnB,WAAkB,EAClB,YAAoB,EACpB,eAAuB,EACvB,iBAAwB,EACxB,gBAAqB,EACrB,gBAAuB,EACvB,gBAAwB,EACxB,gBAAwB,EACxB,qBAA6B,EAC7B,oBAAoB,EACpB,oBAA4B,GAC7B,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA+OxC;AAED,eAAe,YAAY,CAAC"}
|