@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,74 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { formatContextFileSize as formatFileSize } from "@jacques-ai/core";
|
|
4
|
+
import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, ERROR_COLOR, HORIZONTAL_LAYOUT_MIN_WIDTH, FIXED_CONTENT_HEIGHT, } from "./layout/index.js";
|
|
5
|
+
// Visible items in the scrollable area (reserve lines for header/footer)
|
|
6
|
+
const VISIBLE_ITEMS = 6;
|
|
7
|
+
export function ObsidianBrowserView({ vaultName, items, selectedIndex, scrollOffset, terminalWidth, loading = false, error = null, }) {
|
|
8
|
+
const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
9
|
+
const showVersion = terminalWidth >= 70;
|
|
10
|
+
// Calculate visible window
|
|
11
|
+
const totalItems = items.length;
|
|
12
|
+
const canScrollUp = scrollOffset > 0;
|
|
13
|
+
const canScrollDown = scrollOffset + VISIBLE_ITEMS < totalItems;
|
|
14
|
+
// Get visible slice
|
|
15
|
+
const visibleItems = items.slice(scrollOffset, scrollOffset + VISIBLE_ITEMS);
|
|
16
|
+
// Build content lines
|
|
17
|
+
const contentLines = [];
|
|
18
|
+
// Title line with vault name
|
|
19
|
+
if (canScrollUp) {
|
|
20
|
+
contentLines.push(_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: [vaultName, " "] }), _jsx(Text, { color: MUTED_TEXT, children: "\u25B2 more" })] }, "title"));
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: vaultName }, "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 files..." }, "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 markdown files found" }, "empty"));
|
|
38
|
+
}
|
|
39
|
+
// File 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
|
+
icon = item.isExpanded ? "▼ " : "▶ ";
|
|
53
|
+
suffix = ` (${item.fileCount})`;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
icon = " ";
|
|
57
|
+
}
|
|
58
|
+
contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? ">" : " ", indent, icon, item.name, _jsx(Text, { color: MUTED_TEXT, children: suffix }), item.type === "file" && item.sizeBytes && (_jsxs(Text, { color: MUTED_TEXT, children: [" \u2022 ", formatFileSize(item.sizeBytes)] }))] }, item.id));
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
// Scroll down indicator or footer
|
|
62
|
+
if (canScrollDown) {
|
|
63
|
+
contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: ["\u25BC ", totalItems - scrollOffset - VISIBLE_ITEMS, " more"] }, "more"));
|
|
64
|
+
}
|
|
65
|
+
// Pad to fixed height
|
|
66
|
+
while (contentLines.length < FIXED_CONTENT_HEIGHT) {
|
|
67
|
+
contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
|
|
68
|
+
}
|
|
69
|
+
const bottomControls = (_jsx(Text, { color: MUTED_TEXT, children: "[Enter] Select [Esc] Back" }));
|
|
70
|
+
// Render with layout
|
|
71
|
+
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 })) }));
|
|
72
|
+
}
|
|
73
|
+
export { VISIBLE_ITEMS };
|
|
74
|
+
//# sourceMappingURL=ObsidianBrowserView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObsidianBrowserView.js","sourceRoot":"","sources":["../../src/components/ObsidianBrowserView.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAEhC,OAAO,EAAE,qBAAqB,IAAI,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,WAAW,EACX,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,mBAAmB,CAAC;AAY3B,yEAAyE;AACzE,MAAM,aAAa,GAAG,CAAC,CAAC;AAExB,MAAM,UAAU,mBAAmB,CAAC,EAClC,SAAS,EACT,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAO,GAAG,KAAK,EACf,KAAK,GAAG,IAAI,GACa;IACzB,MAAM,mBAAmB,GAAG,aAAa,IAAI,2BAA2B,CAAC;IACzE,MAAM,WAAW,GAAG,aAAa,IAAI,EAAE,CAAC;IAExC,2BAA2B;IAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC;IAChC,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,YAAY,GAAG,aAAa,GAAG,UAAU,CAAC;IAEhE,oBAAoB;IACpB,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;IAE7E,sBAAsB;IACtB,MAAM,YAAY,GAAsB,EAAE,CAAC;IAE3C,6BAA6B;IAC7B,IAAI,WAAW,EAAE,CAAC;QAChB,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,eACH,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,aAC3B,SAAS,EAAE,GAAG,IACV,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,4BAAe,KAJ9B,OAAO,CAKV,CACR,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CACf,KAAC,IAAI,IAAa,IAAI,QAAC,KAAK,EAAE,YAAY,YACvC,SAAS,IADF,OAAO,CAEV,CACR,CAAC;IACJ,CAAC;IAED,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,gBAAgB;IAChB,IAAI,OAAO,EAAE,CAAC;QACZ,YAAY,CAAC,IAAI,CACf,KAAC,IAAI,IAAe,KAAK,EAAE,UAAU,kCAA3B,SAAS,CAEZ,CACR,CAAC;IACJ,CAAC;IACD,cAAc;SACT,IAAI,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,IAAa,KAAK,EAAE,WAAW,wBAC/B,KAAK,KADA,OAAO,CAEV,CACR,CAAC;IACJ,CAAC;IACD,cAAc;SACT,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,YAAY,CAAC,IAAI,CACf,KAAC,IAAI,IAAa,KAAK,EAAE,UAAU,yCAAzB,OAAO,CAEV,CACR,CAAC;IACJ,CAAC;IACD,YAAY;SACP,CAAC;QACJ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;YAC7B,MAAM,WAAW,GAAG,YAAY,GAAG,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,WAAW,KAAK,aAAa,CAAC;YACjD,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC;YAEtD,6BAA6B;YAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAEvC,gBAAgB;YAChB,IAAI,IAAY,CAAC;YACjB,IAAI,MAAM,GAAG,EAAE,CAAC;YAEhB,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC3B,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrC,MAAM,GAAG,KAAK,IAAI,CAAC,SAAS,GAAG,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,IAAI,GAAG,IAAI,CAAC;YACd,CAAC;YAED,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,IAAe,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,aACnD,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EACtB,MAAM,EACN,IAAI,EACJ,IAAI,CAAC,IAAI,EACV,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,MAAM,GAAQ,EACvC,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,CAAC,SAAS,IAAI,CACzC,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,yBAAM,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,IAAQ,CACpE,KARQ,IAAI,CAAC,EAAE,CASX,CACR,CAAC;QACJ,CAAC;IACH,CAAC;IAED,kCAAkC;IAClC,IAAI,aAAa,EAAE,CAAC;QAClB,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,IAAY,KAAK,EAAE,UAAU,wBAC7B,UAAU,GAAG,YAAY,GAAG,aAAa,cADpC,MAAM,CAET,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,MAAM,cAAc,GAAG,CACrB,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,0CAAkC,CAC1D,CAAC;IAEF,qBAAqB;IACrB,OAAO,CACL,KAAC,GAAG,IAAC,KAAK,EAAE,aAAa,EAAE,aAAa,EAAC,QAAQ,YAC9C,mBAAmB,CAAC,CAAC,CAAC,CACrB,KAAC,gBAAgB,IACf,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAC,SAAS,EACf,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,GAC9B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IACb,OAAO,EAAE,YAAY,EACrB,KAAK,EAAC,SAAS,EACf,WAAW,EAAE,WAAW,EACxB,cAAc,EAAE,cAAc,GAC9B,CACH,GACG,CACP,CAAC;AACJ,CAAC;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ObsidianConfigView Component
|
|
3
|
+
*
|
|
4
|
+
* Configure Obsidian vault path. Shows auto-detected vaults
|
|
5
|
+
* and allows manual path entry.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
import type { ObsidianVault } from "@jacques-ai/core";
|
|
9
|
+
interface ObsidianConfigViewProps {
|
|
10
|
+
vaults: ObsidianVault[];
|
|
11
|
+
selectedIndex: number;
|
|
12
|
+
manualPath: string;
|
|
13
|
+
isManualMode: boolean;
|
|
14
|
+
error: string | null;
|
|
15
|
+
terminalWidth: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function ObsidianConfigView({ vaults, selectedIndex, manualPath, isManualMode, error, terminalWidth, }: ObsidianConfigViewProps): React.ReactElement;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=ObsidianConfigView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObsidianConfigView.d.ts","sourceRoot":"","sources":["../../src/components/ObsidianConfigView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAYtD,UAAU,uBAAuB;IAC/B,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,aAAa,EACb,UAAU,EACV,YAAY,EACZ,KAAK,EACL,aAAa,GACd,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CAwH9C"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, SUCCESS_COLOR, ERROR_COLOR, HORIZONTAL_LAYOUT_MIN_WIDTH, FIXED_CONTENT_HEIGHT, } from "./layout/index.js";
|
|
4
|
+
export function ObsidianConfigView({ vaults, selectedIndex, manualPath, isManualMode, error, terminalWidth, }) {
|
|
5
|
+
const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
6
|
+
const showVersion = terminalWidth >= 70;
|
|
7
|
+
// Total items: detected vaults + manual entry option
|
|
8
|
+
const manualEntryIndex = vaults.length;
|
|
9
|
+
const isManualSelected = selectedIndex === manualEntryIndex;
|
|
10
|
+
// Build content lines
|
|
11
|
+
const contentLines = [];
|
|
12
|
+
// Title
|
|
13
|
+
contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Configure Obsidian" }, "title"));
|
|
14
|
+
// Separator
|
|
15
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(35) }, "sep"));
|
|
16
|
+
// Detected vaults
|
|
17
|
+
if (vaults.length > 0) {
|
|
18
|
+
for (let i = 0; i < vaults.length; i++) {
|
|
19
|
+
const vault = vaults[i];
|
|
20
|
+
const isSelected = i === selectedIndex && !isManualMode;
|
|
21
|
+
const textColor = isSelected ? ACCENT_COLOR : "white";
|
|
22
|
+
contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? "> " : " ", vault.name, vault.isOpen && _jsx(Text, { color: SUCCESS_COLOR, children: " (open)" })] }, vault.id));
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "No vaults detected" }, "no-vaults"));
|
|
27
|
+
}
|
|
28
|
+
// Manual entry option
|
|
29
|
+
contentLines.push(_jsxs(Text, { color: isManualSelected ? ACCENT_COLOR : "white", bold: isManualSelected, children: [isManualSelected ? "> " : " ", "Enter path manually"] }, "manual"));
|
|
30
|
+
// Manual path input (if in manual mode)
|
|
31
|
+
if (isManualMode) {
|
|
32
|
+
contentLines.push(_jsxs(Text, { color: "white", children: [" ", "Path: ", manualPath, _jsx(Text, { color: ACCENT_COLOR, children: "_" })] }, "path-input"));
|
|
33
|
+
}
|
|
34
|
+
// Error message
|
|
35
|
+
if (error) {
|
|
36
|
+
contentLines.push(_jsxs(Text, { color: ERROR_COLOR, children: ["\u2717 ", error] }, "error"));
|
|
37
|
+
}
|
|
38
|
+
// Pad to fixed height
|
|
39
|
+
while (contentLines.length < FIXED_CONTENT_HEIGHT) {
|
|
40
|
+
contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
|
|
41
|
+
}
|
|
42
|
+
const bottomControls = isManualMode ? (_jsxs(_Fragment, { children: [_jsx(Text, { color: ACCENT_COLOR, children: "[Enter]" }), _jsx(Text, { color: MUTED_TEXT, children: " Confirm " }), _jsx(Text, { color: ACCENT_COLOR, children: "[Esc]" }), _jsx(Text, { color: MUTED_TEXT, children: " Cancel" })] })) : (_jsxs(_Fragment, { children: [_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" })] }));
|
|
43
|
+
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 })) }));
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=ObsidianConfigView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ObsidianConfigView.js","sourceRoot":"","sources":["../../src/components/ObsidianConfigView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Placeholder View
|
|
3
|
+
*
|
|
4
|
+
* Simple "coming soon" placeholder for features not yet implemented.
|
|
5
|
+
* Extracted from Dashboard.tsx.
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
interface PlaceholderViewProps {
|
|
9
|
+
title: string;
|
|
10
|
+
feature: string;
|
|
11
|
+
terminalWidth: number;
|
|
12
|
+
}
|
|
13
|
+
export declare function PlaceholderView({ title, feature, terminalWidth, }: PlaceholderViewProps): React.ReactElement;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=PlaceholderView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaceholderView.d.ts","sourceRoot":"","sources":["../../src/components/PlaceholderView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAU1B,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,aAAa,GACd,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAgC3C"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, HORIZONTAL_LAYOUT_MIN_WIDTH, } from "./layout/index.js";
|
|
4
|
+
export function PlaceholderView({ title, feature, terminalWidth, }) {
|
|
5
|
+
const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
|
|
6
|
+
const showVersion = terminalWidth >= 65;
|
|
7
|
+
const contentLines = [
|
|
8
|
+
_jsx(Text, { bold: true, color: ACCENT_COLOR, children: title }),
|
|
9
|
+
_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(40) }),
|
|
10
|
+
_jsx(Box, {}),
|
|
11
|
+
_jsx(Text, { color: MUTED_TEXT, children: "Coming soon" }),
|
|
12
|
+
_jsx(Box, {}),
|
|
13
|
+
_jsxs(Text, { color: MUTED_TEXT, children: ["This feature will allow you to ", feature, "."] }),
|
|
14
|
+
_jsx(Box, {}),
|
|
15
|
+
_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(40) }),
|
|
16
|
+
_jsx(Text, { color: MUTED_TEXT, children: "Press any key to go back..." }),
|
|
17
|
+
];
|
|
18
|
+
return useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion }));
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=PlaceholderView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaceholderView.js","sourceRoot":"","sources":["../../src/components/PlaceholderView.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAQ3B,MAAM,UAAU,eAAe,CAAC,EAC9B,KAAK,EACL,OAAO,EACP,aAAa,GACQ;IACrB,MAAM,mBAAmB,GAAG,aAAa,IAAI,2BAA2B,CAAC;IACzE,MAAM,WAAW,GAAG,aAAa,IAAI,EAAE,CAAC;IAExC,MAAM,YAAY,GAAsB;QACtC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,YAC3B,KAAK,GACD;QACP,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ;QAChD,KAAC,GAAG,KAAG;QACP,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,4BAAoB;QAC3C,KAAC,GAAG,KAAG;QACP,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,gDAAkC,OAAO,SAAS;QACzE,KAAC,GAAG,KAAG;QACP,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,GAAQ;QAChD,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,4CAAoC;KAC5D,CAAC;IAEF,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAC3B,KAAC,gBAAgB,IACf,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAC,SAAS,EACf,WAAW,EAAE,WAAW,GACxB,CACH,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IACb,OAAO,EAAE,YAAY,EACrB,KAAK,EAAC,SAAS,EACf,WAAW,EAAE,WAAW,GACxB,CACH,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plan Viewer View Component
|
|
3
|
+
*
|
|
4
|
+
* Displays the full content of a plan file with:
|
|
5
|
+
* - Scrollable markdown content
|
|
6
|
+
* - Header showing plan title and metadata
|
|
7
|
+
* - Progress header and per-item status indicators
|
|
8
|
+
* - Simple controls
|
|
9
|
+
*/
|
|
10
|
+
import React from "react";
|
|
11
|
+
import type { PlanEntry, PlanProgress } from "@jacques-ai/core";
|
|
12
|
+
export declare const PLAN_VIEWER_VISIBLE_LINES = 15;
|
|
13
|
+
interface PlanViewerViewProps {
|
|
14
|
+
plan: PlanEntry;
|
|
15
|
+
content: string;
|
|
16
|
+
terminalWidth: number;
|
|
17
|
+
terminalHeight: number;
|
|
18
|
+
scrollOffset: number;
|
|
19
|
+
/** Full progress data for per-item status */
|
|
20
|
+
progress?: PlanProgress | null;
|
|
21
|
+
/** Whether progress is still loading */
|
|
22
|
+
progressLoading?: boolean;
|
|
23
|
+
}
|
|
24
|
+
export declare function PlanViewerView({ plan, content, terminalWidth, terminalHeight, scrollOffset, progress, progressLoading, }: PlanViewerViewProps): React.ReactElement;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=PlanViewerView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanViewerView.d.ts","sourceRoot":"","sources":["../../src/components/PlanViewerView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAkB,MAAM,kBAAkB,CAAC;AAKhF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAO5C,UAAU,mBAAmB;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IAC/B,wCAAwC;IACxC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AA6LD,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,aAAa,EACb,cAAc,EACd,YAAY,EACZ,QAAQ,EACR,eAAe,GAChB,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAuF1C"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Box, Text } from "ink";
|
|
3
|
+
import { dotLine, sectionLine, progressBar } from "./ascii-art/index.js";
|
|
4
|
+
import { ACCENT_COLOR, MUTED_TEXT, SUCCESS_COLOR } from "./layout/index.js";
|
|
5
|
+
// Number of content lines visible (excluding header/footer)
|
|
6
|
+
export const PLAN_VIEWER_VISIBLE_LINES = 15;
|
|
7
|
+
// Status indicators
|
|
8
|
+
const STATUS_COMPLETED = "✓";
|
|
9
|
+
const STATUS_IN_PROGRESS = "~";
|
|
10
|
+
const STATUS_NOT_STARTED = "·";
|
|
11
|
+
/**
|
|
12
|
+
* Format a date for display
|
|
13
|
+
*/
|
|
14
|
+
function formatDate(isoDate) {
|
|
15
|
+
const date = new Date(isoDate);
|
|
16
|
+
return date.toLocaleDateString("en-US", {
|
|
17
|
+
year: "numeric",
|
|
18
|
+
month: "short",
|
|
19
|
+
day: "numeric",
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Build a map from line number to status based on progress data.
|
|
24
|
+
* Uses heuristics to map plan items to source line numbers.
|
|
25
|
+
*/
|
|
26
|
+
function buildLineStatusMap(content, progress) {
|
|
27
|
+
const lineStatusMap = new Map();
|
|
28
|
+
if (!progress) {
|
|
29
|
+
return lineStatusMap;
|
|
30
|
+
}
|
|
31
|
+
// Build a map from item ID to status
|
|
32
|
+
const itemStatusMap = new Map();
|
|
33
|
+
for (const item of progress.items) {
|
|
34
|
+
itemStatusMap.set(item.planItemId, item.status);
|
|
35
|
+
}
|
|
36
|
+
// Parse content lines to find trackable items and match to progress
|
|
37
|
+
const lines = content.split("\n");
|
|
38
|
+
let itemIndex = 0;
|
|
39
|
+
for (let i = 0; i < lines.length; i++) {
|
|
40
|
+
const line = lines[i];
|
|
41
|
+
const trimmed = line.trim();
|
|
42
|
+
const lineNumber = i + 1;
|
|
43
|
+
// Skip empty lines, code blocks, tables
|
|
44
|
+
if (trimmed === "" || trimmed.startsWith("```") || trimmed.startsWith("|")) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
// Check for trackable items (lists, checkboxes, numbered items)
|
|
48
|
+
// These correspond to the items tracked by plan-parser.ts
|
|
49
|
+
const isCheckbox = /^[-*]\s+\[[ xX]\]\s+/.test(trimmed);
|
|
50
|
+
const isNumbered = /^\d+\.\s+/.test(trimmed);
|
|
51
|
+
const isBullet = /^[-*]\s+(?!\[)/.test(trimmed);
|
|
52
|
+
const isHeading = /^#{2,6}\s+/.test(trimmed); // Skip top-level headings
|
|
53
|
+
if (isCheckbox || isNumbered || isBullet) {
|
|
54
|
+
// These are trackable - find matching item by index
|
|
55
|
+
// Items are created in document order by plan-parser
|
|
56
|
+
itemIndex++;
|
|
57
|
+
const itemId = `item-${itemIndex}`;
|
|
58
|
+
const status = itemStatusMap.get(itemId);
|
|
59
|
+
if (status) {
|
|
60
|
+
lineStatusMap.set(lineNumber, status);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else if (isHeading) {
|
|
64
|
+
// Subsection headings are tracked but not shown with status
|
|
65
|
+
itemIndex++;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return lineStatusMap;
|
|
69
|
+
}
|
|
70
|
+
function wrapContentWithLineNumbers(content, maxWidth) {
|
|
71
|
+
const result = [];
|
|
72
|
+
const rawLines = content.split("\n");
|
|
73
|
+
for (let i = 0; i < rawLines.length; i++) {
|
|
74
|
+
const rawLine = rawLines[i];
|
|
75
|
+
const lineNumber = i + 1;
|
|
76
|
+
if (rawLine.length <= maxWidth) {
|
|
77
|
+
result.push({ text: rawLine, originalLineNumber: lineNumber });
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
// Word wrap long lines - only first wrapped line gets the line number
|
|
81
|
+
let remaining = rawLine;
|
|
82
|
+
let isFirst = true;
|
|
83
|
+
while (remaining.length > maxWidth) {
|
|
84
|
+
let breakPoint = remaining.lastIndexOf(" ", maxWidth);
|
|
85
|
+
if (breakPoint === -1 || breakPoint < maxWidth / 2) {
|
|
86
|
+
breakPoint = maxWidth;
|
|
87
|
+
}
|
|
88
|
+
result.push({
|
|
89
|
+
text: remaining.slice(0, breakPoint),
|
|
90
|
+
originalLineNumber: isFirst ? lineNumber : -1, // -1 for continuation lines
|
|
91
|
+
});
|
|
92
|
+
remaining = remaining.slice(breakPoint).trimStart();
|
|
93
|
+
isFirst = false;
|
|
94
|
+
}
|
|
95
|
+
if (remaining) {
|
|
96
|
+
result.push({
|
|
97
|
+
text: remaining,
|
|
98
|
+
originalLineNumber: isFirst ? lineNumber : -1,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Render a line of markdown content with basic formatting and status indicator
|
|
107
|
+
*/
|
|
108
|
+
function renderLineWithStatus(line, maxWidth, lineStatusMap, statusWidth) {
|
|
109
|
+
const trimmed = line.text.trimStart();
|
|
110
|
+
const status = line.originalLineNumber > 0 ? lineStatusMap.get(line.originalLineNumber) : undefined;
|
|
111
|
+
// Determine content width (leave space for status if applicable)
|
|
112
|
+
const contentWidth = status ? maxWidth - statusWidth : maxWidth;
|
|
113
|
+
// Render status indicator
|
|
114
|
+
let statusElement = null;
|
|
115
|
+
if (status) {
|
|
116
|
+
const padding = " ".repeat(statusWidth - 2);
|
|
117
|
+
switch (status) {
|
|
118
|
+
case "completed":
|
|
119
|
+
statusElement = _jsxs(Text, { color: SUCCESS_COLOR, children: [padding, STATUS_COMPLETED] });
|
|
120
|
+
break;
|
|
121
|
+
case "in_progress":
|
|
122
|
+
statusElement = _jsxs(Text, { color: ACCENT_COLOR, children: [padding, STATUS_IN_PROGRESS] });
|
|
123
|
+
break;
|
|
124
|
+
case "not_started":
|
|
125
|
+
statusElement = _jsxs(Text, { color: MUTED_TEXT, children: [padding, STATUS_NOT_STARTED] });
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
// Render content based on type
|
|
130
|
+
let contentElement;
|
|
131
|
+
// Heading detection
|
|
132
|
+
if (trimmed.startsWith("# ")) {
|
|
133
|
+
contentElement = (_jsx(Text, { bold: true, color: ACCENT_COLOR, children: line.text.slice(0, contentWidth) }));
|
|
134
|
+
}
|
|
135
|
+
else if (trimmed.startsWith("## ")) {
|
|
136
|
+
contentElement = (_jsx(Text, { bold: true, color: "white", children: line.text.slice(0, contentWidth) }));
|
|
137
|
+
}
|
|
138
|
+
else if (trimmed.startsWith("### ")) {
|
|
139
|
+
contentElement = (_jsx(Text, { bold: true, children: line.text.slice(0, contentWidth) }));
|
|
140
|
+
}
|
|
141
|
+
else if (trimmed.startsWith("```")) {
|
|
142
|
+
// Code blocks
|
|
143
|
+
contentElement = _jsx(Text, { color: MUTED_TEXT, children: line.text.slice(0, contentWidth) });
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Regular text, list items
|
|
147
|
+
contentElement = _jsx(Text, { children: line.text.slice(0, contentWidth) });
|
|
148
|
+
}
|
|
149
|
+
return (_jsxs(Box, { children: [contentElement, statusElement] }));
|
|
150
|
+
}
|
|
151
|
+
export function PlanViewerView({ plan, content, terminalWidth, terminalHeight, scrollOffset, progress, progressLoading, }) {
|
|
152
|
+
// Build line status map
|
|
153
|
+
const lineStatusMap = buildLineStatusMap(content, progress);
|
|
154
|
+
const hasProgress = progress !== null && progress !== undefined;
|
|
155
|
+
const statusWidth = hasProgress ? 3 : 0;
|
|
156
|
+
// Wrap content to terminal width
|
|
157
|
+
const contentWidth = Math.min(terminalWidth - 4 - statusWidth, 80);
|
|
158
|
+
const wrappedLines = wrapContentWithLineNumbers(content, contentWidth);
|
|
159
|
+
const totalLines = wrappedLines.length;
|
|
160
|
+
// Calculate visible window
|
|
161
|
+
const visibleLines = Math.min(PLAN_VIEWER_VISIBLE_LINES, terminalHeight - 10);
|
|
162
|
+
const canScrollUp = scrollOffset > 0;
|
|
163
|
+
const canScrollDown = scrollOffset + visibleLines < totalLines;
|
|
164
|
+
// Get visible content
|
|
165
|
+
const visibleContent = wrappedLines.slice(scrollOffset, scrollOffset + visibleLines);
|
|
166
|
+
return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }), _jsxs(Box, { marginTop: 1, flexDirection: "column", children: [_jsxs(Box, { flexDirection: "row", justifyContent: "space-between", width: terminalWidth - 2, children: [_jsx(Text, { bold: true, color: ACCENT_COLOR, children: plan.title.length > terminalWidth - 20
|
|
167
|
+
? plan.title.slice(0, terminalWidth - 23) + "..."
|
|
168
|
+
: plan.title }), _jsx(Text, { color: MUTED_TEXT, children: formatDate(plan.updatedAt) })] }), progressLoading && (_jsx(Text, { color: MUTED_TEXT, children: "Progress: Loading..." })), hasProgress && !progressLoading && (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: MUTED_TEXT, children: "Progress: " }), _jsx(Text, { color: progress.summary.percentage === 100 ? SUCCESS_COLOR : ACCENT_COLOR, children: progressBar(progress.summary.percentage, 10) }), _jsxs(Text, { color: MUTED_TEXT, children: [" ", progress.summary.completed, "/", progress.summary.total, " (", progress.summary.percentage, "%)"] })] })), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(terminalWidth - 2) })] }), canScrollUp && (_jsxs(Text, { color: MUTED_TEXT, children: [" ", "\u25B2 ", scrollOffset, " lines above"] })), _jsx(Box, { flexDirection: "column", marginLeft: 2, marginTop: canScrollUp ? 0 : 1, children: visibleContent.map((line, i) => (_jsx(Box, { children: renderLineWithStatus(line, contentWidth + statusWidth, lineStatusMap, statusWidth) }, scrollOffset + i))) }), canScrollDown && (_jsxs(Text, { color: MUTED_TEXT, children: [" ", "\u25BC ", totalLines - scrollOffset - visibleLines, " lines below"] })), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }) }), _jsxs(Text, { color: MUTED_TEXT, children: [" ", "[\u2191\u2193] Scroll [Esc] Back to Dashboard"] }), _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) })] }));
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=PlanViewerView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanViewerView.js","sourceRoot":"","sources":["../../src/components/PlanViewerView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProgressBar Component
|
|
3
|
+
*
|
|
4
|
+
* Visual progress bar for context usage with color coding.
|
|
5
|
+
* Green < 60%, Yellow 60-80%, Red >= 80%
|
|
6
|
+
*/
|
|
7
|
+
import React from "react";
|
|
8
|
+
interface ProgressBarProps {
|
|
9
|
+
percentage: number;
|
|
10
|
+
width?: number;
|
|
11
|
+
showLabel?: boolean;
|
|
12
|
+
isEstimate?: boolean;
|
|
13
|
+
}
|
|
14
|
+
export declare function ProgressBar({ percentage, width, showLabel, isEstimate, }: ProgressBarProps): React.ReactElement;
|
|
15
|
+
/**
|
|
16
|
+
* Compact progress indicator for session list
|
|
17
|
+
*/
|
|
18
|
+
interface MiniProgressProps {
|
|
19
|
+
percentage: number | null;
|
|
20
|
+
isEstimate?: boolean;
|
|
21
|
+
}
|
|
22
|
+
export declare function MiniProgress({ percentage, isEstimate, }: MiniProgressProps): React.ReactElement;
|
|
23
|
+
export default ProgressBar;
|
|
24
|
+
//# sourceMappingURL=ProgressBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.d.ts","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAC1B,UAAU,EACV,KAAU,EACV,SAAgB,EAChB,UAAkB,GACnB,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAwBvC;AAED;;GAEG;AACH,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAC3B,UAAU,EACV,UAAkB,GACnB,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAexC;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { Text, Box } from "ink";
|
|
3
|
+
import { ACCENT_COLOR, MUTED_TEXT } from "./layout/theme.js";
|
|
4
|
+
export function ProgressBar({ percentage, width = 30, showLabel = true, isEstimate = false, }) {
|
|
5
|
+
// Clamp percentage to 0-100
|
|
6
|
+
const clampedPct = Math.max(0, Math.min(100, percentage));
|
|
7
|
+
const filled = Math.round((clampedPct / 100) * width);
|
|
8
|
+
const empty = width - filled;
|
|
9
|
+
const color = ACCENT_COLOR;
|
|
10
|
+
const emptyColor = MUTED_TEXT;
|
|
11
|
+
const estimatePrefix = isEstimate ? "~" : "";
|
|
12
|
+
return (_jsxs(Box, { children: [_jsx(Text, { color: color, children: "█".repeat(filled) }), _jsx(Text, { color: emptyColor, children: "░".repeat(empty) }), showLabel && (_jsxs(Text, { color: color, children: [" ", estimatePrefix, clampedPct.toFixed(1), "%"] }))] }));
|
|
13
|
+
}
|
|
14
|
+
export function MiniProgress({ percentage, isEstimate = false, }) {
|
|
15
|
+
if (percentage === null) {
|
|
16
|
+
return _jsx(Text, { color: "gray", children: "ctx:?%" });
|
|
17
|
+
}
|
|
18
|
+
const color = ACCENT_COLOR;
|
|
19
|
+
const estimatePrefix = isEstimate ? "~" : "";
|
|
20
|
+
return (_jsxs(Text, { color: color, children: ["ctx:", estimatePrefix, percentage.toFixed(0), "%"] }));
|
|
21
|
+
}
|
|
22
|
+
export default ProgressBar;
|
|
23
|
+
//# sourceMappingURL=ProgressBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProgressBar.js","sourceRoot":"","sources":["../../src/components/ProgressBar.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAS7D,MAAM,UAAU,WAAW,CAAC,EAC1B,UAAU,EACV,KAAK,GAAG,EAAE,EACV,SAAS,GAAG,IAAI,EAChB,UAAU,GAAG,KAAK,GACD;IACjB,4BAA4B;IAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,KAAK,GAAG,MAAM,CAAC;IAE7B,MAAM,KAAK,GAAG,YAAY,CAAC;IAC3B,MAAM,UAAU,GAAG,UAAU,CAAC;IAE9B,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7C,OAAO,CACL,MAAC,GAAG,eACF,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,GAAQ,EAC/C,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAQ,EAClD,SAAS,IAAI,CACZ,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,aACf,GAAG,EACH,cAAc,EACd,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SACjB,CACR,IACG,CACP,CAAC;AACJ,CAAC;AAUD,MAAM,UAAU,YAAY,CAAC,EAC3B,UAAU,EACV,UAAU,GAAG,KAAK,GACA;IAClB,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;QACxB,OAAO,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAc,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,CAAC;IAE3B,MAAM,cAAc,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAE7C,OAAO,CACL,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,qBACX,cAAc,EAClB,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SACjB,CACR,CAAC;AACJ,CAAC;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Project Dashboard View Component
|
|
3
|
+
*
|
|
4
|
+
* A minimalist zen-like dashboard showing:
|
|
5
|
+
* - Night sky scene with block gradient art
|
|
6
|
+
* - Sessions list (live, saved, archived)
|
|
7
|
+
* - Plans list
|
|
8
|
+
* - Statistics panel
|
|
9
|
+
*
|
|
10
|
+
* Three responsive layouts based on terminal width:
|
|
11
|
+
* - Full (≥90): Scene art + two-column layout
|
|
12
|
+
* - Compact (70-89): Compact scene + stacked sections
|
|
13
|
+
* - Minimal (<70): Text only, no scene art
|
|
14
|
+
*/
|
|
15
|
+
import React from "react";
|
|
16
|
+
import type { ProjectStatistics, ProjectSessionItem, PlanEntry, PlanProgressListItem } from "@jacques-ai/core";
|
|
17
|
+
declare const VISIBLE_SESSIONS = 4;
|
|
18
|
+
declare const VISIBLE_PLANS = 3;
|
|
19
|
+
export interface ProjectDashboardViewProps {
|
|
20
|
+
projectName: string;
|
|
21
|
+
terminalWidth: number;
|
|
22
|
+
terminalHeight: number;
|
|
23
|
+
statistics: ProjectStatistics | null;
|
|
24
|
+
sessions: ProjectSessionItem[];
|
|
25
|
+
plans: PlanEntry[];
|
|
26
|
+
activeSection: "sessions" | "plans";
|
|
27
|
+
selectedIndex: number;
|
|
28
|
+
scrollOffset: number;
|
|
29
|
+
loading?: boolean;
|
|
30
|
+
/** Plan progress map: planId -> progress info */
|
|
31
|
+
planProgress?: Map<string, PlanProgressListItem>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Main ProjectDashboardView component
|
|
35
|
+
*/
|
|
36
|
+
export declare function ProjectDashboardView(props: ProjectDashboardViewProps): React.ReactElement;
|
|
37
|
+
export { VISIBLE_SESSIONS, VISIBLE_PLANS };
|
|
38
|
+
//# sourceMappingURL=ProjectDashboardView.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProjectDashboardView.d.ts","sourceRoot":"","sources":["../../src/components/ProjectDashboardView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAkB/G,QAAA,MAAM,gBAAgB,IAAI,CAAC;AAC3B,QAAA,MAAM,aAAa,IAAI,CAAC;AAIxB,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACrC,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,aAAa,EAAE,UAAU,GAAG,OAAO,CAAC;IACpC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iDAAiD;IACjD,YAAY,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;CAClD;AA8eD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,yBAAyB,GAAG,KAAK,CAAC,YAAY,CAuBzF;AAGD,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,CAAC"}
|