@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,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useUsageLimits Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests usage data processing and dot visualization logic.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect } from "@jest/globals";
|
|
7
|
+
import { SUCCESS_COLOR, WARNING_COLOR, ERROR_COLOR } from "../components/layout/theme.js";
|
|
8
|
+
function makeUsagePeriod(overrides = {}) {
|
|
9
|
+
return {
|
|
10
|
+
label: "current",
|
|
11
|
+
used: 50,
|
|
12
|
+
total: 100,
|
|
13
|
+
percentage: 50,
|
|
14
|
+
resetsAt: "2026-02-09T15:00:00Z",
|
|
15
|
+
...overrides,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
describe("usage data mapping", () => {
|
|
19
|
+
it("maps API response to UsageLimits", () => {
|
|
20
|
+
const data = {
|
|
21
|
+
current: { label: "current", used: 42, total: 100, percentage: 42, resetsAt: "3:42pm" },
|
|
22
|
+
weekly: { label: "weekly", used: 18, total: 100, percentage: 18, resetsAt: "feb 14" },
|
|
23
|
+
};
|
|
24
|
+
const limits = {
|
|
25
|
+
current: data.current || null,
|
|
26
|
+
weekly: data.weekly || null,
|
|
27
|
+
};
|
|
28
|
+
expect(limits.current).not.toBeNull();
|
|
29
|
+
expect(limits.current?.percentage).toBe(42);
|
|
30
|
+
expect(limits.weekly?.percentage).toBe(18);
|
|
31
|
+
});
|
|
32
|
+
it("handles missing current period", () => {
|
|
33
|
+
const data = {
|
|
34
|
+
weekly: makeUsagePeriod({ label: "weekly", percentage: 20 }),
|
|
35
|
+
};
|
|
36
|
+
const limits = {
|
|
37
|
+
current: data.current || null,
|
|
38
|
+
weekly: data.weekly || null,
|
|
39
|
+
};
|
|
40
|
+
expect(limits.current).toBeNull();
|
|
41
|
+
expect(limits.weekly).not.toBeNull();
|
|
42
|
+
});
|
|
43
|
+
it("handles missing weekly period", () => {
|
|
44
|
+
const data = {
|
|
45
|
+
current: makeUsagePeriod({ label: "current", percentage: 60 }),
|
|
46
|
+
};
|
|
47
|
+
const limits = {
|
|
48
|
+
current: data.current || null,
|
|
49
|
+
weekly: data.weekly || null,
|
|
50
|
+
};
|
|
51
|
+
expect(limits.current).not.toBeNull();
|
|
52
|
+
expect(limits.weekly).toBeNull();
|
|
53
|
+
});
|
|
54
|
+
it("handles both periods missing", () => {
|
|
55
|
+
const data = {};
|
|
56
|
+
const limits = {
|
|
57
|
+
current: data.current || null,
|
|
58
|
+
weekly: data.weekly || null,
|
|
59
|
+
};
|
|
60
|
+
expect(limits.current).toBeNull();
|
|
61
|
+
expect(limits.weekly).toBeNull();
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
describe("usage dot visualization logic", () => {
|
|
65
|
+
const TOTAL_DOTS = 10;
|
|
66
|
+
function renderUsageDots(percentage) {
|
|
67
|
+
const filled = Math.round((percentage / 100) * TOTAL_DOTS);
|
|
68
|
+
const empty = TOTAL_DOTS - filled;
|
|
69
|
+
const color = percentage >= 80 ? ERROR_COLOR : percentage >= 50 ? WARNING_COLOR : SUCCESS_COLOR;
|
|
70
|
+
return { filled, empty, color };
|
|
71
|
+
}
|
|
72
|
+
it("renders 0% as all empty dots", () => {
|
|
73
|
+
const result = renderUsageDots(0);
|
|
74
|
+
expect(result.filled).toBe(0);
|
|
75
|
+
expect(result.empty).toBe(10);
|
|
76
|
+
expect(result.color).toBe(SUCCESS_COLOR);
|
|
77
|
+
});
|
|
78
|
+
it("renders 50% as 5 filled, 5 empty, yellow", () => {
|
|
79
|
+
const result = renderUsageDots(50);
|
|
80
|
+
expect(result.filled).toBe(5);
|
|
81
|
+
expect(result.empty).toBe(5);
|
|
82
|
+
expect(result.color).toBe(WARNING_COLOR);
|
|
83
|
+
});
|
|
84
|
+
it("renders 80% as 8 filled, 2 empty, red", () => {
|
|
85
|
+
const result = renderUsageDots(80);
|
|
86
|
+
expect(result.filled).toBe(8);
|
|
87
|
+
expect(result.empty).toBe(2);
|
|
88
|
+
expect(result.color).toBe(ERROR_COLOR);
|
|
89
|
+
});
|
|
90
|
+
it("renders 100% as all filled dots, red", () => {
|
|
91
|
+
const result = renderUsageDots(100);
|
|
92
|
+
expect(result.filled).toBe(10);
|
|
93
|
+
expect(result.empty).toBe(0);
|
|
94
|
+
expect(result.color).toBe(ERROR_COLOR);
|
|
95
|
+
});
|
|
96
|
+
it("renders 25% as green", () => {
|
|
97
|
+
const result = renderUsageDots(25);
|
|
98
|
+
expect(result.color).toBe(SUCCESS_COLOR);
|
|
99
|
+
});
|
|
100
|
+
it("renders 49% as green", () => {
|
|
101
|
+
const result = renderUsageDots(49);
|
|
102
|
+
expect(result.color).toBe(SUCCESS_COLOR);
|
|
103
|
+
});
|
|
104
|
+
it("renders 79% as yellow", () => {
|
|
105
|
+
const result = renderUsageDots(79);
|
|
106
|
+
expect(result.color).toBe(WARNING_COLOR);
|
|
107
|
+
});
|
|
108
|
+
it("rounds dot count correctly for 33%", () => {
|
|
109
|
+
const result = renderUsageDots(33);
|
|
110
|
+
expect(result.filled).toBe(3);
|
|
111
|
+
expect(result.empty).toBe(7);
|
|
112
|
+
});
|
|
113
|
+
it("rounds dot count correctly for 67%", () => {
|
|
114
|
+
const result = renderUsageDots(67);
|
|
115
|
+
expect(result.filled).toBe(7);
|
|
116
|
+
expect(result.empty).toBe(3);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
describe("usage period validation", () => {
|
|
120
|
+
it("validates percentage is between 0 and 100", () => {
|
|
121
|
+
const period = makeUsagePeriod({ percentage: 42 });
|
|
122
|
+
expect(period.percentage).toBeGreaterThanOrEqual(0);
|
|
123
|
+
expect(period.percentage).toBeLessThanOrEqual(100);
|
|
124
|
+
});
|
|
125
|
+
it("validates used does not exceed total", () => {
|
|
126
|
+
const period = makeUsagePeriod({ used: 50, total: 100 });
|
|
127
|
+
expect(period.used).toBeLessThanOrEqual(period.total);
|
|
128
|
+
});
|
|
129
|
+
it("calculates percentage from used/total", () => {
|
|
130
|
+
const used = 75;
|
|
131
|
+
const total = 200;
|
|
132
|
+
const percentage = Math.round((used / total) * 100);
|
|
133
|
+
expect(percentage).toBe(38);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
//# sourceMappingURL=useUsageLimits.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useUsageLimits.test.js","sourceRoot":"","sources":["../../src/hooks/useUsageLimits.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useWorktrees Hook
|
|
3
|
+
*
|
|
4
|
+
* Data provider for worktree list. Fetches worktrees via WebSocket
|
|
5
|
+
* and enriches with session counts. Used by useSessionsExperiment.
|
|
6
|
+
*/
|
|
7
|
+
import type { WorktreeWithStatus } from "@jacques-ai/core";
|
|
8
|
+
import type { ListWorktreesResult } from "./useJacquesClient.js";
|
|
9
|
+
export interface WorktreeItem extends WorktreeWithStatus {
|
|
10
|
+
sessionCount: number;
|
|
11
|
+
}
|
|
12
|
+
export interface UseWorktreesParams {
|
|
13
|
+
listWorktreesWs: (repoRoot: string) => void;
|
|
14
|
+
listWorktreesResult: ListWorktreesResult | null;
|
|
15
|
+
sessions: Array<{
|
|
16
|
+
cwd?: string;
|
|
17
|
+
git_worktree?: string;
|
|
18
|
+
}>;
|
|
19
|
+
}
|
|
20
|
+
export interface UseWorktreesReturn {
|
|
21
|
+
worktrees: WorktreeItem[];
|
|
22
|
+
repoRoot: string | null;
|
|
23
|
+
open: (repoRoot: string | null) => void;
|
|
24
|
+
reset: () => void;
|
|
25
|
+
}
|
|
26
|
+
export declare function validateWorktreeName(name: string): string | null;
|
|
27
|
+
export declare function useWorktrees({ listWorktreesWs, listWorktreesResult, sessions, }: UseWorktreesParams): UseWorktreesReturn;
|
|
28
|
+
//# sourceMappingURL=useWorktrees.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWorktrees.d.ts","sourceRoot":"","sources":["../../src/hooks/useWorktrees.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,MAAM,WAAW,YAAa,SAAQ,kBAAkB;IACtD,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,eAAe,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAC5C,mBAAmB,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAChD,QAAQ,EAAE,KAAK,CAAC;QAAE,GAAG,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1D;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,IAAI,EAAE,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IACxC,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKhE;AAED,wBAAgB,YAAY,CAAC,EAC3B,eAAe,EACf,mBAAmB,EACnB,QAAQ,GACT,EAAE,kBAAkB,GAAG,kBAAkB,CAyCzC"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useWorktrees Hook
|
|
3
|
+
*
|
|
4
|
+
* Data provider for worktree list. Fetches worktrees via WebSocket
|
|
5
|
+
* and enriches with session counts. Used by useSessionsExperiment.
|
|
6
|
+
*/
|
|
7
|
+
import { useState, useCallback, useEffect } from "react";
|
|
8
|
+
export function validateWorktreeName(name) {
|
|
9
|
+
if (!name)
|
|
10
|
+
return "Name cannot be empty";
|
|
11
|
+
if (!/^[a-zA-Z0-9_-]+$/.test(name))
|
|
12
|
+
return "Only letters, numbers, hyphens, underscores";
|
|
13
|
+
if (name.length > 50)
|
|
14
|
+
return "Name too long (max 50 chars)";
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
export function useWorktrees({ listWorktreesWs, listWorktreesResult, sessions, }) {
|
|
18
|
+
const [worktrees, setWorktrees] = useState([]);
|
|
19
|
+
const [repoRoot, setRepoRoot] = useState(null);
|
|
20
|
+
// Handle list_worktrees_result
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
if (!listWorktreesResult)
|
|
23
|
+
return;
|
|
24
|
+
// Only process results for our own repo (ignore other projects' results)
|
|
25
|
+
if (listWorktreesResult.repoRoot && repoRoot && listWorktreesResult.repoRoot !== repoRoot)
|
|
26
|
+
return;
|
|
27
|
+
if (listWorktreesResult.success && listWorktreesResult.worktrees) {
|
|
28
|
+
const items = listWorktreesResult.worktrees.map((wt) => {
|
|
29
|
+
const count = sessions.filter((s) => (s.cwd && (s.cwd === wt.path || s.cwd.startsWith(wt.path + '/'))) || s.git_worktree === wt.name).length;
|
|
30
|
+
return { ...wt, sessionCount: count };
|
|
31
|
+
});
|
|
32
|
+
// Main worktree first, then alphabetical
|
|
33
|
+
items.sort((a, b) => {
|
|
34
|
+
if (a.isMain && !b.isMain)
|
|
35
|
+
return -1;
|
|
36
|
+
if (!a.isMain && b.isMain)
|
|
37
|
+
return 1;
|
|
38
|
+
return a.name.localeCompare(b.name);
|
|
39
|
+
});
|
|
40
|
+
setWorktrees(items);
|
|
41
|
+
}
|
|
42
|
+
}, [listWorktreesResult, sessions]);
|
|
43
|
+
const open = useCallback((root) => {
|
|
44
|
+
if (!root) {
|
|
45
|
+
setRepoRoot(null);
|
|
46
|
+
setWorktrees([]);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
setRepoRoot(root);
|
|
50
|
+
listWorktreesWs(root);
|
|
51
|
+
}, [listWorktreesWs]);
|
|
52
|
+
const reset = useCallback(() => {
|
|
53
|
+
// No-op — keep worktree data across view transitions
|
|
54
|
+
}, []);
|
|
55
|
+
return { worktrees, repoRoot, open, reset };
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=useWorktrees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWorktrees.js","sourceRoot":"","sources":["../../src/hooks/useWorktrees.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAqBzD,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,sBAAsB,CAAC;IACzC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,6CAA6C,CAAC;IACzF,IAAI,IAAI,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,8BAA8B,CAAC;IAC5D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,eAAe,EACf,mBAAmB,EACnB,QAAQ,GACW;IACnB,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAiB,EAAE,CAAC,CAAC;IAC/D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAE9D,+BAA+B;IAC/B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,mBAAmB;YAAE,OAAO;QACjC,yEAAyE;QACzE,IAAI,mBAAmB,CAAC,QAAQ,IAAI,QAAQ,IAAI,mBAAmB,CAAC,QAAQ,KAAK,QAAQ;YAAE,OAAO;QAClG,IAAI,mBAAmB,CAAC,OAAO,IAAI,mBAAmB,CAAC,SAAS,EAAE,CAAC;YACjE,MAAM,KAAK,GAAmB,mBAAmB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;gBACrE,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAC3B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,KAAK,EAAE,CAAC,IAAI,CACvG,CAAC,MAAM,CAAC;gBACT,OAAO,EAAE,GAAG,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;YACH,yCAAyC;YACzC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,MAAM;oBAAE,OAAO,CAAC,CAAC,CAAC;gBACrC,IAAI,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM;oBAAE,OAAO,CAAC,CAAC;gBACpC,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YACH,YAAY,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,CAAC,EAAE,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEpC,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,IAAmB,EAAE,EAAE;QAC/C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,WAAW,CAAC,IAAI,CAAC,CAAC;YAClB,YAAY,CAAC,EAAE,CAAC,CAAC;YACjB,OAAO;QACT,CAAC;QACD,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;QAC7B,qDAAqD;IACvD,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWorktrees.test.d.ts","sourceRoot":"","sources":["../../src/hooks/useWorktrees.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* useWorktrees Tests
|
|
3
|
+
*
|
|
4
|
+
* Tests validateWorktreeName and worktree data processing logic.
|
|
5
|
+
*/
|
|
6
|
+
import { describe, it, expect } from "@jest/globals";
|
|
7
|
+
import { validateWorktreeName } from "./useWorktrees.js";
|
|
8
|
+
describe("validateWorktreeName", () => {
|
|
9
|
+
it("returns null for valid name with letters", () => {
|
|
10
|
+
expect(validateWorktreeName("feature")).toBeNull();
|
|
11
|
+
});
|
|
12
|
+
it("returns null for valid name with hyphens", () => {
|
|
13
|
+
expect(validateWorktreeName("my-feature")).toBeNull();
|
|
14
|
+
});
|
|
15
|
+
it("returns null for valid name with underscores", () => {
|
|
16
|
+
expect(validateWorktreeName("my_feature")).toBeNull();
|
|
17
|
+
});
|
|
18
|
+
it("returns null for valid name with numbers", () => {
|
|
19
|
+
expect(validateWorktreeName("feature123")).toBeNull();
|
|
20
|
+
});
|
|
21
|
+
it("returns null for valid mixed name", () => {
|
|
22
|
+
expect(validateWorktreeName("cli-worktrees_v2")).toBeNull();
|
|
23
|
+
});
|
|
24
|
+
it("rejects empty string", () => {
|
|
25
|
+
const result = validateWorktreeName("");
|
|
26
|
+
expect(result).toBe("Name cannot be empty");
|
|
27
|
+
});
|
|
28
|
+
it("rejects names with spaces", () => {
|
|
29
|
+
const result = validateWorktreeName("my feature");
|
|
30
|
+
expect(result).toBe("Only letters, numbers, hyphens, underscores");
|
|
31
|
+
});
|
|
32
|
+
it("rejects names with dots", () => {
|
|
33
|
+
const result = validateWorktreeName("my.feature");
|
|
34
|
+
expect(result).toBe("Only letters, numbers, hyphens, underscores");
|
|
35
|
+
});
|
|
36
|
+
it("rejects names with slashes", () => {
|
|
37
|
+
const result = validateWorktreeName("feature/branch");
|
|
38
|
+
expect(result).toBe("Only letters, numbers, hyphens, underscores");
|
|
39
|
+
});
|
|
40
|
+
it("rejects names with special characters", () => {
|
|
41
|
+
const result = validateWorktreeName("feat@#$");
|
|
42
|
+
expect(result).toBe("Only letters, numbers, hyphens, underscores");
|
|
43
|
+
});
|
|
44
|
+
it("rejects names longer than 50 characters", () => {
|
|
45
|
+
const longName = "a".repeat(51);
|
|
46
|
+
const result = validateWorktreeName(longName);
|
|
47
|
+
expect(result).toBe("Name too long (max 50 chars)");
|
|
48
|
+
});
|
|
49
|
+
it("accepts names exactly 50 characters long", () => {
|
|
50
|
+
const name = "a".repeat(50);
|
|
51
|
+
expect(validateWorktreeName(name)).toBeNull();
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
describe("worktree sorting logic", () => {
|
|
55
|
+
it("sorts main worktree first", () => {
|
|
56
|
+
const items = [
|
|
57
|
+
{ name: "beta", isMain: false },
|
|
58
|
+
{ name: "alpha", isMain: false },
|
|
59
|
+
{ name: "main", isMain: true },
|
|
60
|
+
];
|
|
61
|
+
items.sort((a, b) => {
|
|
62
|
+
if (a.isMain && !b.isMain)
|
|
63
|
+
return -1;
|
|
64
|
+
if (!a.isMain && b.isMain)
|
|
65
|
+
return 1;
|
|
66
|
+
return a.name.localeCompare(b.name);
|
|
67
|
+
});
|
|
68
|
+
expect(items[0].name).toBe("main");
|
|
69
|
+
expect(items[1].name).toBe("alpha");
|
|
70
|
+
expect(items[2].name).toBe("beta");
|
|
71
|
+
});
|
|
72
|
+
it("sorts non-main worktrees alphabetically", () => {
|
|
73
|
+
const items = [
|
|
74
|
+
{ name: "cli-worktrees", isMain: false },
|
|
75
|
+
{ name: "auth-feature", isMain: false },
|
|
76
|
+
{ name: "dashboard", isMain: false },
|
|
77
|
+
];
|
|
78
|
+
items.sort((a, b) => {
|
|
79
|
+
if (a.isMain && !b.isMain)
|
|
80
|
+
return -1;
|
|
81
|
+
if (!a.isMain && b.isMain)
|
|
82
|
+
return 1;
|
|
83
|
+
return a.name.localeCompare(b.name);
|
|
84
|
+
});
|
|
85
|
+
expect(items[0].name).toBe("auth-feature");
|
|
86
|
+
expect(items[1].name).toBe("cli-worktrees");
|
|
87
|
+
expect(items[2].name).toBe("dashboard");
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
describe("worktree session counting logic", () => {
|
|
91
|
+
it("counts sessions matching worktree path", () => {
|
|
92
|
+
const sessions = [
|
|
93
|
+
{ cwd: "/repo/worktrees/feature/src", git_worktree: undefined },
|
|
94
|
+
{ cwd: "/repo/worktrees/feature", git_worktree: undefined },
|
|
95
|
+
{ cwd: "/repo/main", git_worktree: undefined },
|
|
96
|
+
];
|
|
97
|
+
const wtPath = "/repo/worktrees/feature";
|
|
98
|
+
const count = sessions.filter((s) => s.cwd?.startsWith(wtPath) || s.git_worktree === "feature").length;
|
|
99
|
+
expect(count).toBe(2);
|
|
100
|
+
});
|
|
101
|
+
it("counts sessions matching worktree name", () => {
|
|
102
|
+
const sessions = [
|
|
103
|
+
{ cwd: "/other/path", git_worktree: "feature" },
|
|
104
|
+
{ cwd: "/another/path", git_worktree: "main" },
|
|
105
|
+
];
|
|
106
|
+
const wtPath = "/repo/worktrees/feature";
|
|
107
|
+
const count = sessions.filter((s) => s.cwd?.startsWith(wtPath) || s.git_worktree === "feature").length;
|
|
108
|
+
expect(count).toBe(1);
|
|
109
|
+
});
|
|
110
|
+
it("returns zero when no sessions match", () => {
|
|
111
|
+
const sessions = [
|
|
112
|
+
{ cwd: "/other/path", git_worktree: "main" },
|
|
113
|
+
];
|
|
114
|
+
const wtPath = "/repo/worktrees/feature";
|
|
115
|
+
const count = sessions.filter((s) => s.cwd?.startsWith(wtPath) || s.git_worktree === "feature").length;
|
|
116
|
+
expect(count).toBe(0);
|
|
117
|
+
});
|
|
118
|
+
});
|
|
119
|
+
//# sourceMappingURL=useWorktrees.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useWorktrees.test.js","sourceRoot":"","sources":["../../src/hooks/useWorktrees.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compact Prompt Template
|
|
3
|
+
*
|
|
4
|
+
* The prompt to give to Claude to create a handoff document
|
|
5
|
+
* before context is automatically compacted.
|
|
6
|
+
*/
|
|
7
|
+
export declare const COMPACT_PROMPT = "Please create a comprehensive handoff document for continuing this work in a new session. \nSave it to `.jacques-handoff.md` in the project root.\n\nStructure it as follows:\n\n## Current Task\n[What we're working on and the end goal]\n\n## Progress Made\n[Bullet points of what's been accomplished]\n\n## Key Decisions\n[Important choices made and reasoning]\n\n## Current State\n[Exactly where we left off, any in-progress work]\n\n## Next Steps\n[Prioritized list of what needs to be done next]\n\n## Important Files\n[List of files that were modified or are critical to understand]\n- path/to/file.ts - description of changes/relevance\n\n## Essential Context\n[Any background info, constraints, or gotchas the next session needs to know]\n\nKeep it focused and actionable - this will be my starting context in a fresh session.";
|
|
8
|
+
/**
|
|
9
|
+
* Get the handoff file path for a given session working directory
|
|
10
|
+
*/
|
|
11
|
+
export declare function getHandoffPath(cwd: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Get a formatted version of the prompt for display
|
|
14
|
+
*/
|
|
15
|
+
export declare function getCompactPromptDisplay(): string;
|
|
16
|
+
//# sourceMappingURL=compact-prompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-prompt.d.ts","sourceRoot":"","sources":["../../src/templates/compact-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,eAAO,MAAM,cAAc,o0BA2B2D,CAAC;AAEvF;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAElD;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAEhD"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compact Prompt Template
|
|
3
|
+
*
|
|
4
|
+
* The prompt to give to Claude to create a handoff document
|
|
5
|
+
* before context is automatically compacted.
|
|
6
|
+
*/
|
|
7
|
+
export const COMPACT_PROMPT = `Please create a comprehensive handoff document for continuing this work in a new session.
|
|
8
|
+
Save it to \`.jacques-handoff.md\` in the project root.
|
|
9
|
+
|
|
10
|
+
Structure it as follows:
|
|
11
|
+
|
|
12
|
+
## Current Task
|
|
13
|
+
[What we're working on and the end goal]
|
|
14
|
+
|
|
15
|
+
## Progress Made
|
|
16
|
+
[Bullet points of what's been accomplished]
|
|
17
|
+
|
|
18
|
+
## Key Decisions
|
|
19
|
+
[Important choices made and reasoning]
|
|
20
|
+
|
|
21
|
+
## Current State
|
|
22
|
+
[Exactly where we left off, any in-progress work]
|
|
23
|
+
|
|
24
|
+
## Next Steps
|
|
25
|
+
[Prioritized list of what needs to be done next]
|
|
26
|
+
|
|
27
|
+
## Important Files
|
|
28
|
+
[List of files that were modified or are critical to understand]
|
|
29
|
+
- path/to/file.ts - description of changes/relevance
|
|
30
|
+
|
|
31
|
+
## Essential Context
|
|
32
|
+
[Any background info, constraints, or gotchas the next session needs to know]
|
|
33
|
+
|
|
34
|
+
Keep it focused and actionable - this will be my starting context in a fresh session.`;
|
|
35
|
+
/**
|
|
36
|
+
* Get the handoff file path for a given session working directory
|
|
37
|
+
*/
|
|
38
|
+
export function getHandoffPath(cwd) {
|
|
39
|
+
return `${cwd}/.jacques-handoff.md`;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Get a formatted version of the prompt for display
|
|
43
|
+
*/
|
|
44
|
+
export function getCompactPromptDisplay() {
|
|
45
|
+
return COMPACT_PROMPT;
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=compact-prompt.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compact-prompt.js","sourceRoot":"","sources":["../../src/templates/compact-prompt.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;sFA2BwD,CAAC;AAEvF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,OAAO,GAAG,GAAG,sBAAsB,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,cAAc,CAAC;AACxB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Skill Template
|
|
3
|
+
*
|
|
4
|
+
* Template for the skill file that helps Claude find and use context files.
|
|
5
|
+
*/
|
|
6
|
+
export declare const CONTEXT_SKILL_CONTENT = "# Jacques Context\n\nWhen answering questions, check `.jacques/index.json` for relevant context files.\n\n## How to Use\n\n1. Read `.jacques/index.json` to see available context\n2. If a file's name/description matches the topic, read it from `.jacques/context/`\n3. Use the content to inform your response\n4. Only load files when relevant (token efficiency)\n\n## Index Structure\n\n```json\n{\n \"files\": [\n {\n \"id\": \"unique-id\",\n \"name\": \"Human-readable name\",\n \"path\": \".jacques/context/filename.md\",\n \"source\": \"obsidian\",\n \"description\": \"Optional description of content\",\n \"addedAt\": \"ISO timestamp\"\n }\n ]\n}\n```\n\n## Best Practices\n\n- Check index first before loading files\n- Match file names/descriptions to user query\n- Load only relevant files to conserve tokens\n- Reference the source when using context\n";
|
|
7
|
+
export declare const CONTEXT_SKILL_FILENAME = "context.skill.md";
|
|
8
|
+
//# sourceMappingURL=context-skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-skill.d.ts","sourceRoot":"","sources":["../../src/templates/context-skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,eAAO,MAAM,qBAAqB,s4BAkCjC,CAAC;AAEF,eAAO,MAAM,sBAAsB,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context Skill Template
|
|
3
|
+
*
|
|
4
|
+
* Template for the skill file that helps Claude find and use context files.
|
|
5
|
+
*/
|
|
6
|
+
export const CONTEXT_SKILL_CONTENT = `# Jacques Context
|
|
7
|
+
|
|
8
|
+
When answering questions, check \`.jacques/index.json\` for relevant context files.
|
|
9
|
+
|
|
10
|
+
## How to Use
|
|
11
|
+
|
|
12
|
+
1. Read \`.jacques/index.json\` to see available context
|
|
13
|
+
2. If a file's name/description matches the topic, read it from \`.jacques/context/\`
|
|
14
|
+
3. Use the content to inform your response
|
|
15
|
+
4. Only load files when relevant (token efficiency)
|
|
16
|
+
|
|
17
|
+
## Index Structure
|
|
18
|
+
|
|
19
|
+
\`\`\`json
|
|
20
|
+
{
|
|
21
|
+
"files": [
|
|
22
|
+
{
|
|
23
|
+
"id": "unique-id",
|
|
24
|
+
"name": "Human-readable name",
|
|
25
|
+
"path": ".jacques/context/filename.md",
|
|
26
|
+
"source": "obsidian",
|
|
27
|
+
"description": "Optional description of content",
|
|
28
|
+
"addedAt": "ISO timestamp"
|
|
29
|
+
}
|
|
30
|
+
]
|
|
31
|
+
}
|
|
32
|
+
\`\`\`
|
|
33
|
+
|
|
34
|
+
## Best Practices
|
|
35
|
+
|
|
36
|
+
- Check index first before loading files
|
|
37
|
+
- Match file names/descriptions to user query
|
|
38
|
+
- Load only relevant files to conserve tokens
|
|
39
|
+
- Reference the source when using context
|
|
40
|
+
`;
|
|
41
|
+
export const CONTEXT_SKILL_FILENAME = "context.skill.md";
|
|
42
|
+
//# sourceMappingURL=context-skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-skill.js","sourceRoot":"","sources":["../../src/templates/context-skill.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCpC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,kBAAkB,CAAC"}
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dashboard Types
|
|
3
|
+
*
|
|
4
|
+
* Shared types for the Jacques dashboard client.
|
|
5
|
+
* Mirrors server types needed by the dashboard.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Auto-compact status for Claude Code sessions
|
|
9
|
+
*
|
|
10
|
+
* Known Bug (Issue #18264): Even with autoCompact: false, compaction
|
|
11
|
+
* still triggers at ~78% context usage.
|
|
12
|
+
*/
|
|
13
|
+
export interface AutoCompactStatus {
|
|
14
|
+
enabled: boolean;
|
|
15
|
+
threshold: number;
|
|
16
|
+
bug_threshold: number | null;
|
|
17
|
+
}
|
|
18
|
+
export interface TerminalIdentity {
|
|
19
|
+
tty: string | null;
|
|
20
|
+
terminal_pid: number;
|
|
21
|
+
term_program: string | null;
|
|
22
|
+
iterm_session_id: string | null;
|
|
23
|
+
term_session_id: string | null;
|
|
24
|
+
kitty_window_id: string | null;
|
|
25
|
+
wezterm_pane: string | null;
|
|
26
|
+
vscode_injection: string | null;
|
|
27
|
+
windowid: string | null;
|
|
28
|
+
term: string | null;
|
|
29
|
+
}
|
|
30
|
+
export interface ContextMetrics {
|
|
31
|
+
used_percentage: number;
|
|
32
|
+
remaining_percentage: number;
|
|
33
|
+
total_input_tokens: number;
|
|
34
|
+
total_output_tokens: number;
|
|
35
|
+
context_window_size: number;
|
|
36
|
+
total_cost_usd?: number;
|
|
37
|
+
total_duration_ms?: number;
|
|
38
|
+
/** True if this is an estimate (not actual from preCompact) */
|
|
39
|
+
is_estimate?: boolean;
|
|
40
|
+
}
|
|
41
|
+
export interface ModelInfo {
|
|
42
|
+
id: string;
|
|
43
|
+
display_name: string;
|
|
44
|
+
}
|
|
45
|
+
export interface WorkspaceInfo {
|
|
46
|
+
current_dir: string;
|
|
47
|
+
project_dir: string;
|
|
48
|
+
}
|
|
49
|
+
export type SessionStatus = 'active' | 'working' | 'idle';
|
|
50
|
+
export interface Session {
|
|
51
|
+
session_id: string;
|
|
52
|
+
session_title: string | null;
|
|
53
|
+
transcript_path: string | null;
|
|
54
|
+
cwd: string;
|
|
55
|
+
project: string;
|
|
56
|
+
model: ModelInfo | null;
|
|
57
|
+
workspace: WorkspaceInfo | null;
|
|
58
|
+
terminal: TerminalIdentity | null;
|
|
59
|
+
terminal_key: string;
|
|
60
|
+
status: SessionStatus;
|
|
61
|
+
last_activity: number;
|
|
62
|
+
registered_at: number;
|
|
63
|
+
context_metrics: ContextMetrics | null;
|
|
64
|
+
source?: 'startup' | 'resume' | 'clear' | 'compact';
|
|
65
|
+
autocompact: AutoCompactStatus | null;
|
|
66
|
+
}
|
|
67
|
+
export interface InitialStateMessage {
|
|
68
|
+
type: 'initial_state';
|
|
69
|
+
sessions: Session[];
|
|
70
|
+
focused_session_id: string | null;
|
|
71
|
+
}
|
|
72
|
+
export interface SessionUpdateMessage {
|
|
73
|
+
type: 'session_update';
|
|
74
|
+
session: Session;
|
|
75
|
+
}
|
|
76
|
+
export interface SessionRemovedMessage {
|
|
77
|
+
type: 'session_removed';
|
|
78
|
+
session_id: string;
|
|
79
|
+
}
|
|
80
|
+
export interface FocusChangedMessage {
|
|
81
|
+
type: 'focus_changed';
|
|
82
|
+
session_id: string | null;
|
|
83
|
+
session: Session | null;
|
|
84
|
+
}
|
|
85
|
+
export interface ServerStatusMessage {
|
|
86
|
+
type: 'server_status';
|
|
87
|
+
status: 'connected' | 'disconnected';
|
|
88
|
+
session_count: number;
|
|
89
|
+
}
|
|
90
|
+
export interface AutoCompactToggledMessage {
|
|
91
|
+
type: 'autocompact_toggled';
|
|
92
|
+
enabled: boolean;
|
|
93
|
+
warning?: string;
|
|
94
|
+
}
|
|
95
|
+
export interface HandoffReadyMessage {
|
|
96
|
+
type: 'handoff_ready';
|
|
97
|
+
session_id: string;
|
|
98
|
+
path: string;
|
|
99
|
+
}
|
|
100
|
+
export interface FocusTerminalResultMessage {
|
|
101
|
+
type: 'focus_terminal_result';
|
|
102
|
+
session_id: string;
|
|
103
|
+
success: boolean;
|
|
104
|
+
method: string;
|
|
105
|
+
error?: string;
|
|
106
|
+
}
|
|
107
|
+
export type ServerMessage = InitialStateMessage | SessionUpdateMessage | SessionRemovedMessage | FocusChangedMessage | ServerStatusMessage | AutoCompactToggledMessage | HandoffReadyMessage | FocusTerminalResultMessage;
|
|
108
|
+
export interface SelectSessionRequest {
|
|
109
|
+
type: 'select_session';
|
|
110
|
+
session_id: string;
|
|
111
|
+
}
|
|
112
|
+
export interface TriggerActionRequest {
|
|
113
|
+
type: 'trigger_action';
|
|
114
|
+
session_id: string;
|
|
115
|
+
action: 'smart_compact' | 'new_session' | 'save_snapshot';
|
|
116
|
+
options?: Record<string, unknown>;
|
|
117
|
+
}
|
|
118
|
+
export interface ToggleAutoCompactRequest {
|
|
119
|
+
type: 'toggle_autocompact';
|
|
120
|
+
session_id?: string;
|
|
121
|
+
}
|
|
122
|
+
export interface FocusTerminalRequest {
|
|
123
|
+
type: 'focus_terminal';
|
|
124
|
+
session_id: string;
|
|
125
|
+
}
|
|
126
|
+
export type ClientMessage = SelectSessionRequest | TriggerActionRequest | ToggleAutoCompactRequest | FocusTerminalRequest;
|
|
127
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|