@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.
Files changed (508) hide show
  1. package/dist/assets/mascot-ansi.d.ts +8 -0
  2. package/dist/assets/mascot-ansi.d.ts.map +1 -0
  3. package/dist/assets/mascot-ansi.js +15 -0
  4. package/dist/assets/mascot-ansi.js.map +1 -0
  5. package/dist/cli.d.ts +15 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +53 -0
  8. package/dist/cli.js.map +1 -0
  9. package/dist/commands/client-helper.d.ts +14 -0
  10. package/dist/commands/client-helper.d.ts.map +1 -0
  11. package/dist/commands/client-helper.js +38 -0
  12. package/dist/commands/client-helper.js.map +1 -0
  13. package/dist/commands/dashboard.d.ts +8 -0
  14. package/dist/commands/dashboard.d.ts.map +1 -0
  15. package/dist/commands/dashboard.js +159 -0
  16. package/dist/commands/dashboard.js.map +1 -0
  17. package/dist/commands/index.d.ts +6 -0
  18. package/dist/commands/index.d.ts.map +1 -0
  19. package/dist/commands/index.js +6 -0
  20. package/dist/commands/index.js.map +1 -0
  21. package/dist/commands/list.d.ts +5 -0
  22. package/dist/commands/list.d.ts.map +1 -0
  23. package/dist/commands/list.js +13 -0
  24. package/dist/commands/list.js.map +1 -0
  25. package/dist/commands/search.d.ts +13 -0
  26. package/dist/commands/search.d.ts.map +1 -0
  27. package/dist/commands/search.js +79 -0
  28. package/dist/commands/search.js.map +1 -0
  29. package/dist/commands/setup.d.ts +8 -0
  30. package/dist/commands/setup.d.ts.map +1 -0
  31. package/dist/commands/setup.js +32 -0
  32. package/dist/commands/setup.js.map +1 -0
  33. package/dist/commands/status.d.ts +5 -0
  34. package/dist/commands/status.d.ts.map +1 -0
  35. package/dist/commands/status.js +27 -0
  36. package/dist/commands/status.js.map +1 -0
  37. package/dist/components/ActiveSessionsView.d.ts +18 -0
  38. package/dist/components/ActiveSessionsView.d.ts.map +1 -0
  39. package/dist/components/ActiveSessionsView.js +68 -0
  40. package/dist/components/ActiveSessionsView.js.map +1 -0
  41. package/dist/components/AddContextConfirmView.d.ts +21 -0
  42. package/dist/components/AddContextConfirmView.d.ts.map +1 -0
  43. package/dist/components/AddContextConfirmView.js +44 -0
  44. package/dist/components/AddContextConfirmView.js.map +1 -0
  45. package/dist/components/App.d.ts +11 -0
  46. package/dist/components/App.d.ts.map +1 -0
  47. package/dist/components/App.js +292 -0
  48. package/dist/components/App.js.map +1 -0
  49. package/dist/components/ArchiveBrowserView.d.ts +40 -0
  50. package/dist/components/ArchiveBrowserView.d.ts.map +1 -0
  51. package/dist/components/ArchiveBrowserView.js +161 -0
  52. package/dist/components/ArchiveBrowserView.js.map +1 -0
  53. package/dist/components/ArchiveInitProgressView.d.ts +16 -0
  54. package/dist/components/ArchiveInitProgressView.d.ts.map +1 -0
  55. package/dist/components/ArchiveInitProgressView.js +72 -0
  56. package/dist/components/ArchiveInitProgressView.js.map +1 -0
  57. package/dist/components/AutoCompactToggle.d.ts +16 -0
  58. package/dist/components/AutoCompactToggle.d.ts.map +1 -0
  59. package/dist/components/AutoCompactToggle.js +12 -0
  60. package/dist/components/AutoCompactToggle.js.map +1 -0
  61. package/dist/components/BottomControls.d.ts +12 -0
  62. package/dist/components/BottomControls.d.ts.map +1 -0
  63. package/dist/components/BottomControls.js +11 -0
  64. package/dist/components/BottomControls.js.map +1 -0
  65. package/dist/components/CompactHeader.d.ts +21 -0
  66. package/dist/components/CompactHeader.d.ts.map +1 -0
  67. package/dist/components/CompactHeader.js +63 -0
  68. package/dist/components/CompactHeader.js.map +1 -0
  69. package/dist/components/CompactPanel.d.ts +22 -0
  70. package/dist/components/CompactPanel.d.ts.map +1 -0
  71. package/dist/components/CompactPanel.js +31 -0
  72. package/dist/components/CompactPanel.js.map +1 -0
  73. package/dist/components/ContentBox.d.ts +14 -0
  74. package/dist/components/ContentBox.d.ts.map +1 -0
  75. package/dist/components/ContentBox.js +24 -0
  76. package/dist/components/ContentBox.js.map +1 -0
  77. package/dist/components/ContextProgress.d.ts +14 -0
  78. package/dist/components/ContextProgress.d.ts.map +1 -0
  79. package/dist/components/ContextProgress.js +36 -0
  80. package/dist/components/ContextProgress.js.map +1 -0
  81. package/dist/components/Dashboard.d.ts +46 -0
  82. package/dist/components/Dashboard.d.ts.map +1 -0
  83. package/dist/components/Dashboard.js +67 -0
  84. package/dist/components/Dashboard.js.map +1 -0
  85. package/dist/components/FilterSelectionView.d.ts +15 -0
  86. package/dist/components/FilterSelectionView.d.ts.map +1 -0
  87. package/dist/components/FilterSelectionView.js +27 -0
  88. package/dist/components/FilterSelectionView.js.map +1 -0
  89. package/dist/components/GoogleDocsBrowserView.d.ts +20 -0
  90. package/dist/components/GoogleDocsBrowserView.d.ts.map +1 -0
  91. package/dist/components/GoogleDocsBrowserView.js +72 -0
  92. package/dist/components/GoogleDocsBrowserView.js.map +1 -0
  93. package/dist/components/HandoffBrowserView.d.ts +20 -0
  94. package/dist/components/HandoffBrowserView.d.ts.map +1 -0
  95. package/dist/components/HandoffBrowserView.js +66 -0
  96. package/dist/components/HandoffBrowserView.js.map +1 -0
  97. package/dist/components/Header.d.ts +14 -0
  98. package/dist/components/Header.d.ts.map +1 -0
  99. package/dist/components/Header.js +16 -0
  100. package/dist/components/Header.js.map +1 -0
  101. package/dist/components/HorizontalMenu.d.ts +24 -0
  102. package/dist/components/HorizontalMenu.d.ts.map +1 -0
  103. package/dist/components/HorizontalMenu.js +20 -0
  104. package/dist/components/HorizontalMenu.js.map +1 -0
  105. package/dist/components/ImageMascot.d.ts +8 -0
  106. package/dist/components/ImageMascot.d.ts.map +1 -0
  107. package/dist/components/ImageMascot.js +7 -0
  108. package/dist/components/ImageMascot.js.map +1 -0
  109. package/dist/components/LLMWorkingView.d.ts +19 -0
  110. package/dist/components/LLMWorkingView.d.ts.map +1 -0
  111. package/dist/components/LLMWorkingView.js +72 -0
  112. package/dist/components/LLMWorkingView.js.map +1 -0
  113. package/dist/components/LoadContextView.d.ts +22 -0
  114. package/dist/components/LoadContextView.d.ts.map +1 -0
  115. package/dist/components/LoadContextView.js +83 -0
  116. package/dist/components/LoadContextView.js.map +1 -0
  117. package/dist/components/MainMenuView.d.ts +20 -0
  118. package/dist/components/MainMenuView.d.ts.map +1 -0
  119. package/dist/components/MainMenuView.js +49 -0
  120. package/dist/components/MainMenuView.js.map +1 -0
  121. package/dist/components/Mascot.d.ts +24 -0
  122. package/dist/components/Mascot.d.ts.map +1 -0
  123. package/dist/components/Mascot.js +32 -0
  124. package/dist/components/Mascot.js.map +1 -0
  125. package/dist/components/Menu.d.ts +22 -0
  126. package/dist/components/Menu.d.ts.map +1 -0
  127. package/dist/components/Menu.js +28 -0
  128. package/dist/components/Menu.js.map +1 -0
  129. package/dist/components/NotionBrowserView.d.ts +21 -0
  130. package/dist/components/NotionBrowserView.d.ts.map +1 -0
  131. package/dist/components/NotionBrowserView.js +75 -0
  132. package/dist/components/NotionBrowserView.js.map +1 -0
  133. package/dist/components/ObsidianBrowserView.d.ts +21 -0
  134. package/dist/components/ObsidianBrowserView.d.ts.map +1 -0
  135. package/dist/components/ObsidianBrowserView.js +74 -0
  136. package/dist/components/ObsidianBrowserView.js.map +1 -0
  137. package/dist/components/ObsidianConfigView.d.ts +19 -0
  138. package/dist/components/ObsidianConfigView.d.ts.map +1 -0
  139. package/dist/components/ObsidianConfigView.js +45 -0
  140. package/dist/components/ObsidianConfigView.js.map +1 -0
  141. package/dist/components/PlaceholderView.d.ts +15 -0
  142. package/dist/components/PlaceholderView.d.ts.map +1 -0
  143. package/dist/components/PlaceholderView.js +20 -0
  144. package/dist/components/PlaceholderView.js.map +1 -0
  145. package/dist/components/PlanViewerView.d.ts +26 -0
  146. package/dist/components/PlanViewerView.d.ts.map +1 -0
  147. package/dist/components/PlanViewerView.js +170 -0
  148. package/dist/components/PlanViewerView.js.map +1 -0
  149. package/dist/components/ProgressBar.d.ts +24 -0
  150. package/dist/components/ProgressBar.d.ts.map +1 -0
  151. package/dist/components/ProgressBar.js +23 -0
  152. package/dist/components/ProgressBar.js.map +1 -0
  153. package/dist/components/ProjectDashboardView.d.ts +38 -0
  154. package/dist/components/ProjectDashboardView.d.ts.map +1 -0
  155. package/dist/components/ProjectDashboardView.js +129 -0
  156. package/dist/components/ProjectDashboardView.js.map +1 -0
  157. package/dist/components/SaveContextView.d.ts +32 -0
  158. package/dist/components/SaveContextView.d.ts.map +1 -0
  159. package/dist/components/SaveContextView.js +41 -0
  160. package/dist/components/SaveContextView.js.map +1 -0
  161. package/dist/components/SessionDetails.d.ts +14 -0
  162. package/dist/components/SessionDetails.d.ts.map +1 -0
  163. package/dist/components/SessionDetails.js +87 -0
  164. package/dist/components/SessionDetails.js.map +1 -0
  165. package/dist/components/SessionsExperimentView.d.ts +35 -0
  166. package/dist/components/SessionsExperimentView.d.ts.map +1 -0
  167. package/dist/components/SessionsExperimentView.js +347 -0
  168. package/dist/components/SessionsExperimentView.js.map +1 -0
  169. package/dist/components/SessionsList.d.ts +20 -0
  170. package/dist/components/SessionsList.d.ts.map +1 -0
  171. package/dist/components/SessionsList.js +75 -0
  172. package/dist/components/SessionsList.js.map +1 -0
  173. package/dist/components/SettingsView.d.ts +48 -0
  174. package/dist/components/SettingsView.d.ts.map +1 -0
  175. package/dist/components/SettingsView.js +156 -0
  176. package/dist/components/SettingsView.js.map +1 -0
  177. package/dist/components/SourceSelectionView.d.ts +26 -0
  178. package/dist/components/SourceSelectionView.d.ts.map +1 -0
  179. package/dist/components/SourceSelectionView.js +109 -0
  180. package/dist/components/SourceSelectionView.js.map +1 -0
  181. package/dist/components/VerticalMenu.d.ts +18 -0
  182. package/dist/components/VerticalMenu.d.ts.map +1 -0
  183. package/dist/components/VerticalMenu.js +15 -0
  184. package/dist/components/VerticalMenu.js.map +1 -0
  185. package/dist/components/ascii-art/index.d.ts +6 -0
  186. package/dist/components/ascii-art/index.d.ts.map +1 -0
  187. package/dist/components/ascii-art/index.js +6 -0
  188. package/dist/components/ascii-art/index.js.map +1 -0
  189. package/dist/components/ascii-art/progress.d.ts +53 -0
  190. package/dist/components/ascii-art/progress.d.ts.map +1 -0
  191. package/dist/components/ascii-art/progress.js +102 -0
  192. package/dist/components/ascii-art/progress.js.map +1 -0
  193. package/dist/components/ascii-art/scene.d.ts +34 -0
  194. package/dist/components/ascii-art/scene.d.ts.map +1 -0
  195. package/dist/components/ascii-art/scene.js +72 -0
  196. package/dist/components/ascii-art/scene.js.map +1 -0
  197. package/dist/components/index.d.ts +27 -0
  198. package/dist/components/index.d.ts.map +1 -0
  199. package/dist/components/index.js +25 -0
  200. package/dist/components/index.js.map +1 -0
  201. package/dist/components/layout/HorizontalLayout.d.ts +19 -0
  202. package/dist/components/layout/HorizontalLayout.d.ts.map +1 -0
  203. package/dist/components/layout/HorizontalLayout.js +62 -0
  204. package/dist/components/layout/HorizontalLayout.js.map +1 -0
  205. package/dist/components/layout/VerticalLayout.d.ts +16 -0
  206. package/dist/components/layout/VerticalLayout.d.ts.map +1 -0
  207. package/dist/components/layout/VerticalLayout.js +32 -0
  208. package/dist/components/layout/VerticalLayout.js.map +1 -0
  209. package/dist/components/layout/index.d.ts +6 -0
  210. package/dist/components/layout/index.d.ts.map +1 -0
  211. package/dist/components/layout/index.js +4 -0
  212. package/dist/components/layout/index.js.map +1 -0
  213. package/dist/components/layout/theme.d.ts +20 -0
  214. package/dist/components/layout/theme.d.ts.map +1 -0
  215. package/dist/components/layout/theme.js +23 -0
  216. package/dist/components/layout/theme.js.map +1 -0
  217. package/dist/components/setup/DoneStep.d.ts +7 -0
  218. package/dist/components/setup/DoneStep.d.ts.map +1 -0
  219. package/dist/components/setup/DoneStep.js +31 -0
  220. package/dist/components/setup/DoneStep.js.map +1 -0
  221. package/dist/components/setup/InstallingStep.d.ts +11 -0
  222. package/dist/components/setup/InstallingStep.d.ts.map +1 -0
  223. package/dist/components/setup/InstallingStep.js +27 -0
  224. package/dist/components/setup/InstallingStep.js.map +1 -0
  225. package/dist/components/setup/OptionsStep.d.ts +9 -0
  226. package/dist/components/setup/OptionsStep.d.ts.map +1 -0
  227. package/dist/components/setup/OptionsStep.js +39 -0
  228. package/dist/components/setup/OptionsStep.js.map +1 -0
  229. package/dist/components/setup/PrerequisitesStep.d.ts +7 -0
  230. package/dist/components/setup/PrerequisitesStep.d.ts.map +1 -0
  231. package/dist/components/setup/PrerequisitesStep.js +31 -0
  232. package/dist/components/setup/PrerequisitesStep.js.map +1 -0
  233. package/dist/components/setup/SetupFrame.d.ts +17 -0
  234. package/dist/components/setup/SetupFrame.d.ts.map +1 -0
  235. package/dist/components/setup/SetupFrame.js +33 -0
  236. package/dist/components/setup/SetupFrame.js.map +1 -0
  237. package/dist/components/setup/SetupWizard.d.ts +9 -0
  238. package/dist/components/setup/SetupWizard.d.ts.map +1 -0
  239. package/dist/components/setup/SetupWizard.js +149 -0
  240. package/dist/components/setup/SetupWizard.js.map +1 -0
  241. package/dist/components/setup/Spinner.d.ts +10 -0
  242. package/dist/components/setup/Spinner.d.ts.map +1 -0
  243. package/dist/components/setup/Spinner.js +20 -0
  244. package/dist/components/setup/Spinner.js.map +1 -0
  245. package/dist/components/setup/SyncStep.d.ts +11 -0
  246. package/dist/components/setup/SyncStep.d.ts.map +1 -0
  247. package/dist/components/setup/SyncStep.js +47 -0
  248. package/dist/components/setup/SyncStep.js.map +1 -0
  249. package/dist/components/setup/VerificationStep.d.ts +7 -0
  250. package/dist/components/setup/VerificationStep.d.ts.map +1 -0
  251. package/dist/components/setup/VerificationStep.js +27 -0
  252. package/dist/components/setup/VerificationStep.js.map +1 -0
  253. package/dist/components/setup/WelcomeStep.d.ts +6 -0
  254. package/dist/components/setup/WelcomeStep.d.ts.map +1 -0
  255. package/dist/components/setup/WelcomeStep.js +17 -0
  256. package/dist/components/setup/WelcomeStep.js.map +1 -0
  257. package/dist/components/shared/ProgressLine.d.ts +10 -0
  258. package/dist/components/shared/ProgressLine.d.ts.map +1 -0
  259. package/dist/components/shared/ProgressLine.js +18 -0
  260. package/dist/components/shared/ProgressLine.js.map +1 -0
  261. package/dist/components/shared/ProjectLine.d.ts +10 -0
  262. package/dist/components/shared/ProjectLine.d.ts.map +1 -0
  263. package/dist/components/shared/ProjectLine.js +19 -0
  264. package/dist/components/shared/ProjectLine.js.map +1 -0
  265. package/dist/components/shared/ScanningIndicator.d.ts +9 -0
  266. package/dist/components/shared/ScanningIndicator.d.ts.map +1 -0
  267. package/dist/components/shared/ScanningIndicator.js +22 -0
  268. package/dist/components/shared/ScanningIndicator.js.map +1 -0
  269. package/dist/components/shared/StatusLine.d.ts +13 -0
  270. package/dist/components/shared/StatusLine.d.ts.map +1 -0
  271. package/dist/components/shared/StatusLine.js +24 -0
  272. package/dist/components/shared/StatusLine.js.map +1 -0
  273. package/dist/components/shared/StatusLine.test.d.ts +8 -0
  274. package/dist/components/shared/StatusLine.test.d.ts.map +1 -0
  275. package/dist/components/shared/StatusLine.test.js +50 -0
  276. package/dist/components/shared/StatusLine.test.js.map +1 -0
  277. package/dist/components/shared/index.d.ts +4 -0
  278. package/dist/components/shared/index.d.ts.map +1 -0
  279. package/dist/components/shared/index.js +4 -0
  280. package/dist/components/shared/index.js.map +1 -0
  281. package/dist/handoff/catalog.test.d.ts +5 -0
  282. package/dist/handoff/catalog.test.d.ts.map +1 -0
  283. package/dist/handoff/catalog.test.js +172 -0
  284. package/dist/handoff/catalog.test.js.map +1 -0
  285. package/dist/handoff/subagents.test.d.ts +8 -0
  286. package/dist/handoff/subagents.test.d.ts.map +1 -0
  287. package/dist/handoff/subagents.test.js +139 -0
  288. package/dist/handoff/subagents.test.js.map +1 -0
  289. package/dist/hooks/useAddContextFlow.d.ts +29 -0
  290. package/dist/hooks/useAddContextFlow.d.ts.map +1 -0
  291. package/dist/hooks/useAddContextFlow.js +83 -0
  292. package/dist/hooks/useAddContextFlow.js.map +1 -0
  293. package/dist/hooks/useArchiveBrowser.d.ts +37 -0
  294. package/dist/hooks/useArchiveBrowser.d.ts.map +1 -0
  295. package/dist/hooks/useArchiveBrowser.js +175 -0
  296. package/dist/hooks/useArchiveBrowser.js.map +1 -0
  297. package/dist/hooks/useClaudeToken.d.ts +29 -0
  298. package/dist/hooks/useClaudeToken.d.ts.map +1 -0
  299. package/dist/hooks/useClaudeToken.js +166 -0
  300. package/dist/hooks/useClaudeToken.js.map +1 -0
  301. package/dist/hooks/useGoogleDocsBrowser.d.ts +29 -0
  302. package/dist/hooks/useGoogleDocsBrowser.d.ts.map +1 -0
  303. package/dist/hooks/useGoogleDocsBrowser.js +146 -0
  304. package/dist/hooks/useGoogleDocsBrowser.js.map +1 -0
  305. package/dist/hooks/useHandoffBrowser.d.ts +27 -0
  306. package/dist/hooks/useHandoffBrowser.d.ts.map +1 -0
  307. package/dist/hooks/useHandoffBrowser.js +92 -0
  308. package/dist/hooks/useHandoffBrowser.js.map +1 -0
  309. package/dist/hooks/useJacquesClient.d.ts +69 -0
  310. package/dist/hooks/useJacquesClient.d.ts.map +1 -0
  311. package/dist/hooks/useJacquesClient.js +248 -0
  312. package/dist/hooks/useJacquesClient.js.map +1 -0
  313. package/dist/hooks/useLlmWorking.d.ts +30 -0
  314. package/dist/hooks/useLlmWorking.d.ts.map +1 -0
  315. package/dist/hooks/useLlmWorking.js +127 -0
  316. package/dist/hooks/useLlmWorking.js.map +1 -0
  317. package/dist/hooks/useLoadContext.d.ts +27 -0
  318. package/dist/hooks/useLoadContext.d.ts.map +1 -0
  319. package/dist/hooks/useLoadContext.js +102 -0
  320. package/dist/hooks/useLoadContext.js.map +1 -0
  321. package/dist/hooks/useNotification.d.ts +36 -0
  322. package/dist/hooks/useNotification.d.ts.map +1 -0
  323. package/dist/hooks/useNotification.js +89 -0
  324. package/dist/hooks/useNotification.js.map +1 -0
  325. package/dist/hooks/useNotification.test.d.ts +9 -0
  326. package/dist/hooks/useNotification.test.d.ts.map +1 -0
  327. package/dist/hooks/useNotification.test.js +144 -0
  328. package/dist/hooks/useNotification.test.js.map +1 -0
  329. package/dist/hooks/useNotionBrowser.d.ts +30 -0
  330. package/dist/hooks/useNotionBrowser.d.ts.map +1 -0
  331. package/dist/hooks/useNotionBrowser.js +154 -0
  332. package/dist/hooks/useNotionBrowser.js.map +1 -0
  333. package/dist/hooks/useObsidianBrowser.d.ts +42 -0
  334. package/dist/hooks/useObsidianBrowser.d.ts.map +1 -0
  335. package/dist/hooks/useObsidianBrowser.js +63 -0
  336. package/dist/hooks/useObsidianBrowser.js.map +1 -0
  337. package/dist/hooks/useObsidianConfig.d.ts +28 -0
  338. package/dist/hooks/useObsidianConfig.d.ts.map +1 -0
  339. package/dist/hooks/useObsidianConfig.js +119 -0
  340. package/dist/hooks/useObsidianConfig.js.map +1 -0
  341. package/dist/hooks/useObsidianFileBrowser.d.ts +29 -0
  342. package/dist/hooks/useObsidianFileBrowser.d.ts.map +1 -0
  343. package/dist/hooks/useObsidianFileBrowser.js +114 -0
  344. package/dist/hooks/useObsidianFileBrowser.js.map +1 -0
  345. package/dist/hooks/useProjectDashboard.d.ts +38 -0
  346. package/dist/hooks/useProjectDashboard.d.ts.map +1 -0
  347. package/dist/hooks/useProjectDashboard.js +224 -0
  348. package/dist/hooks/useProjectDashboard.js.map +1 -0
  349. package/dist/hooks/useProjectSelector.d.ts +17 -0
  350. package/dist/hooks/useProjectSelector.d.ts.map +1 -0
  351. package/dist/hooks/useProjectSelector.js +43 -0
  352. package/dist/hooks/useProjectSelector.js.map +1 -0
  353. package/dist/hooks/useProjectSelector.test.d.ts +7 -0
  354. package/dist/hooks/useProjectSelector.test.d.ts.map +1 -0
  355. package/dist/hooks/useProjectSelector.test.js +117 -0
  356. package/dist/hooks/useProjectSelector.test.js.map +1 -0
  357. package/dist/hooks/useSaveFlow.d.ts +30 -0
  358. package/dist/hooks/useSaveFlow.d.ts.map +1 -0
  359. package/dist/hooks/useSaveFlow.js +195 -0
  360. package/dist/hooks/useSaveFlow.js.map +1 -0
  361. package/dist/hooks/useSessions.test.d.ts +7 -0
  362. package/dist/hooks/useSessions.test.d.ts.map +1 -0
  363. package/dist/hooks/useSessions.test.js +153 -0
  364. package/dist/hooks/useSessions.test.js.map +1 -0
  365. package/dist/hooks/useSessionsExperiment.d.ts +97 -0
  366. package/dist/hooks/useSessionsExperiment.d.ts.map +1 -0
  367. package/dist/hooks/useSessionsExperiment.js +321 -0
  368. package/dist/hooks/useSessionsExperiment.js.map +1 -0
  369. package/dist/hooks/useSettings.d.ts +47 -0
  370. package/dist/hooks/useSettings.d.ts.map +1 -0
  371. package/dist/hooks/useSettings.js +245 -0
  372. package/dist/hooks/useSettings.js.map +1 -0
  373. package/dist/hooks/useSetupWizard.d.ts +35 -0
  374. package/dist/hooks/useSetupWizard.d.ts.map +1 -0
  375. package/dist/hooks/useSetupWizard.js +438 -0
  376. package/dist/hooks/useSetupWizard.js.map +1 -0
  377. package/dist/hooks/useUsageLimits.d.ts +24 -0
  378. package/dist/hooks/useUsageLimits.d.ts.map +1 -0
  379. package/dist/hooks/useUsageLimits.js +58 -0
  380. package/dist/hooks/useUsageLimits.js.map +1 -0
  381. package/dist/hooks/useUsageLimits.test.d.ts +7 -0
  382. package/dist/hooks/useUsageLimits.test.d.ts.map +1 -0
  383. package/dist/hooks/useUsageLimits.test.js +136 -0
  384. package/dist/hooks/useUsageLimits.test.js.map +1 -0
  385. package/dist/hooks/useWorktrees.d.ts +28 -0
  386. package/dist/hooks/useWorktrees.d.ts.map +1 -0
  387. package/dist/hooks/useWorktrees.js +57 -0
  388. package/dist/hooks/useWorktrees.js.map +1 -0
  389. package/dist/hooks/useWorktrees.test.d.ts +7 -0
  390. package/dist/hooks/useWorktrees.test.d.ts.map +1 -0
  391. package/dist/hooks/useWorktrees.test.js +119 -0
  392. package/dist/hooks/useWorktrees.test.js.map +1 -0
  393. package/dist/templates/compact-prompt.d.ts +16 -0
  394. package/dist/templates/compact-prompt.d.ts.map +1 -0
  395. package/dist/templates/compact-prompt.js +47 -0
  396. package/dist/templates/compact-prompt.js.map +1 -0
  397. package/dist/templates/context-skill.d.ts +8 -0
  398. package/dist/templates/context-skill.d.ts.map +1 -0
  399. package/dist/templates/context-skill.js +42 -0
  400. package/dist/templates/context-skill.js.map +1 -0
  401. package/dist/types.d.ts +127 -0
  402. package/dist/types.d.ts.map +1 -0
  403. package/dist/types.js +8 -0
  404. package/dist/types.js.map +1 -0
  405. package/dist/utils/activity.d.ts +17 -0
  406. package/dist/utils/activity.d.ts.map +1 -0
  407. package/dist/utils/activity.js +78 -0
  408. package/dist/utils/activity.js.map +1 -0
  409. package/dist/utils/bottom-controls.d.ts +24 -0
  410. package/dist/utils/bottom-controls.d.ts.map +1 -0
  411. package/dist/utils/bottom-controls.js +29 -0
  412. package/dist/utils/bottom-controls.js.map +1 -0
  413. package/dist/utils/clipboard.d.ts +2 -0
  414. package/dist/utils/clipboard.d.ts.map +1 -0
  415. package/dist/utils/clipboard.js +20 -0
  416. package/dist/utils/clipboard.js.map +1 -0
  417. package/dist/utils/constants.d.ts +6 -0
  418. package/dist/utils/constants.d.ts.map +1 -0
  419. package/dist/utils/constants.js +6 -0
  420. package/dist/utils/constants.js.map +1 -0
  421. package/dist/utils/format.d.ts +17 -0
  422. package/dist/utils/format.d.ts.map +1 -0
  423. package/dist/utils/format.js +31 -0
  424. package/dist/utils/format.js.map +1 -0
  425. package/dist/utils/session-mode.d.ts +14 -0
  426. package/dist/utils/session-mode.d.ts.map +1 -0
  427. package/dist/utils/session-mode.js +29 -0
  428. package/dist/utils/session-mode.js.map +1 -0
  429. package/dist/utils/session-mode.test.d.ts +7 -0
  430. package/dist/utils/session-mode.test.d.ts.map +1 -0
  431. package/dist/utils/session-mode.test.js +102 -0
  432. package/dist/utils/session-mode.test.js.map +1 -0
  433. package/dist/utils/sessions-items-builder.d.ts +29 -0
  434. package/dist/utils/sessions-items-builder.d.ts.map +1 -0
  435. package/dist/utils/sessions-items-builder.js +394 -0
  436. package/dist/utils/sessions-items-builder.js.map +1 -0
  437. package/dist/utils/settings.d.ts +100 -0
  438. package/dist/utils/settings.d.ts.map +1 -0
  439. package/dist/utils/settings.js +206 -0
  440. package/dist/utils/settings.js.map +1 -0
  441. package/dist/websocket-client.d.ts +70 -0
  442. package/dist/websocket-client.d.ts.map +1 -0
  443. package/dist/websocket-client.js +188 -0
  444. package/dist/websocket-client.js.map +1 -0
  445. package/hooks/adapters/__init__.py +17 -0
  446. package/hooks/adapters/__pycache__/__init__.cpython-311.pyc +0 -0
  447. package/hooks/adapters/__pycache__/__init__.cpython-313.pyc +0 -0
  448. package/hooks/adapters/__pycache__/__init__.cpython-314.pyc +0 -0
  449. package/hooks/adapters/__pycache__/base.cpython-311.pyc +0 -0
  450. package/hooks/adapters/__pycache__/base.cpython-313.pyc +0 -0
  451. package/hooks/adapters/__pycache__/base.cpython-314.pyc +0 -0
  452. package/hooks/adapters/__pycache__/calibration.cpython-311.pyc +0 -0
  453. package/hooks/adapters/__pycache__/calibration.cpython-313.pyc +0 -0
  454. package/hooks/adapters/__pycache__/calibration.cpython-314.pyc +0 -0
  455. package/hooks/adapters/__pycache__/claude_code.cpython-311.pyc +0 -0
  456. package/hooks/adapters/__pycache__/claude_code.cpython-313.pyc +0 -0
  457. package/hooks/adapters/__pycache__/claude_code.cpython-314.pyc +0 -0
  458. package/hooks/adapters/__pycache__/cursor.cpython-311.pyc +0 -0
  459. package/hooks/adapters/__pycache__/cursor.cpython-313.pyc +0 -0
  460. package/hooks/adapters/__pycache__/cursor.cpython-314.pyc +0 -0
  461. package/hooks/adapters/__pycache__/skills.cpython-311.pyc +0 -0
  462. package/hooks/adapters/__pycache__/skills.cpython-313.pyc +0 -0
  463. package/hooks/adapters/__pycache__/skills.cpython-314.pyc +0 -0
  464. package/hooks/adapters/__pycache__/test_adapters.cpython-311-pytest-9.0.2.pyc +0 -0
  465. package/hooks/adapters/__pycache__/test_adapters.cpython-313.pyc +0 -0
  466. package/hooks/adapters/__pycache__/test_calibration.cpython-311-pytest-9.0.2.pyc +0 -0
  467. package/hooks/adapters/__pycache__/test_skills.cpython-311-pytest-9.0.2.pyc +0 -0
  468. package/hooks/adapters/__pycache__/test_tokenizer.cpython-311-pytest-9.0.2.pyc +0 -0
  469. package/hooks/adapters/__pycache__/tokenizer.cpython-311.pyc +0 -0
  470. package/hooks/adapters/__pycache__/tokenizer.cpython-313.pyc +0 -0
  471. package/hooks/adapters/__pycache__/tokenizer.cpython-314.pyc +0 -0
  472. package/hooks/adapters/base.py +459 -0
  473. package/hooks/adapters/calibration.py +236 -0
  474. package/hooks/adapters/claude_code.py +316 -0
  475. package/hooks/adapters/context_parser.py +288 -0
  476. package/hooks/adapters/cursor.py +258 -0
  477. package/hooks/adapters/skills.py +160 -0
  478. package/hooks/adapters/template.py +281 -0
  479. package/hooks/adapters/test_adapters.py +516 -0
  480. package/hooks/adapters/test_calibration.py +235 -0
  481. package/hooks/adapters/test_skills.py +162 -0
  482. package/hooks/adapters/test_tokenizer.py +158 -0
  483. package/hooks/adapters/tokenizer.py +192 -0
  484. package/hooks/claude-code/pre-tool-use.py +36 -0
  485. package/hooks/claude-code/register-session.py +35 -0
  486. package/hooks/claude-code/report-activity.py +32 -0
  487. package/hooks/claude-code/session-idle.py +32 -0
  488. package/hooks/claude-code/statusline.sh +91 -0
  489. package/hooks/claude-code/unregister-session.py +32 -0
  490. package/hooks/cursor/README.md +61 -0
  491. package/hooks/cursor/after-agent-response.py +97 -0
  492. package/hooks/cursor/hooks.json.template +30 -0
  493. package/hooks/cursor/post-tool-use.py +32 -0
  494. package/hooks/cursor/pre-compact.py +61 -0
  495. package/hooks/cursor/session-end.py +32 -0
  496. package/hooks/cursor/session-start.py +66 -0
  497. package/hooks/git-detect.sh +47 -0
  498. package/hooks/install.py +441 -0
  499. package/hooks/jacques-register-session.py +286 -0
  500. package/hooks/jacques-report-activity.py +145 -0
  501. package/hooks/jacques-session-idle.py +57 -0
  502. package/hooks/jacques-unregister-session.py +57 -0
  503. package/hooks/requirements.txt +9 -0
  504. package/hooks/statusline.py +457 -0
  505. package/hooks/statusline.sh +212 -0
  506. package/package.json +63 -0
  507. package/skills/jacques-continue/SKILL.md +87 -0
  508. 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":"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"}
@@ -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"}