@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,72 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* LLM Working View
|
|
4
|
+
*
|
|
5
|
+
* Displays LLM operation progress with spinner, streaming text preview,
|
|
6
|
+
* and token counts. Handles its own layout (horizontal/vertical).
|
|
7
|
+
*/
|
|
8
|
+
import { useState, useEffect } from "react";
|
|
9
|
+
import { Text } from "ink";
|
|
10
|
+
import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, HORIZONTAL_LAYOUT_MIN_WIDTH, } from "./layout/index.js";
|
|
11
|
+
import { formatTokens, formatElapsedTime } from "../utils/format.js";
|
|
12
|
+
const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
|
|
13
|
+
export function LLMWorkingView({ title, description, elapsedSeconds, streamingText = "", inputTokens = 0, outputTokens = 0, currentStage = "", terminalWidth, }) {
|
|
14
|
+
const [spinnerIndex, setSpinnerIndex] = useState(0);
|
|
15
|
+
const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
16
|
+
const showVersion = terminalWidth >= 70;
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
const interval = setInterval(() => {
|
|
19
|
+
setSpinnerIndex((prev) => (prev + 1) % SPINNER_FRAMES.length);
|
|
20
|
+
}, 80);
|
|
21
|
+
return () => clearInterval(interval);
|
|
22
|
+
}, []);
|
|
23
|
+
const contentLines = [];
|
|
24
|
+
// Line 1: Title with spinner and token counts
|
|
25
|
+
const hasTokens = inputTokens > 0 || outputTokens > 0;
|
|
26
|
+
contentLines.push(_jsxs(Text, { children: [_jsxs(Text, { color: ACCENT_COLOR, bold: true, children: [SPINNER_FRAMES[spinnerIndex], " ", title] }), hasTokens && (_jsxs(Text, { color: MUTED_TEXT, children: [" ", "| ", formatTokens(inputTokens), " in / ", formatTokens(outputTokens), " out"] }))] }, "title"));
|
|
27
|
+
// Line 2: Empty spacer
|
|
28
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer1"));
|
|
29
|
+
// Line 3: Current stage or description
|
|
30
|
+
const displayStage = currentStage || description || "";
|
|
31
|
+
contentLines.push(_jsx(Text, { color: displayStage ? MUTED_TEXT : undefined, children: displayStage || " " }, "stage"));
|
|
32
|
+
// Lines 4-6: Live streaming output preview (last 3 lines)
|
|
33
|
+
if (streamingText.length > 0) {
|
|
34
|
+
const streamLines = streamingText.split("\n").filter(l => l.trim());
|
|
35
|
+
const lastLines = streamLines.slice(-3);
|
|
36
|
+
const maxLineWidth = Math.min(50, terminalWidth - 20);
|
|
37
|
+
lastLines.forEach((line, i) => {
|
|
38
|
+
const truncatedLine = line.length > maxLineWidth
|
|
39
|
+
? line.substring(0, maxLineWidth - 3) + "..."
|
|
40
|
+
: line;
|
|
41
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: truncatedLine }, `stream${i}`));
|
|
42
|
+
});
|
|
43
|
+
// Pad to have 3 streaming lines
|
|
44
|
+
while (contentLines.length < 6) {
|
|
45
|
+
contentLines.push(_jsx(Text, { children: " " }, `streampad${contentLines.length}`));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer2"));
|
|
50
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer3"));
|
|
51
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer4"));
|
|
52
|
+
}
|
|
53
|
+
// Line 7: Stats line (elapsed time and char count)
|
|
54
|
+
const statsLine = [];
|
|
55
|
+
if (elapsedSeconds !== undefined) {
|
|
56
|
+
statsLine.push(`Elapsed: ${formatElapsedTime(elapsedSeconds)}`);
|
|
57
|
+
}
|
|
58
|
+
if (streamingText.length > 0) {
|
|
59
|
+
statsLine.push(`${streamingText.length.toLocaleString()} chars`);
|
|
60
|
+
}
|
|
61
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: statsLine.join(" | ") || " " }, "stats"));
|
|
62
|
+
// Line 8: Empty spacer
|
|
63
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer6"));
|
|
64
|
+
// Line 9: Tip
|
|
65
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, dimColor: true, children: "Press Esc to cancel" }, "tip"));
|
|
66
|
+
// Pad to 10 lines
|
|
67
|
+
while (contentLines.length < 10) {
|
|
68
|
+
contentLines.push(_jsx(Text, { children: " " }, `pad${contentLines.length}`));
|
|
69
|
+
}
|
|
70
|
+
return useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion }));
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=LLMWorkingView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LLMWorkingView.js","sourceRoot":"","sources":["../../src/components/LLMWorkingView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LoadContextView Component
|
|
3
|
+
*
|
|
4
|
+
* First screen when user selects "Load Context" from main menu.
|
|
5
|
+
* Uses the same bordered layout with mascot as the main dashboard.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
interface LoadContextViewProps {
|
|
9
|
+
selectedIndex: number;
|
|
10
|
+
terminalWidth: number;
|
|
11
|
+
}
|
|
12
|
+
interface LoadOption {
|
|
13
|
+
key: string;
|
|
14
|
+
label: string;
|
|
15
|
+
description: string;
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
}
|
|
18
|
+
declare const LOAD_OPTIONS: LoadOption[];
|
|
19
|
+
export declare function LoadContextView({ selectedIndex, terminalWidth, }: LoadContextViewProps): React.ReactElement;
|
|
20
|
+
export { LOAD_OPTIONS };
|
|
21
|
+
export type { LoadOption };
|
|
22
|
+
//# sourceMappingURL=LoadContextView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadContextView.d.ts","sourceRoot":"","sources":["../../src/components/LoadContextView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,YAAY,EAAE,UAAU,EAa7B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,aAAa,GACd,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAiE3C;AA6HD,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { MASCOT_ANSI } from "../assets/mascot-ansi.js";
|
|
4
|
+
import { ACCENT_COLOR, MUTED_TEXT, BORDER_COLOR } from "./layout/index.js";
|
|
5
|
+
const MASCOT_WIDTH = 14;
|
|
6
|
+
const MIN_CONTENT_WIDTH = 42;
|
|
7
|
+
const CONTENT_PADDING = 2;
|
|
8
|
+
const HORIZONTAL_LAYOUT_MIN_WIDTH = 62;
|
|
9
|
+
const FIXED_CONTENT_HEIGHT = 10;
|
|
10
|
+
const LOAD_OPTIONS = [
|
|
11
|
+
{
|
|
12
|
+
key: "saved",
|
|
13
|
+
label: "Load from saved conversations",
|
|
14
|
+
description: "Load from .context/saved/",
|
|
15
|
+
enabled: false, // Not implemented yet
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
key: "sources",
|
|
19
|
+
label: "Load from other sources",
|
|
20
|
+
description: "Import from Obsidian, Docs, Notion",
|
|
21
|
+
enabled: true,
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
export function LoadContextView({ selectedIndex, terminalWidth, }) {
|
|
25
|
+
const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
26
|
+
const showVersion = terminalWidth >= 70;
|
|
27
|
+
// Build content lines
|
|
28
|
+
const contentLines = [];
|
|
29
|
+
// Title
|
|
30
|
+
contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Load Context" }, "title"));
|
|
31
|
+
// Separator
|
|
32
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(35) }, "sep"));
|
|
33
|
+
// Options
|
|
34
|
+
for (let i = 0; i < LOAD_OPTIONS.length; i++) {
|
|
35
|
+
const option = LOAD_OPTIONS[i];
|
|
36
|
+
const isSelected = i === selectedIndex;
|
|
37
|
+
const textColor = option.enabled
|
|
38
|
+
? isSelected
|
|
39
|
+
? ACCENT_COLOR
|
|
40
|
+
: "white"
|
|
41
|
+
: MUTED_TEXT;
|
|
42
|
+
contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? "> " : " ", option.label, !option.enabled && _jsx(Text, { color: MUTED_TEXT, children: " (soon)" })] }, option.key));
|
|
43
|
+
contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: [" ", option.description] }, `${option.key}-desc`));
|
|
44
|
+
}
|
|
45
|
+
// Pad to fixed height
|
|
46
|
+
while (contentLines.length < FIXED_CONTENT_HEIGHT) {
|
|
47
|
+
contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
|
|
48
|
+
}
|
|
49
|
+
return (_jsx(Box, { width: terminalWidth, flexDirection: "column", children: useHorizontalLayout ? (_jsx(LoadHorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, showVersion: showVersion })) : (_jsx(LoadVerticalLayout, { content: contentLines, showVersion: showVersion })) }));
|
|
50
|
+
}
|
|
51
|
+
function LoadVerticalLayout({ content, showVersion, }) {
|
|
52
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: ["Jacques", showVersion && _jsx(Text, { color: MUTED_TEXT, children: " v0.1.0" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { wrap: "truncate-end", children: MASCOT_ANSI }) }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: content.map((line, index) => (_jsx(Box, { children: line }, index))) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: MUTED_TEXT, children: "[\u2191\u2193] Navigate [Enter] Select [Esc] Back" }) })] }));
|
|
53
|
+
}
|
|
54
|
+
function LoadHorizontalLayout({ content, terminalWidth = 80, showVersion, }) {
|
|
55
|
+
const mascotVisualWidth = MASCOT_WIDTH;
|
|
56
|
+
const mascotPadding = 3;
|
|
57
|
+
const mascotDisplayWidth = mascotVisualWidth + mascotPadding;
|
|
58
|
+
const contentWidth = Math.max(MIN_CONTENT_WIDTH, terminalWidth - mascotDisplayWidth - 3);
|
|
59
|
+
const mascotLines = MASCOT_ANSI.split("\n").filter((line) => line.trim().length > 0);
|
|
60
|
+
const mascotHeight = mascotLines.length;
|
|
61
|
+
const totalHeight = FIXED_CONTENT_HEIGHT;
|
|
62
|
+
const mascotTopPadding = Math.floor((totalHeight - mascotHeight) / 2);
|
|
63
|
+
const visibleContent = content.slice(0, totalHeight);
|
|
64
|
+
const titlePart = "─ Jacques";
|
|
65
|
+
const versionPart = showVersion ? " v0.1.0" : "";
|
|
66
|
+
const titleLength = titlePart.length + versionPart.length;
|
|
67
|
+
const remainingBorder = Math.max(0, terminalWidth - titleLength - 3);
|
|
68
|
+
const bottomControlsText = "[Enter] Select [Esc] Back";
|
|
69
|
+
const bottomControlsLength = bottomControlsText.length;
|
|
70
|
+
const totalBottomDashes = terminalWidth - bottomControlsLength - 2;
|
|
71
|
+
const bottomLeftBorder = Math.max(0, Math.floor(totalBottomDashes / 2));
|
|
72
|
+
const bottomRightBorder = Math.max(0, totalBottomDashes - bottomLeftBorder);
|
|
73
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: BORDER_COLOR, children: "\u256D" }), _jsx(Text, { color: ACCENT_COLOR, children: titlePart }), showVersion && _jsx(Text, { color: MUTED_TEXT, children: versionPart }), _jsxs(Text, { color: BORDER_COLOR, children: [" ", "─".repeat(remainingBorder), "\u256E"] })] }), Array.from({ length: totalHeight }).map((_, rowIndex) => {
|
|
74
|
+
const mascotLineIndex = rowIndex - mascotTopPadding;
|
|
75
|
+
const mascotLine = mascotLineIndex >= 0 && mascotLineIndex < mascotLines.length
|
|
76
|
+
? mascotLines[mascotLineIndex]
|
|
77
|
+
: "";
|
|
78
|
+
const contentLine = visibleContent[rowIndex];
|
|
79
|
+
return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: mascotDisplayWidth, justifyContent: "center", flexShrink: 0, children: _jsx(Text, { wrap: "truncate-end", children: mascotLine }) }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: contentWidth, paddingLeft: CONTENT_PADDING, paddingRight: CONTENT_PADDING, flexShrink: 0, children: contentLine || _jsx(Text, { children: " " }) }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" })] }, rowIndex));
|
|
80
|
+
}), _jsxs(Box, { children: [_jsxs(Text, { color: BORDER_COLOR, children: ["\u2570", "─".repeat(bottomLeftBorder)] }), _jsx(Text, { color: ACCENT_COLOR, children: "[Enter]" }), _jsx(Text, { color: MUTED_TEXT, children: " Select " }), _jsx(Text, { color: ACCENT_COLOR, children: "[Esc]" }), _jsx(Text, { color: MUTED_TEXT, children: " Back" }), _jsxs(Text, { color: BORDER_COLOR, children: ["─".repeat(bottomRightBorder), "\u256F"] })] })] }));
|
|
81
|
+
}
|
|
82
|
+
export { LOAD_OPTIONS };
|
|
83
|
+
//# sourceMappingURL=LoadContextView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadContextView.js","sourceRoot":"","sources":["../../src/components/LoadContextView.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAE3E,MAAM,YAAY,GAAG,EAAE,CAAC;AACxB,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAC7B,MAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,MAAM,2BAA2B,GAAG,EAAE,CAAC;AACvC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAchC,MAAM,YAAY,GAAiB;IACjC;QACE,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE,+BAA+B;QACtC,WAAW,EAAE,2BAA2B;QACxC,OAAO,EAAE,KAAK,EAAE,sBAAsB;KACvC;IACD;QACE,GAAG,EAAE,SAAS;QACd,KAAK,EAAE,yBAAyB;QAChC,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAEF,MAAM,UAAU,eAAe,CAAC,EAC9B,aAAa,EACb,aAAa,GACQ;IACrB,MAAM,mBAAmB,GAAG,aAAa,IAAI,2BAA2B,CAAC;IACzE,MAAM,WAAW,GAAG,aAAa,IAAI,EAAE,CAAC;IAExC,sBAAsB;IACtB,MAAM,YAAY,GAAsB,EAAE,CAAC;IAE3C,QAAQ;IACR,YAAY,CAAC,IAAI,CACf,KAAC,IAAI,IAAa,IAAI,QAAC,KAAK,EAAE,YAAY,8BAAhC,OAAO,CAEV,CACR,CAAC;IAEF,YAAY;IACZ,YAAY,CAAC,IAAI,CACf,KAAC,IAAI,IAAW,KAAK,EAAE,UAAU,YAC9B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,IADP,KAAK,CAER,CACR,CAAC;IAEF,UAAU;IACV,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,UAAU,GAAG,CAAC,KAAK,aAAa,CAAC;QACvC,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO;YAC9B,CAAC,CAAC,UAAU;gBACV,CAAC,CAAC,YAAY;gBACd,CAAC,CAAC,OAAO;YACX,CAAC,CAAC,UAAU,CAAC;QAEf,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,IAAkB,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,aACtD,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACxB,MAAM,CAAC,KAAK,EACZ,CAAC,MAAM,CAAC,OAAO,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,wBAAgB,KAHlD,MAAM,CAAC,GAAG,CAId,CACR,CAAC;QAEF,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,IAA4B,KAAK,EAAE,UAAU,aAC/C,MAAM,EACN,MAAM,CAAC,WAAW,KAFV,GAAG,MAAM,CAAC,GAAG,OAAO,CAGxB,CACR,CAAC;IACJ,CAAC;IAED,sBAAsB;IACtB,OAAO,YAAY,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;QAClD,YAAY,CAAC,IAAI,CAAC,KAAC,GAAG,MAAM,OAAO,YAAY,CAAC,MAAM,EAAE,CAAI,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CACL,KAAC,GAAG,IAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAC,QAAQ,YAC9C,mBAAmB,CAAC,CAAC,CAAC,CACrB,KAAC,oBAAoB,IACnB,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,aAAa,EAC5B,WAAW,EAAE,WAAW,GACxB,CACH,CAAC,CAAC,CAAC,CACF,KAAC,kBAAkB,IAAC,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,GAAI,CACxE,GACG,CACP,CAAC;AACJ,CAAC;AAQD,SAAS,kBAAkB,CAAC,EAC1B,OAAO,EACP,WAAW,GACC;IACZ,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,wBAE3B,WAAW,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,wBAAgB,IAClD,EAEP,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,YAAE,WAAW,GAAQ,GAC1C,EAEN,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,YACrC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,CAC5B,KAAC,GAAG,cAAc,IAAI,IAAZ,KAAK,CAAc,CAC9B,CAAC,GACE,EAEN,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,YACf,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,kEAAgD,GACnE,IACF,CACP,CAAC;AACJ,CAAC;AAED,SAAS,oBAAoB,CAAC,EAC5B,OAAO,EACP,aAAa,GAAG,EAAE,EAClB,WAAW,GACC;IACZ,MAAM,iBAAiB,GAAG,YAAY,CAAC;IACvC,MAAM,aAAa,GAAG,CAAC,CAAC;IACxB,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,aAAa,CAAC;IAE7D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAC3B,iBAAiB,EACjB,aAAa,GAAG,kBAAkB,GAAG,CAAC,CACvC,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAChD,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CACjC,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;IACxC,MAAM,WAAW,GAAG,oBAAoB,CAAC;IACzC,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;IAEtE,MAAM,cAAc,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,WAAW,CAAC;IAC9B,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;IACjD,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC;IAC1D,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,aAAa,GAAG,WAAW,GAAG,CAAC,CAAC,CAAC;IAErE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC;IACvD,MAAM,oBAAoB,GAAG,kBAAkB,CAAC,MAAM,CAAC;IACvD,MAAM,iBAAiB,GAAG,aAAa,GAAG,oBAAoB,GAAG,CAAC,CAAC;IACnE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,CAAC,CAAC,CAAC,CAAC;IACxE,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,CAAC;IAE5E,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAU,EACnC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,YAAG,SAAS,GAAQ,EAC5C,WAAW,IAAI,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,WAAW,GAAQ,EAC7D,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,kBAAI,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,cAAS,IAC7D,EAEL,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE;gBACvD,MAAM,eAAe,GAAG,QAAQ,GAAG,gBAAgB,CAAC;gBACpD,MAAM,UAAU,GACd,eAAe,IAAI,CAAC,IAAI,eAAe,GAAG,WAAW,CAAC,MAAM;oBAC1D,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC;oBAC9B,CAAC,CAAC,EAAE,CAAC;gBAET,MAAM,WAAW,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;gBAE7C,OAAO,CACL,MAAC,GAAG,IAAgB,aAAa,EAAC,KAAK,aACrC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAU,EACnC,KAAC,GAAG,IACF,KAAK,EAAE,kBAAkB,EACzB,cAAc,EAAC,QAAQ,EACvB,UAAU,EAAE,CAAC,YAEb,KAAC,IAAI,IAAC,IAAI,EAAC,cAAc,YAAE,UAAU,GAAQ,GACzC,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAU,EACnC,KAAC,GAAG,IACF,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,eAAe,EAC5B,YAAY,EAAE,eAAe,EAC7B,UAAU,EAAE,CAAC,YAEZ,WAAW,IAAI,KAAC,IAAI,oBAAS,GAC1B,EACN,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAU,KAlB3B,QAAQ,CAmBZ,CACP,CAAC;YACJ,CAAC,CAAC,EAEF,MAAC,GAAG,eACF,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAI,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAQ,EACjE,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,wBAAgB,EACzC,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,yBAAiB,EACxC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,sBAAc,EACvC,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,sBAAc,EACrC,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,aAAG,GAAG,CAAC,MAAM,CAAC,iBAAiB,CAAC,cAAS,IAC9D,IACF,CACP,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MainMenuView Component
|
|
3
|
+
*
|
|
4
|
+
* Renders the main menu with project name title, progress bar,
|
|
5
|
+
* status line (mode/state/worktree), and navigation menu.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
import type { Session } from "@jacques-ai/core";
|
|
9
|
+
interface MainMenuViewProps {
|
|
10
|
+
sessions: Session[];
|
|
11
|
+
focusedSession: Session | null;
|
|
12
|
+
selectedMenuIndex: number;
|
|
13
|
+
notification: string | null;
|
|
14
|
+
terminalWidth: number;
|
|
15
|
+
selectedProject?: string | null;
|
|
16
|
+
scanning?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function MainMenuView({ sessions, focusedSession, selectedMenuIndex, notification, terminalWidth, selectedProject, scanning, }: MainMenuViewProps): React.ReactElement;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=MainMenuView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainMenuView.d.ts","sourceRoot":"","sources":["../../src/components/MainMenuView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,QAAQ,GACT,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAgFxC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text } from "ink";
|
|
3
|
+
import { ProgressLine } from "./shared/ProgressLine.js";
|
|
4
|
+
import { StatusLine } from "./shared/StatusLine.js";
|
|
5
|
+
import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, HORIZONTAL_LAYOUT_MIN_WIDTH, } from "./layout/index.js";
|
|
6
|
+
import { MENU_ITEMS } from "../utils/constants.js";
|
|
7
|
+
import { getProjectGroupKey } from "@jacques-ai/core";
|
|
8
|
+
import { ScanningIndicator } from "./shared/ScanningIndicator.js";
|
|
9
|
+
export function MainMenuView({ sessions, focusedSession, selectedMenuIndex, notification, terminalWidth, selectedProject, scanning, }) {
|
|
10
|
+
const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
11
|
+
const showVersion = terminalWidth >= 70;
|
|
12
|
+
// Derive project name: selected project > git repo root name > session project > fallback
|
|
13
|
+
const projectName = selectedProject
|
|
14
|
+
|| (focusedSession ? getProjectGroupKey(focusedSession) : null)
|
|
15
|
+
|| "Jacques";
|
|
16
|
+
// Dynamic session count label for menu item 1
|
|
17
|
+
const sessionLabel = `All Sessions${sessions.length > 0 ? ` (${sessions.length})` : ""}`;
|
|
18
|
+
const contentLines = [];
|
|
19
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer-top"));
|
|
20
|
+
if (focusedSession) {
|
|
21
|
+
const sessionTitle = focusedSession.session_title || "Untitled session";
|
|
22
|
+
const maxTitleLen = Math.max(10, terminalWidth - 4); // 2 for "$ " + some margin
|
|
23
|
+
const truncatedTitle = sessionTitle.length > maxTitleLen
|
|
24
|
+
? sessionTitle.substring(0, maxTitleLen - 1) + "\u2026"
|
|
25
|
+
: sessionTitle;
|
|
26
|
+
contentLines.push(_jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "> " }), _jsx(Text, { color: ACCENT_COLOR, children: projectName })] }, "project-line"));
|
|
27
|
+
contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: "$ " }), _jsx(Text, { color: "white", children: truncatedTitle })] }, "session-title"));
|
|
28
|
+
contentLines.push(_jsx(ProgressLine, { session: focusedSession }, "progress"));
|
|
29
|
+
contentLines.push(_jsx(StatusLine, { session: focusedSession }, "status"));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: projectName }, "title"));
|
|
33
|
+
contentLines.push(scanning
|
|
34
|
+
? _jsx(ScanningIndicator, {}, "scanning")
|
|
35
|
+
: _jsx(Text, { color: MUTED_TEXT, children: "No active sessions" }, "no-session"));
|
|
36
|
+
}
|
|
37
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer-mid"));
|
|
38
|
+
MENU_ITEMS.forEach((item, index) => {
|
|
39
|
+
const isSelected = index === selectedMenuIndex;
|
|
40
|
+
const textColor = item.enabled
|
|
41
|
+
? isSelected ? ACCENT_COLOR : "white"
|
|
42
|
+
: MUTED_TEXT;
|
|
43
|
+
const label = item.key === "1" ? sessionLabel : item.label;
|
|
44
|
+
contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? "\u25B8 " : " ", label] }, item.key));
|
|
45
|
+
});
|
|
46
|
+
contentLines.push(_jsx(Text, { children: " " }, "spacer-bot"));
|
|
47
|
+
return useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion, sessionCount: sessions.length, notification: notification })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion, sessionCount: sessions.length, notification: notification }));
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=MainMenuView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MainMenuView.js","sourceRoot":"","sources":["../../src/components/MainMenuView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mascot Component
|
|
3
|
+
*
|
|
4
|
+
* Jacques Derrida mascot - philosopher with white hair and pipe
|
|
5
|
+
* Supports both vertical (standalone) and inline (compact header) variants
|
|
6
|
+
*
|
|
7
|
+
* Design features:
|
|
8
|
+
* - Fuller white hair with gradient shading (░▒▓)
|
|
9
|
+
* - Expressive eyes with clear spacing
|
|
10
|
+
* - Subtle smile for approachable look
|
|
11
|
+
* - Distinctive pipe character
|
|
12
|
+
*/
|
|
13
|
+
import React from "react";
|
|
14
|
+
interface MascotProps {
|
|
15
|
+
variant?: "vertical" | "inline";
|
|
16
|
+
size?: "small" | "large";
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Jacques Derrida mascot - philosopher with distinctive features
|
|
20
|
+
* Uses Unicode block elements (U+2580-259F) for terminal art
|
|
21
|
+
*/
|
|
22
|
+
export declare function Mascot({ variant, size }: MascotProps): React.ReactElement;
|
|
23
|
+
export default Mascot;
|
|
24
|
+
//# sourceMappingURL=Mascot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mascot.d.ts","sourceRoot":"","sources":["../../src/components/Mascot.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EAAE,OAAoB,EAAE,IAAc,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAShG;AA6CD,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text, Box } from "ink";
|
|
3
|
+
import { ACCENT_COLOR } from "./layout/theme.js";
|
|
4
|
+
/**
|
|
5
|
+
* Jacques Derrida mascot - philosopher with distinctive features
|
|
6
|
+
* Uses Unicode block elements (U+2580-259F) for terminal art
|
|
7
|
+
*/
|
|
8
|
+
export function Mascot({ variant = "vertical", size = "large" }) {
|
|
9
|
+
if (variant === "inline") {
|
|
10
|
+
return _jsx(InlineMascot, {});
|
|
11
|
+
}
|
|
12
|
+
if (size === "small") {
|
|
13
|
+
return _jsx(SmallMascot, {});
|
|
14
|
+
}
|
|
15
|
+
return _jsx(LargeMascot, {});
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Inline variant for compact header (3 lines, 12 chars width)
|
|
19
|
+
* Enhanced design with fuller hair and expressive eyes
|
|
20
|
+
*/
|
|
21
|
+
function InlineMascot() {
|
|
22
|
+
return (_jsxs(Box, { flexDirection: "column", width: 12, children: [_jsx(Text, { color: "white", children: " \u2591\u2592\u2593\u2593\u2593\u2592\u2591 " }), _jsxs(Text, { children: [_jsx(Text, { color: ACCENT_COLOR, children: "\u2590\u259B \u00BA \u00BA \u259C\u258C" }), _jsx(Text, { color: "gray", children: "\u2596 " })] }), _jsx(Text, { color: ACCENT_COLOR, children: " \u2500\u203F\u2500 " })] }));
|
|
23
|
+
}
|
|
24
|
+
function LargeMascot() {
|
|
25
|
+
// Vertical Jacques Derrida with enhanced features
|
|
26
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", children: " \u2591\u2592\u2593\u2593\u2593\u2592\u2591" }), _jsxs(Text, { children: [_jsx(Text, { color: ACCENT_COLOR, children: "\u2590\u259B \u00BA \u00BA \u259C\u258C" }), _jsx(Text, { color: "gray", children: "\u2596" })] }), _jsx(Text, { color: ACCENT_COLOR, children: " \u2500\u203F\u2500" })] }));
|
|
27
|
+
}
|
|
28
|
+
function SmallMascot() {
|
|
29
|
+
return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", children: "\u2591\u2592\u2593\u2592\u2591" }), _jsxs(Text, { children: [_jsx(Text, { color: ACCENT_COLOR, children: "\u259B\u00BA\u00BA\u259C" }), _jsx(Text, { color: "gray", children: "\u2596" })] })] }));
|
|
30
|
+
}
|
|
31
|
+
export default Mascot;
|
|
32
|
+
//# sourceMappingURL=Mascot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Mascot.js","sourceRoot":"","sources":["../../src/components/Mascot.tsx"],"names":[],"mappings":";AAcA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,IAAI,GAAG,OAAO,EAAe;IAC1E,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,KAAC,YAAY,KAAG,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,KAAC,WAAW,KAAG,CAAC;IACzB,CAAC;IACD,OAAO,KAAC,WAAW,KAAG,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY;IACnB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,aACnC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,+DAAmB,EACtC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,wDAAkB,EAC3C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAU,IACvB,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,0CAAmB,IACxC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,kDAAkD;IAClD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,4DAAgB,EACnC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,wDAAkB,EAC3C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,IACtB,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,oCAAa,IAClC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,+CAAa,EAChC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,yCAAa,EACtC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,IACtB,IACH,CACP,CAAC;AACJ,CAAC;AAED,eAAe,MAAM,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Menu Component
|
|
3
|
+
*
|
|
4
|
+
* 5-button numbered menu for context management actions.
|
|
5
|
+
* Each item can be enabled or disabled.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
export interface MenuItem {
|
|
9
|
+
key: string;
|
|
10
|
+
icon: string;
|
|
11
|
+
label: string;
|
|
12
|
+
enabled: boolean;
|
|
13
|
+
}
|
|
14
|
+
interface MenuProps {
|
|
15
|
+
items: MenuItem[];
|
|
16
|
+
selectedKey: string | null;
|
|
17
|
+
onSelect?: (key: string) => void;
|
|
18
|
+
}
|
|
19
|
+
export declare const DEFAULT_MENU_ITEMS: MenuItem[];
|
|
20
|
+
export declare function Menu({ items, selectedKey }: MenuProps): React.ReactElement;
|
|
21
|
+
export default Menu;
|
|
22
|
+
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/components/Menu.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAGD,eAAO,MAAM,kBAAkB,EAAE,QAAQ,EAMxC,CAAC;AAEF,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CAsB1E;AAmCD,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { ACCENT_COLOR, BORDER_COLOR } from "./layout/theme.js";
|
|
4
|
+
// Default menu items
|
|
5
|
+
export const DEFAULT_MENU_ITEMS = [
|
|
6
|
+
{ key: "1", icon: "💾", label: "Save Current Context", enabled: true },
|
|
7
|
+
{ key: "2", icon: "📂", label: "Load Context", enabled: false },
|
|
8
|
+
{ key: "3", icon: "📝", label: "Create Handoff", enabled: true },
|
|
9
|
+
{ key: "4", icon: "⚙️ ", label: "Settings", enabled: false },
|
|
10
|
+
{ key: "5", icon: "❌", label: "Quit", enabled: true },
|
|
11
|
+
];
|
|
12
|
+
export function Menu({ items, selectedKey }) {
|
|
13
|
+
const boxWidth = 43;
|
|
14
|
+
return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { color: BORDER_COLOR, children: ["\u256D", "─".repeat(boxWidth), "\u256E"] }), items.map((item) => (_jsx(MenuItemRow, { item: item, isSelected: selectedKey === item.key, boxWidth: boxWidth }, item.key))), _jsxs(Text, { color: BORDER_COLOR, children: ["\u2570", "─".repeat(boxWidth), "\u256F"] })] }));
|
|
15
|
+
}
|
|
16
|
+
function MenuItemRow({ item, isSelected, boxWidth, }) {
|
|
17
|
+
const { key, icon, label, enabled } = item;
|
|
18
|
+
// Build the label with proper spacing
|
|
19
|
+
const content = ` [${key}] ${icon} ${label}`;
|
|
20
|
+
const padding = boxWidth - content.length;
|
|
21
|
+
const paddedContent = content + " ".repeat(Math.max(0, padding));
|
|
22
|
+
// Determine styling
|
|
23
|
+
const textColor = enabled ? (isSelected ? ACCENT_COLOR : "white") : "gray";
|
|
24
|
+
const borderColor = BORDER_COLOR;
|
|
25
|
+
return (_jsxs(Text, { children: [_jsx(Text, { color: borderColor, children: "\u2502" }), _jsx(Text, { color: textColor, bold: isSelected, children: paddedContent }), _jsx(Text, { color: borderColor, children: "\u2502" })] }));
|
|
26
|
+
}
|
|
27
|
+
export default Menu;
|
|
28
|
+
//# sourceMappingURL=Menu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/components/Menu.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAe/D,qBAAqB;AACrB,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE;IACtE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;IAC/D,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;IAChE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5D,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;CACtD,CAAC;AAEF,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAa;IACpD,MAAM,QAAQ,GAAG,EAAE,CAAC;IAEpB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aAEtC,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAS,EAGzD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,WAAW,IAEV,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,EACpC,QAAQ,EAAE,QAAQ,IAHb,IAAI,CAAC,GAAG,CAIb,CACH,CAAC,EAGF,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAS,IACtD,CACP,CAAC;AACJ,CAAC;AAQD,SAAS,WAAW,CAAC,EACnB,IAAI,EACJ,UAAU,EACV,QAAQ,GACS;IACjB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAE3C,sCAAsC;IACtC,MAAM,OAAO,GAAG,MAAM,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1C,MAAM,aAAa,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjE,oBAAoB;IACpB,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,WAAW,GAAG,YAAY,CAAC;IAEjC,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,uBAAU,EAClC,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,YACrC,aAAa,GACT,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,uBAAU,IAC7B,CACR,CAAC;AACJ,CAAC;AAED,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* NotionBrowserView Component
|
|
3
|
+
*
|
|
4
|
+
* Page explorer for Notion workspace with nested pages.
|
|
5
|
+
* Uses the same bordered layout as the main dashboard.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
import type { FlatTreeItem } from "@jacques-ai/core";
|
|
9
|
+
interface NotionBrowserViewProps {
|
|
10
|
+
workspaceName?: string;
|
|
11
|
+
items: FlatTreeItem[];
|
|
12
|
+
selectedIndex: number;
|
|
13
|
+
scrollOffset: number;
|
|
14
|
+
terminalWidth: number;
|
|
15
|
+
loading?: boolean;
|
|
16
|
+
error?: string | null;
|
|
17
|
+
}
|
|
18
|
+
export declare const NOTION_VISIBLE_ITEMS = 6;
|
|
19
|
+
export declare function NotionBrowserView({ workspaceName, items, selectedIndex, scrollOffset, terminalWidth, loading, error, }: NotionBrowserViewProps): React.ReactElement;
|
|
20
|
+
export {};
|
|
21
|
+
//# sourceMappingURL=NotionBrowserView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotionBrowserView.d.ts","sourceRoot":"","sources":["../../src/components/NotionBrowserView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAWrD,UAAU,sBAAsB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,wBAAgB,iBAAiB,CAAC,EAChC,aAAa,EACb,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAe,EACf,KAAY,GACb,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CA4I7C"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, ERROR_COLOR, HORIZONTAL_LAYOUT_MIN_WIDTH, FIXED_CONTENT_HEIGHT, } from "./layout/index.js";
|
|
4
|
+
// Visible items in the scrollable area (reserve lines for header/footer)
|
|
5
|
+
export const NOTION_VISIBLE_ITEMS = 6;
|
|
6
|
+
export function NotionBrowserView({ workspaceName, items, selectedIndex, scrollOffset, terminalWidth, loading = false, error = null, }) {
|
|
7
|
+
const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
8
|
+
const showVersion = terminalWidth >= 70;
|
|
9
|
+
// Calculate visible window
|
|
10
|
+
const totalItems = items.length;
|
|
11
|
+
const canScrollUp = scrollOffset > 0;
|
|
12
|
+
const canScrollDown = scrollOffset + NOTION_VISIBLE_ITEMS < totalItems;
|
|
13
|
+
// Get visible slice
|
|
14
|
+
const visibleItems = items.slice(scrollOffset, scrollOffset + NOTION_VISIBLE_ITEMS);
|
|
15
|
+
// Build content lines
|
|
16
|
+
const contentLines = [];
|
|
17
|
+
// Title line with workspace name
|
|
18
|
+
const title = workspaceName ? `Notion: ${workspaceName}` : "Notion";
|
|
19
|
+
if (canScrollUp) {
|
|
20
|
+
contentLines.push(_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: [title, " "] }), _jsx(Text, { color: MUTED_TEXT, children: "\u25B2 more" })] }, "title"));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: title }, "title"));
|
|
24
|
+
}
|
|
25
|
+
// Separator
|
|
26
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(35) }, "sep"));
|
|
27
|
+
// Loading state
|
|
28
|
+
if (loading) {
|
|
29
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "Loading pages..." }, "loading"));
|
|
30
|
+
}
|
|
31
|
+
// Error state
|
|
32
|
+
else if (error) {
|
|
33
|
+
contentLines.push(_jsxs(Text, { color: ERROR_COLOR, children: ["\u2717 ", error] }, "error"));
|
|
34
|
+
}
|
|
35
|
+
// Empty state
|
|
36
|
+
else if (items.length === 0) {
|
|
37
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "No pages found" }, "empty"));
|
|
38
|
+
}
|
|
39
|
+
// Page list
|
|
40
|
+
else {
|
|
41
|
+
for (let i = 0; i < visibleItems.length; i++) {
|
|
42
|
+
const item = visibleItems[i];
|
|
43
|
+
const actualIndex = scrollOffset + i;
|
|
44
|
+
const isSelected = actualIndex === selectedIndex;
|
|
45
|
+
const textColor = isSelected ? ACCENT_COLOR : "white";
|
|
46
|
+
// Indentation based on depth
|
|
47
|
+
const indent = " ".repeat(item.depth);
|
|
48
|
+
// Icon and name
|
|
49
|
+
let icon;
|
|
50
|
+
let suffix = "";
|
|
51
|
+
if (item.type === "folder") {
|
|
52
|
+
// Parent page with children
|
|
53
|
+
icon = item.isExpanded ? "▼ " : "▶ ";
|
|
54
|
+
suffix = ` (${item.fileCount})`;
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Regular page (the name may already include emoji)
|
|
58
|
+
icon = item.name.match(/^[\p{Emoji}]/u) ? "" : "📄 ";
|
|
59
|
+
}
|
|
60
|
+
contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? ">" : " ", indent, icon, item.name, _jsx(Text, { color: MUTED_TEXT, children: suffix })] }, item.id));
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Scroll down indicator or footer
|
|
64
|
+
if (canScrollDown) {
|
|
65
|
+
contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: ["\u25BC ", totalItems - scrollOffset - NOTION_VISIBLE_ITEMS, " more"] }, "more"));
|
|
66
|
+
}
|
|
67
|
+
// Pad to fixed height
|
|
68
|
+
while (contentLines.length < FIXED_CONTENT_HEIGHT) {
|
|
69
|
+
contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
|
|
70
|
+
}
|
|
71
|
+
const bottomControls = (_jsx(Text, { color: MUTED_TEXT, children: "[Enter] Select [Esc] Back" }));
|
|
72
|
+
// Render with layout
|
|
73
|
+
return (_jsx(Box, { width: terminalWidth, flexDirection: "column", children: useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion, bottomControls: bottomControls })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion, bottomControls: bottomControls })) }));
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=NotionBrowserView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"NotionBrowserView.js","sourceRoot":"","sources":["../../src/components/NotionBrowserView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObsidianBrowserView Component
|
|
3
|
+
*
|
|
4
|
+
* File explorer for Obsidian vault with expandable folders.
|
|
5
|
+
* Uses the same bordered layout as the main dashboard.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
import type { FlatTreeItem } from "@jacques-ai/core";
|
|
9
|
+
interface ObsidianBrowserViewProps {
|
|
10
|
+
vaultName: string;
|
|
11
|
+
items: FlatTreeItem[];
|
|
12
|
+
selectedIndex: number;
|
|
13
|
+
scrollOffset: number;
|
|
14
|
+
terminalWidth: number;
|
|
15
|
+
loading?: boolean;
|
|
16
|
+
error?: string | null;
|
|
17
|
+
}
|
|
18
|
+
declare const VISIBLE_ITEMS = 6;
|
|
19
|
+
export declare function ObsidianBrowserView({ vaultName, items, selectedIndex, scrollOffset, terminalWidth, loading, error, }: ObsidianBrowserViewProps): React.ReactElement;
|
|
20
|
+
export { VISIBLE_ITEMS };
|
|
21
|
+
//# sourceMappingURL=ObsidianBrowserView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObsidianBrowserView.d.ts","sourceRoot":"","sources":["../../src/components/ObsidianBrowserView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYrD,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,QAAA,MAAM,aAAa,IAAI,CAAC;AAExB,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAe,EACf,KAAY,GACb,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CA4I/C;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|