@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,321 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useSessionsExperiment Hook
|
|
3
|
+
*
|
|
4
|
+
* Scrollable list of active sessions grouped by worktree.
|
|
5
|
+
* Supports multi-select for tiling, vim-style keyboard navigation,
|
|
6
|
+
* new-session/new-worktree buttons, and worktree visibility toggle.
|
|
7
|
+
*/
|
|
8
|
+
import { useState, useCallback, useMemo, useEffect } from "react";
|
|
9
|
+
import { validateWorktreeName } from "./useWorktrees.js";
|
|
10
|
+
import { buildSessionItems } from "../utils/sessions-items-builder.js";
|
|
11
|
+
export function useSessionsExperiment({ sessions, allProjects, worktrees, focusedSessionId, selectedProject, focusTerminal, maximizeWindow, tileWindows, launchSession, showNotification, returnToMain, createWorktreeWs, removeWorktreeWs, listWorktreesWs, worktreesByRepo, repoRoot, refreshWorktrees, createWorktreeResult, removeWorktreeResult, skipPermissions, }) {
|
|
12
|
+
const [selectedIndex, setSelectedIndex] = useState(0);
|
|
13
|
+
const [selectedIds, setSelectedIds] = useState(new Set());
|
|
14
|
+
const [showHelp, setShowHelp] = useState(true);
|
|
15
|
+
const [scrollBias, setScrollBias] = useState(0);
|
|
16
|
+
const [showAllWorktrees, setShowAllWorktrees] = useState(false);
|
|
17
|
+
const [isCreatingWorktree, setIsCreatingWorktree] = useState(false);
|
|
18
|
+
const [newWorktreeName, setNewWorktreeName] = useState("");
|
|
19
|
+
const [worktreeCreateError, setWorktreeCreateError] = useState(null);
|
|
20
|
+
const [creatingForRepoRoot, setCreatingForRepoRoot] = useState(null);
|
|
21
|
+
const [removingWorktreePath, setRemovingWorktreePath] = useState(null);
|
|
22
|
+
const [removeForce, setRemoveForce] = useState(false);
|
|
23
|
+
const [removeDeleteBranch, setRemoveDeleteBranch] = useState(true);
|
|
24
|
+
// Handle createWorktreeResult
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
if (!createWorktreeResult)
|
|
27
|
+
return;
|
|
28
|
+
if (createWorktreeResult.success) {
|
|
29
|
+
showNotification(`Worktree created: ${createWorktreeResult.branch || newWorktreeName}`);
|
|
30
|
+
setIsCreatingWorktree(false);
|
|
31
|
+
setNewWorktreeName("");
|
|
32
|
+
setWorktreeCreateError(null);
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
setWorktreeCreateError(createWorktreeResult.error || "Failed to create worktree");
|
|
36
|
+
}
|
|
37
|
+
}, [createWorktreeResult]); // eslint-disable-line react-hooks/exhaustive-deps
|
|
38
|
+
// Handle removeWorktreeResult
|
|
39
|
+
useEffect(() => {
|
|
40
|
+
if (!removeWorktreeResult)
|
|
41
|
+
return;
|
|
42
|
+
// useWorktrees already shows notification and refreshes the list
|
|
43
|
+
setRemovingWorktreePath(null);
|
|
44
|
+
setRemoveDeleteBranch(true);
|
|
45
|
+
setRemoveForce(false);
|
|
46
|
+
}, [removeWorktreeResult]);
|
|
47
|
+
// Sort sessions (focused first, then by registration time)
|
|
48
|
+
const sortedSessions = useMemo(() => {
|
|
49
|
+
const sorted = [...sessions];
|
|
50
|
+
sorted.sort((a, b) => {
|
|
51
|
+
if (a.session_id === focusedSessionId)
|
|
52
|
+
return -1;
|
|
53
|
+
if (b.session_id === focusedSessionId)
|
|
54
|
+
return 1;
|
|
55
|
+
return a.registered_at - b.registered_at;
|
|
56
|
+
});
|
|
57
|
+
return sorted;
|
|
58
|
+
}, [sessions, focusedSessionId]);
|
|
59
|
+
// Group sessions by project and build flat content list
|
|
60
|
+
const { items, selectableIndices } = useMemo(() => {
|
|
61
|
+
return buildSessionItems({
|
|
62
|
+
sortedSessions, allProjects, worktrees, selectedProject,
|
|
63
|
+
showAllWorktrees, isCreatingWorktree, removingWorktreePath,
|
|
64
|
+
repoRoot, worktreesByRepo,
|
|
65
|
+
});
|
|
66
|
+
}, [sortedSessions, worktrees, showAllWorktrees, repoRoot, isCreatingWorktree, removingWorktreePath, selectedProject, allProjects, worktreesByRepo]);
|
|
67
|
+
// Current selectable item's position in the items array
|
|
68
|
+
const currentItemIndex = selectableIndices[selectedIndex] ?? -1;
|
|
69
|
+
const handleInput = useCallback((input, key) => {
|
|
70
|
+
// Creation mode guard
|
|
71
|
+
if (isCreatingWorktree) {
|
|
72
|
+
if (key.escape) {
|
|
73
|
+
setIsCreatingWorktree(false);
|
|
74
|
+
setNewWorktreeName("");
|
|
75
|
+
setWorktreeCreateError(null);
|
|
76
|
+
setCreatingForRepoRoot(null);
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
if (key.return) {
|
|
80
|
+
const validationError = validateWorktreeName(newWorktreeName);
|
|
81
|
+
if (validationError) {
|
|
82
|
+
setWorktreeCreateError(validationError);
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
const targetRoot = creatingForRepoRoot || repoRoot;
|
|
86
|
+
if (targetRoot) {
|
|
87
|
+
createWorktreeWs(targetRoot, newWorktreeName, undefined, skipPermissions || undefined);
|
|
88
|
+
showNotification("Creating worktree...");
|
|
89
|
+
}
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
if (key.backspace || key.delete) {
|
|
93
|
+
setNewWorktreeName((prev) => prev.slice(0, -1));
|
|
94
|
+
setWorktreeCreateError(null);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
if (input && input.length === 1 && !key.ctrl && !key.meta) {
|
|
98
|
+
setNewWorktreeName((prev) => prev + input);
|
|
99
|
+
setWorktreeCreateError(null);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// Remove confirmation mode guard
|
|
105
|
+
if (removingWorktreePath !== null) {
|
|
106
|
+
if (key.escape) {
|
|
107
|
+
setRemovingWorktreePath(null);
|
|
108
|
+
setRemoveDeleteBranch(true);
|
|
109
|
+
setRemoveForce(false);
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
if (key.return) {
|
|
113
|
+
const item = items[currentItemIndex];
|
|
114
|
+
if (item?.kind === "remove-worktree-confirm") {
|
|
115
|
+
if (item.hasUncommittedChanges && !removeForce) {
|
|
116
|
+
showNotification("!Toggle [f]orce to remove with uncommitted changes");
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
if (repoRoot) {
|
|
120
|
+
removeWorktreeWs(repoRoot, item.worktreePath, removeForce, removeDeleteBranch);
|
|
121
|
+
showNotification("Removing worktree...");
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
if (input === "f" || input === "F") {
|
|
127
|
+
setRemoveForce((prev) => !prev);
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
if (input === "b" || input === "B") {
|
|
131
|
+
setRemoveDeleteBranch((prev) => !prev);
|
|
132
|
+
return;
|
|
133
|
+
}
|
|
134
|
+
// Arrow keys cancel confirmation and fall through to normal navigation
|
|
135
|
+
if (key.upArrow || key.downArrow) {
|
|
136
|
+
setRemovingWorktreePath(null);
|
|
137
|
+
setRemoveDeleteBranch(true);
|
|
138
|
+
setRemoveForce(false);
|
|
139
|
+
// fall through
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
return; // swallow other keys
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
if (key.escape) {
|
|
146
|
+
returnToMain();
|
|
147
|
+
return;
|
|
148
|
+
}
|
|
149
|
+
if (key.upArrow) {
|
|
150
|
+
if (selectedIndex > 0) {
|
|
151
|
+
setSelectedIndex((prev) => prev - 1);
|
|
152
|
+
setScrollBias(0);
|
|
153
|
+
}
|
|
154
|
+
else {
|
|
155
|
+
setScrollBias((prev) => prev + 1);
|
|
156
|
+
}
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (key.downArrow) {
|
|
160
|
+
if (selectedIndex < selectableIndices.length - 1) {
|
|
161
|
+
setSelectedIndex((prev) => prev + 1);
|
|
162
|
+
setScrollBias(0);
|
|
163
|
+
}
|
|
164
|
+
else {
|
|
165
|
+
setScrollBias((prev) => prev - 1);
|
|
166
|
+
}
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
// Any other key resets scroll bias
|
|
170
|
+
setScrollBias(0);
|
|
171
|
+
// Enter — context-dependent action
|
|
172
|
+
if (key.return) {
|
|
173
|
+
const item = items[currentItemIndex];
|
|
174
|
+
if (!item)
|
|
175
|
+
return;
|
|
176
|
+
if (item.kind === "session") {
|
|
177
|
+
showNotification("Focusing terminal...");
|
|
178
|
+
focusTerminal(item.session.session_id);
|
|
179
|
+
}
|
|
180
|
+
else if (item.kind === "new-session-button") {
|
|
181
|
+
showNotification("Launching new session...");
|
|
182
|
+
launchSession(item.worktreePath, skipPermissions || undefined);
|
|
183
|
+
}
|
|
184
|
+
else if (item.kind === "new-worktree-button") {
|
|
185
|
+
setIsCreatingWorktree(true);
|
|
186
|
+
setNewWorktreeName("");
|
|
187
|
+
setWorktreeCreateError(null);
|
|
188
|
+
setCreatingForRepoRoot(item.targetRepoRoot || null);
|
|
189
|
+
}
|
|
190
|
+
else if (item.kind === "remove-worktree-button") {
|
|
191
|
+
setRemovingWorktreePath(item.worktreePath);
|
|
192
|
+
setRemoveDeleteBranch(true);
|
|
193
|
+
setRemoveForce(false);
|
|
194
|
+
}
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
// Space — toggle multi-select
|
|
198
|
+
if (input === " ") {
|
|
199
|
+
const item = items[currentItemIndex];
|
|
200
|
+
if (item?.kind === "session") {
|
|
201
|
+
setSelectedIds((prev) => {
|
|
202
|
+
const next = new Set(prev);
|
|
203
|
+
if (next.has(item.session.session_id)) {
|
|
204
|
+
next.delete(item.session.session_id);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
next.add(item.session.session_id);
|
|
208
|
+
}
|
|
209
|
+
return next;
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
return;
|
|
213
|
+
}
|
|
214
|
+
// f — maximize
|
|
215
|
+
if (input === "f") {
|
|
216
|
+
const item = items[currentItemIndex];
|
|
217
|
+
if (item?.kind === "session") {
|
|
218
|
+
showNotification("Maximizing window...");
|
|
219
|
+
maximizeWindow(item.session.session_id);
|
|
220
|
+
}
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
// t — tile (needs 2+ selected)
|
|
224
|
+
if (input === "t") {
|
|
225
|
+
if (selectedIds.size >= 2) {
|
|
226
|
+
showNotification(`Tiling ${selectedIds.size} windows...`);
|
|
227
|
+
tileWindows(Array.from(selectedIds));
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
showNotification("Select 2+ sessions with Space first");
|
|
231
|
+
}
|
|
232
|
+
return;
|
|
233
|
+
}
|
|
234
|
+
// n — new session in same directory
|
|
235
|
+
if (input === "n") {
|
|
236
|
+
const item = items[currentItemIndex];
|
|
237
|
+
if (item?.kind === "session") {
|
|
238
|
+
const cwd = item.session.cwd || item.session.workspace?.project_dir;
|
|
239
|
+
if (cwd) {
|
|
240
|
+
showNotification("Launching new session...");
|
|
241
|
+
launchSession(cwd, skipPermissions || undefined);
|
|
242
|
+
}
|
|
243
|
+
}
|
|
244
|
+
return;
|
|
245
|
+
}
|
|
246
|
+
// a — select all sessions
|
|
247
|
+
if (input === "a") {
|
|
248
|
+
const allIds = new Set();
|
|
249
|
+
for (const item of items) {
|
|
250
|
+
if (item.kind === "session")
|
|
251
|
+
allIds.add(item.session.session_id);
|
|
252
|
+
}
|
|
253
|
+
setSelectedIds(allIds);
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
// d — toggle details (show/hide empty worktrees)
|
|
257
|
+
if (input === "d") {
|
|
258
|
+
setShowAllWorktrees((prev) => {
|
|
259
|
+
const next = !prev;
|
|
260
|
+
if (next) {
|
|
261
|
+
// Fetch worktrees for all git projects
|
|
262
|
+
for (const project of allProjects) {
|
|
263
|
+
if (project.gitRepoRoot) {
|
|
264
|
+
listWorktreesWs(project.gitRepoRoot);
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return next;
|
|
269
|
+
});
|
|
270
|
+
refreshWorktrees();
|
|
271
|
+
return;
|
|
272
|
+
}
|
|
273
|
+
// h — toggle help/shortcuts
|
|
274
|
+
if (input === "h") {
|
|
275
|
+
setShowHelp((prev) => !prev);
|
|
276
|
+
return;
|
|
277
|
+
}
|
|
278
|
+
// x — clear selection
|
|
279
|
+
if (input === "x") {
|
|
280
|
+
setSelectedIds(new Set());
|
|
281
|
+
return;
|
|
282
|
+
}
|
|
283
|
+
}, [
|
|
284
|
+
selectableIndices, items, currentItemIndex, selectedIds, selectedIndex,
|
|
285
|
+
returnToMain, focusTerminal, maximizeWindow, tileWindows, launchSession,
|
|
286
|
+
showNotification, isCreatingWorktree, newWorktreeName, creatingForRepoRoot,
|
|
287
|
+
repoRoot, refreshWorktrees, createWorktreeWs, removeWorktreeWs, listWorktreesWs, skipPermissions,
|
|
288
|
+
removingWorktreePath, removeForce, removeDeleteBranch, allProjects,
|
|
289
|
+
]);
|
|
290
|
+
const reset = useCallback(() => {
|
|
291
|
+
setSelectedIndex(0);
|
|
292
|
+
setSelectedIds(new Set());
|
|
293
|
+
setScrollBias(0);
|
|
294
|
+
setShowAllWorktrees(false);
|
|
295
|
+
setIsCreatingWorktree(false);
|
|
296
|
+
setNewWorktreeName("");
|
|
297
|
+
setWorktreeCreateError(null);
|
|
298
|
+
setCreatingForRepoRoot(null);
|
|
299
|
+
setRemovingWorktreePath(null);
|
|
300
|
+
setRemoveDeleteBranch(true);
|
|
301
|
+
setRemoveForce(false);
|
|
302
|
+
}, []);
|
|
303
|
+
return {
|
|
304
|
+
items,
|
|
305
|
+
selectableIndices,
|
|
306
|
+
selectedIndex,
|
|
307
|
+
selectedIds,
|
|
308
|
+
showHelp,
|
|
309
|
+
scrollBias,
|
|
310
|
+
isCreatingWorktree,
|
|
311
|
+
newWorktreeName,
|
|
312
|
+
worktreeCreateError,
|
|
313
|
+
creatingForRepoRoot,
|
|
314
|
+
isRemovingWorktree: removingWorktreePath !== null,
|
|
315
|
+
removeDeleteBranch,
|
|
316
|
+
removeForce,
|
|
317
|
+
handleInput,
|
|
318
|
+
reset,
|
|
319
|
+
};
|
|
320
|
+
}
|
|
321
|
+
//# sourceMappingURL=useSessionsExperiment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSessionsExperiment.js","sourceRoot":"","sources":["../../src/hooks/useSessionsExperiment.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKlE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AA2DvE,MAAM,UAAU,qBAAqB,CAAC,EACpC,QAAQ,EACR,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,eAAe,EACf,aAAa,EACb,cAAc,EACd,WAAW,EACX,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,GACa;IAC5B,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChE,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3D,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpF,MAAM,CAAC,mBAAmB,EAAE,sBAAsB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACpF,MAAM,CAAC,oBAAoB,EAAE,uBAAuB,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IACtF,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAEnE,8BAA8B;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAClC,IAAI,oBAAoB,CAAC,OAAO,EAAE,CAAC;YACjC,gBAAgB,CAAC,qBAAqB,oBAAoB,CAAC,MAAM,IAAI,eAAe,EAAE,CAAC,CAAC;YACxF,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7B,kBAAkB,CAAC,EAAE,CAAC,CAAC;YACvB,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;aAAM,CAAC;YACN,sBAAsB,CAAC,oBAAoB,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC;QACpF,CAAC;IACH,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,kDAAkD;IAE9E,8BAA8B;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,oBAAoB;YAAE,OAAO;QAClC,iEAAiE;QACjE,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAE3B,2DAA2D;IAC3D,MAAM,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE;QAClC,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YACnB,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB;gBAAE,OAAO,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,CAAC,UAAU,KAAK,gBAAgB;gBAAE,OAAO,CAAC,CAAC;YAChD,OAAO,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC;QAC3C,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEjC,wDAAwD;IACxD,MAAM,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QAChD,OAAO,iBAAiB,CAAC;YACvB,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,eAAe;YACvD,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB;YAC1D,QAAQ,EAAE,eAAe;SAC1B,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,cAAc,EAAE,SAAS,EAAE,gBAAgB,EAAE,QAAQ,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC,CAAC;IAErJ,wDAAwD;IACxD,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAEhE,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,KAAa,EAAE,GAAQ,EAAE,EAAE;QAC1D,sBAAsB;QACtB,IAAI,kBAAkB,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,qBAAqB,CAAC,KAAK,CAAC,CAAC;gBAC7B,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACvB,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC7B,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,eAAe,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;gBAC9D,IAAI,eAAe,EAAE,CAAC;oBACpB,sBAAsB,CAAC,eAAe,CAAC,CAAC;oBACxC,OAAO;gBACT,CAAC;gBACD,MAAM,UAAU,GAAG,mBAAmB,IAAI,QAAQ,CAAC;gBACnD,IAAI,UAAU,EAAE,CAAC;oBACf,gBAAgB,CAAC,UAAU,EAAE,eAAe,EAAE,SAAS,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;oBACvF,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;gBAC3C,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBAChC,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChD,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC1D,kBAAkB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC;gBAC3C,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC7B,OAAO;YACT,CAAC;YACD,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,IAAI,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAClC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAC9B,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC5B,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,OAAO;YACT,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;gBACrC,IAAI,IAAI,EAAE,IAAI,KAAK,yBAAyB,EAAE,CAAC;oBAC7C,IAAI,IAAI,CAAC,qBAAqB,IAAI,CAAC,WAAW,EAAE,CAAC;wBAC/C,gBAAgB,CAAC,oDAAoD,CAAC,CAAC;wBACvE,OAAO;oBACT,CAAC;oBACD,IAAI,QAAQ,EAAE,CAAC;wBACb,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,EAAE,kBAAkB,CAAC,CAAC;wBAC/E,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;oBAC3C,CAAC;gBACH,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACnC,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YACD,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;gBACnC,qBAAqB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;gBACvC,OAAO;YACT,CAAC;YACD,uEAAuE;YACvE,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;gBACjC,uBAAuB,CAAC,IAAI,CAAC,CAAC;gBAC9B,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC5B,cAAc,CAAC,KAAK,CAAC,CAAC;gBACtB,eAAe;YACjB,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,qBAAqB;YAC/B,CAAC;QACH,CAAC;QAED,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,YAAY,EAAE,CAAC;YACf,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;YAChB,IAAI,aAAa,GAAG,CAAC,EAAE,CAAC;gBACtB,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBACrC,aAAa,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,OAAO;QACT,CAAC;QAED,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,aAAa,GAAG,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjD,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;gBACrC,aAAa,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;iBAAM,CAAC;gBACN,aAAa,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,OAAO;QACT,CAAC;QAED,mCAAmC;QACnC,aAAa,CAAC,CAAC,CAAC,CAAC;QAEjB,mCAAmC;QACnC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACf,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,CAAC,IAAI;gBAAE,OAAO;YAClB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC5B,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;gBACzC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACzC,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBAC9C,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;gBAC7C,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;YACjE,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;gBAC/C,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC5B,kBAAkB,CAAC,EAAE,CAAC,CAAC;gBACvB,sBAAsB,CAAC,IAAI,CAAC,CAAC;gBAC7B,sBAAsB,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC;YACtD,CAAC;iBAAM,IAAI,IAAI,CAAC,IAAI,KAAK,wBAAwB,EAAE,CAAC;gBAClD,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC3C,qBAAqB,CAAC,IAAI,CAAC,CAAC;gBAC5B,cAAc,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC;YACD,OAAO;QACT,CAAC;QAED,8BAA8B;QAC9B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,cAAc,CAAC,CAAC,IAAI,EAAE,EAAE;oBACtB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;wBACtC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACvC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;oBACpC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC;YACD,OAAO;QACT,CAAC;QAED,eAAe;QACf,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,gBAAgB,CAAC,sBAAsB,CAAC,CAAC;gBACzC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC1C,CAAC;YACD,OAAO;QACT,CAAC;QAED,+BAA+B;QAC/B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,IAAI,WAAW,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC;gBAC1B,gBAAgB,CAAC,UAAU,WAAW,CAAC,IAAI,aAAa,CAAC,CAAC;gBAC1D,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;YACvC,CAAC;iBAAM,CAAC;gBACN,gBAAgB,CAAC,qCAAqC,CAAC,CAAC;YAC1D,CAAC;YACD,OAAO;QACT,CAAC;QAED,oCAAoC;QACpC,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,MAAM,IAAI,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;YACrC,IAAI,IAAI,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBAC7B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC;gBACpE,IAAI,GAAG,EAAE,CAAC;oBACR,gBAAgB,CAAC,0BAA0B,CAAC,CAAC;oBAC7C,aAAa,CAAC,GAAG,EAAE,eAAe,IAAI,SAAS,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YACD,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;YACjC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;oBAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YACnE,CAAC;YACD,cAAc,CAAC,MAAM,CAAC,CAAC;YACvB,OAAO;QACT,CAAC;QAED,iDAAiD;QACjD,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,mBAAmB,CAAC,CAAC,IAAI,EAAE,EAAE;gBAC3B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC;gBACnB,IAAI,IAAI,EAAE,CAAC;oBACT,uCAAuC;oBACvC,KAAK,MAAM,OAAO,IAAI,WAAW,EAAE,CAAC;wBAClC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;4BACxB,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;wBACvC,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YACH,gBAAgB,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,4BAA4B;QAC5B,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,WAAW,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAClB,cAAc,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAC1B,OAAO;QACT,CAAC;IACH,CAAC,EAAE;QACD,iBAAiB,EAAE,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa;QACtE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,WAAW,EAAE,aAAa;QACvE,gBAAgB,EAAE,kBAAkB,EAAE,eAAe,EAAE,mBAAmB;QAC1E,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe;QAChG,oBAAoB,EAAE,WAAW,EAAE,kBAAkB,EAAE,WAAW;KACnE,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACpB,cAAc,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QAC1B,aAAa,CAAC,CAAC,CAAC,CAAC;QACjB,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC3B,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC7B,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACvB,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,sBAAsB,CAAC,IAAI,CAAC,CAAC;QAC7B,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC9B,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC5B,cAAc,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO;QACL,KAAK;QACL,iBAAiB;QACjB,aAAa;QACb,WAAW;QACX,QAAQ;QACR,UAAU;QACV,kBAAkB;QAClB,eAAe;QACf,mBAAmB;QACnB,mBAAmB;QACnB,kBAAkB,EAAE,oBAAoB,KAAK,IAAI;QACjD,kBAAkB;QAClB,WAAW;QACX,WAAW;QACX,KAAK;KACN,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useSettings Hook
|
|
3
|
+
*
|
|
4
|
+
* Manages settings view state: navigation, auto-archive toggle,
|
|
5
|
+
* skip-permissions toggle, sync operations, archive stats loading,
|
|
6
|
+
* and Claude token input delegation.
|
|
7
|
+
*/
|
|
8
|
+
import type { Key } from "ink";
|
|
9
|
+
import type { DashboardView } from "../components/Dashboard.js";
|
|
10
|
+
import type { NotificationSettings } from "@jacques-ai/core/notifications";
|
|
11
|
+
import type { ArchiveStatsData } from "../components/SettingsView.js";
|
|
12
|
+
export interface ClaudeTokenActions {
|
|
13
|
+
isInputMode: boolean;
|
|
14
|
+
handleInput: (input: string, key: Key) => void;
|
|
15
|
+
connected: boolean;
|
|
16
|
+
disconnect: () => void;
|
|
17
|
+
enterInputMode: () => void;
|
|
18
|
+
}
|
|
19
|
+
export interface UseSettingsParams {
|
|
20
|
+
setCurrentView: (view: DashboardView) => void;
|
|
21
|
+
showNotification: (msg: string, duration?: number) => void;
|
|
22
|
+
returnToMain: () => void;
|
|
23
|
+
onInitArchive: (options: {
|
|
24
|
+
force: boolean;
|
|
25
|
+
}) => Promise<void>;
|
|
26
|
+
onBrowseArchive: () => void;
|
|
27
|
+
}
|
|
28
|
+
export interface UseSettingsState {
|
|
29
|
+
index: number;
|
|
30
|
+
scrollOffset: number;
|
|
31
|
+
autoArchiveEnabled: boolean;
|
|
32
|
+
skipPermissions: boolean;
|
|
33
|
+
syncProgress: string | null;
|
|
34
|
+
archiveStats: ArchiveStatsData | null;
|
|
35
|
+
archiveStatsLoading: boolean;
|
|
36
|
+
notificationSettings: NotificationSettings;
|
|
37
|
+
notificationsLoading: boolean;
|
|
38
|
+
}
|
|
39
|
+
export interface UseSettingsReturn {
|
|
40
|
+
state: UseSettingsState;
|
|
41
|
+
open: () => void;
|
|
42
|
+
reloadStats: () => void;
|
|
43
|
+
handleInput: (input: string, key: Key, claudeToken: ClaudeTokenActions) => void;
|
|
44
|
+
reset: () => void;
|
|
45
|
+
}
|
|
46
|
+
export declare function useSettings({ setCurrentView, showNotification, returnToMain, onInitArchive, onBrowseArchive, }: UseSettingsParams): UseSettingsReturn;
|
|
47
|
+
//# sourceMappingURL=useSettings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSettings.d.ts","sourceRoot":"","sources":["../../src/hooks/useSettings.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAC/B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAShE,OAAO,KAAK,EAAE,oBAAoB,EAAwB,MAAM,gCAAgC,CAAC;AAGjG,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC/C,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,cAAc,EAAE,MAAM,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,iBAAiB;IAChC,cAAc,EAAE,CAAC,IAAI,EAAE,aAAa,KAAK,IAAI,CAAC;IAC9C,gBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IAC3D,YAAY,EAAE,MAAM,IAAI,CAAC;IACzB,aAAa,EAAE,CAAC,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC9D,eAAe,EAAE,MAAM,IAAI,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACtC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,gBAAgB,CAAC;IACxB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,WAAW,EAAE,MAAM,IAAI,CAAC;IACxB,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,WAAW,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAChF,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAID,wBAAgB,WAAW,CAAC,EAC1B,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,aAAa,EACb,eAAe,GAChB,EAAE,iBAAiB,GAAG,iBAAiB,CA0OvC"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useSettings Hook
|
|
3
|
+
*
|
|
4
|
+
* Manages settings view state: navigation, auto-archive toggle,
|
|
5
|
+
* skip-permissions toggle, sync operations, archive stats loading,
|
|
6
|
+
* and Claude token input delegation.
|
|
7
|
+
*/
|
|
8
|
+
import { useState, useCallback } from "react";
|
|
9
|
+
import { getArchiveSettings, toggleAutoArchive, getArchiveStats, getArchivePath, getSkipPermissions, toggleSkipPermissions, } from "@jacques-ai/core";
|
|
10
|
+
import { DEFAULT_NOTIFICATION_SETTINGS } from "@jacques-ai/core/notifications";
|
|
11
|
+
import { SETTINGS_TOTAL_ITEMS, SETTINGS_DISABLED_INDICES } from "../components/SettingsView.js";
|
|
12
|
+
const API_BASE = "http://localhost:4243";
|
|
13
|
+
export function useSettings({ setCurrentView, showNotification, returnToMain, onInitArchive, onBrowseArchive, }) {
|
|
14
|
+
const [settingsIndex, setSettingsIndex] = useState(0);
|
|
15
|
+
const [settingsScrollOffset, setSettingsScrollOffset] = useState(0);
|
|
16
|
+
const [autoArchiveEnabled, setAutoArchiveEnabled] = useState(false);
|
|
17
|
+
const [skipPermissions, setSkipPermissions] = useState(getSkipPermissions());
|
|
18
|
+
const [syncProgress, setSyncProgress] = useState(null);
|
|
19
|
+
const [archiveStats, setArchiveStats] = useState(null);
|
|
20
|
+
const [archiveStatsLoading, setArchiveStatsLoading] = useState(false);
|
|
21
|
+
const [notificationSettings, setNotificationSettings] = useState(DEFAULT_NOTIFICATION_SETTINGS);
|
|
22
|
+
const [notificationsLoading, setNotificationsLoading] = useState(false);
|
|
23
|
+
const open = useCallback(() => {
|
|
24
|
+
const settings = getArchiveSettings();
|
|
25
|
+
setAutoArchiveEnabled(settings.autoArchive);
|
|
26
|
+
setSkipPermissions(getSkipPermissions());
|
|
27
|
+
setSettingsIndex(0);
|
|
28
|
+
setSettingsScrollOffset(0);
|
|
29
|
+
setCurrentView("settings");
|
|
30
|
+
// Load notification settings from server
|
|
31
|
+
setNotificationsLoading(true);
|
|
32
|
+
fetch(`${API_BASE}/api/notifications/settings`)
|
|
33
|
+
.then(res => res.ok ? res.json() : Promise.reject(new Error(`HTTP ${res.status}`)))
|
|
34
|
+
.then((settings) => {
|
|
35
|
+
setNotificationSettings(settings);
|
|
36
|
+
setNotificationsLoading(false);
|
|
37
|
+
})
|
|
38
|
+
.catch(() => {
|
|
39
|
+
setNotificationsLoading(false);
|
|
40
|
+
});
|
|
41
|
+
// Load archive stats asynchronously
|
|
42
|
+
setArchiveStatsLoading(true);
|
|
43
|
+
getArchiveStats().then((stats) => {
|
|
44
|
+
setArchiveStats({
|
|
45
|
+
totalConversations: stats.totalConversations,
|
|
46
|
+
totalProjects: stats.totalProjects,
|
|
47
|
+
totalSize: stats.sizeFormatted,
|
|
48
|
+
archivePath: getArchivePath(),
|
|
49
|
+
});
|
|
50
|
+
setArchiveStatsLoading(false);
|
|
51
|
+
}).catch(() => {
|
|
52
|
+
setArchiveStats(null);
|
|
53
|
+
setArchiveStatsLoading(false);
|
|
54
|
+
});
|
|
55
|
+
}, [setCurrentView]);
|
|
56
|
+
const reloadStats = useCallback(() => {
|
|
57
|
+
getArchiveStats().then((stats) => {
|
|
58
|
+
setArchiveStats({
|
|
59
|
+
totalConversations: stats.totalConversations,
|
|
60
|
+
totalProjects: stats.totalProjects,
|
|
61
|
+
totalSize: stats.sizeFormatted,
|
|
62
|
+
archivePath: getArchivePath(),
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
}, []);
|
|
66
|
+
// Sync via SSE
|
|
67
|
+
const startSync = useCallback((force) => {
|
|
68
|
+
setSyncProgress("Starting sync...");
|
|
69
|
+
const url = `${API_BASE}/api/sync${force ? "?force=true" : ""}`;
|
|
70
|
+
fetch(url, { method: "POST" })
|
|
71
|
+
.then(async (res) => {
|
|
72
|
+
if (!res.ok)
|
|
73
|
+
throw new Error(`HTTP ${res.status}`);
|
|
74
|
+
if (!res.body) {
|
|
75
|
+
setSyncProgress(null);
|
|
76
|
+
showNotification("Sync complete");
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
const reader = res.body.getReader();
|
|
80
|
+
const decoder = new TextDecoder();
|
|
81
|
+
let buffer = "";
|
|
82
|
+
while (true) {
|
|
83
|
+
const { done, value } = await reader.read();
|
|
84
|
+
if (done)
|
|
85
|
+
break;
|
|
86
|
+
buffer += decoder.decode(value, { stream: true });
|
|
87
|
+
// Parse SSE lines
|
|
88
|
+
const lines = buffer.split("\n");
|
|
89
|
+
buffer = lines.pop() || "";
|
|
90
|
+
for (const line of lines) {
|
|
91
|
+
if (line.startsWith("data: ")) {
|
|
92
|
+
try {
|
|
93
|
+
const data = JSON.parse(line.slice(6));
|
|
94
|
+
if (data.type === "progress") {
|
|
95
|
+
setSyncProgress(`Extracting: ${data.current}/${data.total}...`);
|
|
96
|
+
}
|
|
97
|
+
else if (data.type === "complete") {
|
|
98
|
+
setSyncProgress(null);
|
|
99
|
+
showNotification(`Sync complete: ${data.extracted || 0} extracted`);
|
|
100
|
+
reloadStats();
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
catch {
|
|
104
|
+
// Skip malformed lines
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
setSyncProgress(null);
|
|
110
|
+
})
|
|
111
|
+
.catch((err) => {
|
|
112
|
+
setSyncProgress(null);
|
|
113
|
+
showNotification(`!Sync failed: ${err instanceof Error ? err.message : "unknown"}`);
|
|
114
|
+
});
|
|
115
|
+
}, [showNotification, reloadStats]);
|
|
116
|
+
const handleInput = useCallback((input, key, claudeToken) => {
|
|
117
|
+
if (claudeToken.isInputMode) {
|
|
118
|
+
claudeToken.handleInput(input, key);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (key.escape) {
|
|
122
|
+
returnToMain();
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// Row positions for scrolling (approximate row in contentLines for each selectable item)
|
|
126
|
+
// 0-5: existing items, 6: master toggle, 7-12: category toggles (8,12 disabled)
|
|
127
|
+
const SETTINGS_ROW_MAP = [4, 8, 9, 12, 13, 16, 19, 20, 21, 22, 23, 24, 25];
|
|
128
|
+
const VISIBLE_HEIGHT = 10;
|
|
129
|
+
const TOTAL_CONTENT_LINES = 27;
|
|
130
|
+
if (key.upArrow) {
|
|
131
|
+
let newIndex = settingsIndex - 1;
|
|
132
|
+
while (newIndex >= 0 && SETTINGS_DISABLED_INDICES.has(newIndex))
|
|
133
|
+
newIndex--;
|
|
134
|
+
newIndex = Math.max(0, newIndex);
|
|
135
|
+
setSettingsIndex(newIndex);
|
|
136
|
+
if (newIndex === 0) {
|
|
137
|
+
setSettingsScrollOffset(0);
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const targetRow = SETTINGS_ROW_MAP[newIndex];
|
|
141
|
+
if (targetRow < settingsScrollOffset + 2) {
|
|
142
|
+
setSettingsScrollOffset(Math.max(0, targetRow - 2));
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
if (key.downArrow) {
|
|
148
|
+
let newIndex = settingsIndex + 1;
|
|
149
|
+
while (newIndex < SETTINGS_TOTAL_ITEMS && SETTINGS_DISABLED_INDICES.has(newIndex))
|
|
150
|
+
newIndex++;
|
|
151
|
+
newIndex = Math.min(SETTINGS_TOTAL_ITEMS - 1, newIndex);
|
|
152
|
+
setSettingsIndex(newIndex);
|
|
153
|
+
const targetRow = SETTINGS_ROW_MAP[newIndex];
|
|
154
|
+
if (targetRow >= settingsScrollOffset + VISIBLE_HEIGHT - 2) {
|
|
155
|
+
const maxScroll = Math.max(0, TOTAL_CONTENT_LINES - VISIBLE_HEIGHT);
|
|
156
|
+
setSettingsScrollOffset(Math.min(maxScroll, targetRow - VISIBLE_HEIGHT + 4));
|
|
157
|
+
}
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (key.return || input === " ") {
|
|
161
|
+
if (settingsIndex === 0) {
|
|
162
|
+
if (claudeToken.connected) {
|
|
163
|
+
claudeToken.disconnect();
|
|
164
|
+
showNotification("Claude disconnected");
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
claudeToken.enterInputMode();
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
else if (settingsIndex === 1) {
|
|
171
|
+
const newValue = toggleAutoArchive();
|
|
172
|
+
setAutoArchiveEnabled(newValue);
|
|
173
|
+
}
|
|
174
|
+
else if (settingsIndex === 2) {
|
|
175
|
+
const newValue = toggleSkipPermissions();
|
|
176
|
+
setSkipPermissions(newValue);
|
|
177
|
+
}
|
|
178
|
+
else if (settingsIndex === 3) {
|
|
179
|
+
startSync(false);
|
|
180
|
+
}
|
|
181
|
+
else if (settingsIndex === 4) {
|
|
182
|
+
startSync(true);
|
|
183
|
+
}
|
|
184
|
+
else if (settingsIndex === 5) {
|
|
185
|
+
onBrowseArchive();
|
|
186
|
+
}
|
|
187
|
+
else if (settingsIndex === 6) {
|
|
188
|
+
// Master notifications toggle
|
|
189
|
+
const newEnabled = !notificationSettings.enabled;
|
|
190
|
+
setNotificationSettings(prev => ({ ...prev, enabled: newEnabled }));
|
|
191
|
+
fetch(`${API_BASE}/api/notifications/settings`, {
|
|
192
|
+
method: "PUT",
|
|
193
|
+
headers: { "Content-Type": "application/json" },
|
|
194
|
+
body: JSON.stringify({ enabled: newEnabled }),
|
|
195
|
+
}).catch(() => {
|
|
196
|
+
setNotificationSettings(prev => ({ ...prev, enabled: !newEnabled }));
|
|
197
|
+
showNotification("!Failed to update notifications");
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
else if (settingsIndex >= 7 && settingsIndex <= 12 && !SETTINGS_DISABLED_INDICES.has(settingsIndex)) {
|
|
201
|
+
// Category toggles
|
|
202
|
+
const categories = ["context", "operation", "plan", "auto-compact", "handoff", "bug-alert"];
|
|
203
|
+
const cat = categories[settingsIndex - 7];
|
|
204
|
+
const newValue = !notificationSettings.categories[cat];
|
|
205
|
+
const newCategories = { ...notificationSettings.categories, [cat]: newValue };
|
|
206
|
+
setNotificationSettings(prev => ({ ...prev, categories: newCategories }));
|
|
207
|
+
fetch(`${API_BASE}/api/notifications/settings`, {
|
|
208
|
+
method: "PUT",
|
|
209
|
+
headers: { "Content-Type": "application/json" },
|
|
210
|
+
body: JSON.stringify({ categories: newCategories }),
|
|
211
|
+
}).catch(() => {
|
|
212
|
+
setNotificationSettings(prev => ({
|
|
213
|
+
...prev,
|
|
214
|
+
categories: { ...prev.categories, [cat]: !newValue },
|
|
215
|
+
}));
|
|
216
|
+
showNotification("!Failed to update category");
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
}, [settingsIndex, settingsScrollOffset, returnToMain, showNotification, onBrowseArchive, startSync, notificationSettings]);
|
|
222
|
+
const reset = useCallback(() => {
|
|
223
|
+
setSettingsIndex(0);
|
|
224
|
+
setSettingsScrollOffset(0);
|
|
225
|
+
setSyncProgress(null);
|
|
226
|
+
}, []);
|
|
227
|
+
return {
|
|
228
|
+
state: {
|
|
229
|
+
index: settingsIndex,
|
|
230
|
+
scrollOffset: settingsScrollOffset,
|
|
231
|
+
autoArchiveEnabled,
|
|
232
|
+
skipPermissions,
|
|
233
|
+
syncProgress,
|
|
234
|
+
archiveStats,
|
|
235
|
+
archiveStatsLoading,
|
|
236
|
+
notificationSettings,
|
|
237
|
+
notificationsLoading,
|
|
238
|
+
},
|
|
239
|
+
open,
|
|
240
|
+
reloadStats,
|
|
241
|
+
handleInput,
|
|
242
|
+
reset,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=useSettings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useSettings.js","sourceRoot":"","sources":["../../src/hooks/useSettings.ts"],"names":[],"mappings":"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"}
|