@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,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { MUTED_TEXT, ERROR_COLOR, WARNING_COLOR, SUCCESS_COLOR } from "./layout/theme.js";
4
+ export function ContextProgress({ session, }) {
5
+ if (!session) {
6
+ return (_jsx(Box, { flexDirection: "column", paddingY: 1, children: _jsx(Text, { color: MUTED_TEXT, children: " No active session" }) }));
7
+ }
8
+ const metrics = session.context_metrics;
9
+ if (!metrics) {
10
+ return (_jsx(Box, { flexDirection: "column", paddingY: 1, children: _jsx(Text, { color: MUTED_TEXT, children: " Context: Waiting for data..." }) }));
11
+ }
12
+ const percentage = metrics.used_percentage;
13
+ const usedTokens = metrics.total_input_tokens || 0;
14
+ const windowSize = metrics.context_window_size || 200000;
15
+ const isEstimate = metrics.is_estimate ?? false;
16
+ // Format numbers with commas
17
+ const formatNumber = (n) => n.toLocaleString();
18
+ // Determine color based on usage
19
+ const getColor = (pct) => {
20
+ if (pct >= 70)
21
+ return ERROR_COLOR;
22
+ if (pct >= 50)
23
+ return WARNING_COLOR;
24
+ return SUCCESS_COLOR;
25
+ };
26
+ const color = getColor(percentage);
27
+ // Build progress bar (50 chars wide)
28
+ const barWidth = 50;
29
+ const filledWidth = Math.round((percentage / 100) * barWidth);
30
+ const emptyWidth = barWidth - filledWidth;
31
+ const filledBar = "█".repeat(filledWidth);
32
+ const emptyBar = "░".repeat(emptyWidth);
33
+ return (_jsxs(Box, { flexDirection: "column", paddingY: 1, children: [_jsxs(Text, { children: [" ", _jsxs(Text, { color: color, children: ["Context: ", percentage.toFixed(1), "%"] }), _jsxs(Text, { color: MUTED_TEXT, children: [" ", "(", formatNumber(usedTokens), " / ", formatNumber(windowSize), " tokens)", isEstimate ? " ~" : ""] })] }), _jsxs(Text, { children: [" ", _jsx(Text, { color: color, children: filledBar }), _jsx(Text, { color: MUTED_TEXT, children: emptyBar })] })] }));
34
+ }
35
+ export default ContextProgress;
36
+ //# sourceMappingURL=ContextProgress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextProgress.js","sourceRoot":"","sources":["../../src/components/ContextProgress.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAO1F,MAAM,UAAU,eAAe,CAAC,EAC9B,OAAO,GACc;IACrB,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YACrC,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,mCAA2B,GAC9C,CACP,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,eAAe,CAAC;IAExC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,YACrC,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,8CAAsC,GACzD,CACP,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,eAAe,CAAC;IAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,kBAAkB,IAAI,CAAC,CAAC;IACnD,MAAM,UAAU,GAAG,OAAO,CAAC,mBAAmB,IAAI,MAAM,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,CAAC;IAEhD,6BAA6B;IAC7B,MAAM,YAAY,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IAE/D,iCAAiC;IACjC,MAAM,QAAQ,GAAG,CAAC,GAAW,EAAU,EAAE;QACvC,IAAI,GAAG,IAAI,EAAE;YAAE,OAAO,WAAW,CAAC;QAClC,IAAI,GAAG,IAAI,EAAE;YAAE,OAAO,aAAa,CAAC;QACpC,OAAO,aAAa,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;IAEnC,qCAAqC;IACrC,MAAM,QAAQ,GAAG,EAAE,CAAC;IACpB,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC1C,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAExC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,aAErC,MAAC,IAAI,eACF,YAAY,EACb,MAAC,IAAI,IAAC,KAAK,EAAE,KAAK,0BAAY,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,EAC5D,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,aACpB,GAAG,OACF,YAAY,CAAC,UAAU,CAAC,SAAK,YAAY,CAAC,UAAU,CAAC,cACtD,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAClB,IACF,EAGP,MAAC,IAAI,eACF,YAAY,EACb,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,YAAG,SAAS,GAAQ,EACtC,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,YAAG,QAAQ,GAAQ,IACrC,IACH,CACP,CAAC;AACJ,CAAC;AAED,eAAe,eAAe,CAAC"}
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Dashboard Component
3
+ *
4
+ * Thin view router that tracks terminal dimensions and delegates
5
+ * rendering to the appropriate view component based on currentView.
6
+ */
7
+ import React from "react";
8
+ import type { UseSettingsState } from "../hooks/useSettings.js";
9
+ import type { UseArchiveBrowserState } from "../hooks/useArchiveBrowser.js";
10
+ import type { UseProjectDashboardState } from "../hooks/useProjectDashboard.js";
11
+ import type { UseClaudeTokenState } from "../hooks/useClaudeToken.js";
12
+ import type { ContentItem } from "../hooks/useSessionsExperiment.js";
13
+ import type { UsageLimits } from "../hooks/useUsageLimits.js";
14
+ import type { Session } from "@jacques-ai/core";
15
+ export type DashboardView = "main" | "settings" | "archive-browser" | "archive-initializing" | "project-dashboard" | "plan-viewer" | "sessions-experiment" | "sessions" | "projects" | "worktrees" | "save" | "load" | "load-sources" | "obsidian-config" | "obsidian-browser" | "google-docs-browser" | "notion-browser" | "add-context-confirm" | "fetch" | "handoff-browser" | "llm-working";
16
+ interface DashboardProps {
17
+ sessions: Session[];
18
+ focusedSessionId: string | null;
19
+ currentView: DashboardView;
20
+ selectedMenuIndex: number;
21
+ notification: string | null;
22
+ selectedProject: string | null;
23
+ settings: UseSettingsState;
24
+ claudeToken: UseClaudeTokenState;
25
+ usageLimits: UsageLimits | null;
26
+ usageLoading: boolean;
27
+ archive: UseArchiveBrowserState;
28
+ projectDashboard: UseProjectDashboardState;
29
+ sessionsExpItems: ContentItem[];
30
+ sessionsExpSelectableIndices: number[];
31
+ sessionsExpSelectedIndex: number;
32
+ sessionsExpSelectedIds: Set<string>;
33
+ sessionsExpShowHelp: boolean;
34
+ sessionsExpScrollBias: number;
35
+ sessionsExpIsCreatingWorktree: boolean;
36
+ sessionsExpNewWorktreeName: string;
37
+ sessionsExpWorktreeCreateError: string | null;
38
+ sessionsExpRepoRoot: string | null;
39
+ sessionsExpCreatingForRepoRoot: string | null;
40
+ sessionsExpRemoveDeleteBranch: boolean;
41
+ sessionsExpRemoveForce: boolean;
42
+ scanning?: boolean;
43
+ }
44
+ export declare function Dashboard(props: DashboardProps): React.ReactElement;
45
+ export default Dashboard;
46
+ //# sourceMappingURL=Dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard.d.ts","sourceRoot":"","sources":["../../src/components/Dashboard.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AASnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAIhD,MAAM,MAAM,aAAa,GACrB,MAAM,GACN,UAAU,GACV,iBAAiB,GACjB,sBAAsB,GACtB,mBAAmB,GACnB,aAAa,GACb,qBAAqB,GAErB,UAAU,GACV,UAAU,GACV,WAAW,GACX,MAAM,GACN,MAAM,GACN,cAAc,GACd,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,gBAAgB,GAChB,qBAAqB,GACrB,OAAO,GACP,iBAAiB,GACjB,aAAa,CAAC;AAElB,UAAU,cAAc;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,WAAW,EAAE,aAAa,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAE/B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,WAAW,EAAE,mBAAmB,CAAC;IACjC,WAAW,EAAE,WAAW,GAAG,IAAI,CAAC;IAChC,YAAY,EAAE,OAAO,CAAC;IAEtB,OAAO,EAAE,sBAAsB,CAAC;IAEhC,gBAAgB,EAAE,wBAAwB,CAAC;IAE3C,gBAAgB,EAAE,WAAW,EAAE,CAAC;IAChC,4BAA4B,EAAE,MAAM,EAAE,CAAC;IACvC,wBAAwB,EAAE,MAAM,CAAC;IACjC,sBAAsB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,6BAA6B,EAAE,OAAO,CAAC;IACvC,0BAA0B,EAAE,MAAM,CAAC;IACnC,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,8BAA8B,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,6BAA6B,EAAE,OAAO,CAAC;IACvC,sBAAsB,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,KAAK,CAAC,YAAY,CA+JnE;AAED,eAAe,SAAS,CAAC"}
@@ -0,0 +1,67 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * Dashboard Component
4
+ *
5
+ * Thin view router that tracks terminal dimensions and delegates
6
+ * rendering to the appropriate view component based on currentView.
7
+ */
8
+ import { useState, useEffect } from "react";
9
+ import { Box, useStdout } from "ink";
10
+ import { MainMenuView } from "./MainMenuView.js";
11
+ import { SettingsView } from "./SettingsView.js";
12
+ import { ArchiveBrowserView } from "./ArchiveBrowserView.js";
13
+ import { ArchiveInitProgressView } from "./ArchiveInitProgressView.js";
14
+ import { ProjectDashboardView } from "./ProjectDashboardView.js";
15
+ import { PlanViewerView } from "./PlanViewerView.js";
16
+ import { SessionsExperimentView } from "./SessionsExperimentView.js";
17
+ import { getProjectGroupKey } from "@jacques-ai/core";
18
+ export function Dashboard(props) {
19
+ const { stdout } = useStdout();
20
+ const [terminalWidth, setTerminalWidth] = useState(stdout?.columns || 80);
21
+ const [terminalHeight, setTerminalHeight] = useState(stdout?.rows || 24);
22
+ useEffect(() => {
23
+ const handleResize = () => {
24
+ if (stdout && "write" in stdout && typeof stdout.write === "function") {
25
+ stdout.write("\x1Bc");
26
+ }
27
+ if (stdout?.columns)
28
+ setTerminalWidth(stdout.columns);
29
+ if (stdout?.rows)
30
+ setTerminalHeight(stdout.rows);
31
+ };
32
+ if (stdout && "on" in stdout && typeof stdout.on === "function") {
33
+ stdout.on("resize", handleResize);
34
+ return () => {
35
+ if ("off" in stdout && typeof stdout.off === "function") {
36
+ stdout.off("resize", handleResize);
37
+ }
38
+ };
39
+ }
40
+ }, [stdout]);
41
+ const tw = terminalWidth;
42
+ const th = terminalHeight;
43
+ const focusedSession = props.sessions.find((s) => s.session_id === props.focusedSessionId);
44
+ switch (props.currentView) {
45
+ case "settings":
46
+ return (_jsx(Box, { width: tw, height: th, flexDirection: "column", children: _jsx(SettingsView, { terminalWidth: tw, selectedIndex: props.settings.index, autoArchive: props.settings.autoArchiveEnabled, skipPermissions: props.settings.skipPermissions, stats: props.settings.archiveStats, loading: props.settings.archiveStatsLoading, scrollOffset: props.settings.scrollOffset, syncProgress: props.settings.syncProgress, usageLimits: props.usageLimits, usageLoading: props.usageLoading, claudeConnected: props.claudeToken.connected, claudeTokenMasked: props.claudeToken.tokenMasked, claudeTokenInput: props.claudeToken.tokenInput, claudeTokenError: props.claudeToken.tokenError, isTokenInputMode: props.claudeToken.isInputMode, isTokenVerifying: props.claudeToken.isVerifying, showConnectionSuccess: props.claudeToken.showSuccess, notificationSettings: props.settings.notificationSettings, notificationsLoading: props.settings.notificationsLoading }) }));
47
+ case "archive-browser":
48
+ return (_jsx(Box, { width: tw, height: th, flexDirection: "column", children: _jsx(ArchiveBrowserView, { items: props.archive.items, selectedIndex: props.archive.selectedIndex, scrollOffset: props.archive.scrollOffset, terminalWidth: tw, loading: props.archive.loading, error: props.archive.error }) }));
49
+ case "archive-initializing":
50
+ return (_jsx(Box, { width: tw, height: th, flexDirection: "column", children: _jsx(ArchiveInitProgressView, { progress: props.archive.initProgress, result: props.archive.initResult, terminalWidth: tw }) }));
51
+ case "project-dashboard": {
52
+ const projectSession = focusedSession || props.sessions[0];
53
+ const projectName = projectSession ? getProjectGroupKey(projectSession) : "Unknown Project";
54
+ return (_jsx(Box, { width: tw, height: th, flexDirection: "column", children: _jsx(ProjectDashboardView, { projectName: projectName, terminalWidth: tw, terminalHeight: th, statistics: props.projectDashboard.stats, sessions: props.projectDashboard.dashboardSessions, plans: props.projectDashboard.plans, activeSection: props.projectDashboard.section, selectedIndex: props.projectDashboard.selectedIndex, scrollOffset: props.projectDashboard.scrollOffset, loading: props.projectDashboard.loading, planProgress: props.projectDashboard.planProgressMap }) }));
55
+ }
56
+ case "sessions-experiment":
57
+ return (_jsx(Box, { width: tw, height: th, flexDirection: "column", children: _jsx(SessionsExperimentView, { items: props.sessionsExpItems, selectableIndices: props.sessionsExpSelectableIndices, selectedIndex: props.sessionsExpSelectedIndex, selectedIds: props.sessionsExpSelectedIds, showHelp: props.sessionsExpShowHelp, scrollBias: props.sessionsExpScrollBias, notification: props.notification, terminalWidth: tw, terminalHeight: th, isCreatingWorktree: props.sessionsExpIsCreatingWorktree, newWorktreeName: props.sessionsExpNewWorktreeName, worktreeCreateError: props.sessionsExpWorktreeCreateError, repoRoot: props.sessionsExpRepoRoot, creatingForRepoRoot: props.sessionsExpCreatingForRepoRoot, projectName: props.selectedProject, removeDeleteBranch: props.sessionsExpRemoveDeleteBranch, removeForce: props.sessionsExpRemoveForce, scanning: props.scanning }) }));
58
+ case "plan-viewer":
59
+ if (!props.projectDashboard.planViewerPlan)
60
+ break;
61
+ return (_jsx(Box, { width: tw, height: th, flexDirection: "column", children: _jsx(PlanViewerView, { plan: props.projectDashboard.planViewerPlan, content: props.projectDashboard.planViewerContent, terminalWidth: tw, terminalHeight: th, scrollOffset: props.projectDashboard.planViewerScrollOffset, progress: props.projectDashboard.planViewerProgress, progressLoading: props.projectDashboard.planViewerProgressLoading }) }));
62
+ }
63
+ // Main menu view (default)
64
+ return (_jsx(Box, { width: tw, height: th, flexDirection: "column", children: _jsx(MainMenuView, { sessions: props.sessions, focusedSession: focusedSession ?? null, selectedMenuIndex: props.selectedMenuIndex, notification: props.notification, terminalWidth: tw, selectedProject: props.selectedProject, scanning: props.scanning }) }));
65
+ }
66
+ export default Dashboard;
67
+ //# sourceMappingURL=Dashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Dashboard.js","sourceRoot":"","sources":["../../src/components/Dashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Filter Selection View
3
+ *
4
+ * Shows filter options with token estimates for saving contexts.
5
+ */
6
+ import React from "react";
7
+ import type { FilterTokenEstimates } from "@jacques-ai/core";
8
+ interface FilterSelectionViewProps {
9
+ estimates: FilterTokenEstimates;
10
+ selectedFilterIndex: number;
11
+ terminalWidth: number;
12
+ }
13
+ export declare function FilterSelectionView({ estimates, selectedFilterIndex, terminalWidth, }: FilterSelectionViewProps): React.ReactElement;
14
+ export {};
15
+ //# sourceMappingURL=FilterSelectionView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterSelectionView.d.ts","sourceRoot":"","sources":["../../src/components/FilterSelectionView.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAQ1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,UAAU,wBAAwB;IAChC,SAAS,EAAE,oBAAoB,CAAC;IAChC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAQD,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,mBAAmB,EACnB,aAAa,GACd,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CAmD/C"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { formatSessionTokenCount as formatTokenCount, FILTER_CONFIGS, FilterType, } from "@jacques-ai/core";
4
+ import { ACCENT_COLOR } from "./layout/theme.js";
5
+ const FILTER_ORDER = [
6
+ FilterType.EVERYTHING,
7
+ FilterType.WITHOUT_TOOLS,
8
+ FilterType.MESSAGES_ONLY,
9
+ ];
10
+ export function FilterSelectionView({ estimates, selectedFilterIndex, terminalWidth, }) {
11
+ const isHorizontal = terminalWidth >= 60;
12
+ return (_jsxs(Box, { flexDirection: "column", gap: 0, children: [_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Select save format" }) }), FILTER_ORDER.map((filterType, index) => {
13
+ const config = FILTER_CONFIGS[filterType];
14
+ const estimate = estimates[filterType];
15
+ const isSelected = index === selectedFilterIndex;
16
+ const currentTokens = formatTokenCount(estimate.current);
17
+ const filteredTokens = formatTokenCount(estimate.filtered);
18
+ const savings = estimate.savings > 0
19
+ ? ` (-${estimate.savingsPercent.toFixed(0)}%)`
20
+ : "";
21
+ const tokenDisplay = estimate.savings === 0
22
+ ? `${currentTokens} tokens (no change)`
23
+ : `${currentTokens} → ${filteredTokens} tokens${savings}`;
24
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsx(Box, { children: _jsxs(Text, { color: isSelected ? ACCENT_COLOR : "white", children: [isSelected ? "> " : " ", _jsx(Text, { bold: isSelected, children: config.label })] }) }), _jsx(Box, { marginLeft: 4, children: _jsx(Text, { dimColor: true, children: tokenDisplay }) })] }, filterType));
25
+ }), _jsx(Box, { marginTop: 1, borderStyle: "single", borderColor: "gray", paddingX: 1, children: _jsx(Text, { dimColor: true, children: "[\u2191\u2193] Navigate \u2022 [Enter] Select \u2022 [Esc] Cancel" }) })] }));
26
+ }
27
+ //# sourceMappingURL=FilterSelectionView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FilterSelectionView.js","sourceRoot":"","sources":["../../src/components/FilterSelectionView.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EACL,uBAAuB,IAAI,gBAAgB,EAC3C,cAAc,EACd,UAAU,GACX,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASjD,MAAM,YAAY,GAAG;IACnB,UAAU,CAAC,UAAU;IACrB,UAAU,CAAC,aAAa;IACxB,UAAU,CAAC,aAAa;CACzB,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,EAClC,SAAS,EACT,mBAAmB,EACnB,aAAa,GACY;IACzB,MAAM,YAAY,GAAG,aAAa,IAAI,EAAE,CAAC;IAEzC,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,GAAG,EAAE,CAAC,aAEhC,KAAC,GAAG,IAAC,YAAY,EAAE,CAAC,YAClB,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,mCAEvB,GACH,EAGL,YAAY,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,KAAK,EAAE,EAAE;gBACtC,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;gBACvC,MAAM,UAAU,GAAG,KAAK,KAAK,mBAAmB,CAAC;gBAEjD,MAAM,aAAa,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzD,MAAM,cAAc,GAAG,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC3D,MAAM,OAAO,GACX,QAAQ,CAAC,OAAO,GAAG,CAAC;oBAClB,CAAC,CAAC,MAAM,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;oBAC9C,CAAC,CAAC,EAAE,CAAC;gBAET,MAAM,YAAY,GAChB,QAAQ,CAAC,OAAO,KAAK,CAAC;oBACpB,CAAC,CAAC,GAAG,aAAa,qBAAqB;oBACvC,CAAC,CAAC,GAAG,aAAa,MAAM,cAAc,UAAU,OAAO,EAAE,CAAC;gBAE9D,OAAO,CACL,MAAC,GAAG,IAAkB,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC,aAC1D,KAAC,GAAG,cACF,MAAC,IAAI,IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,aAC7C,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EACzB,KAAC,IAAI,IAAC,IAAI,EAAE,UAAU,YAAG,MAAM,CAAC,KAAK,GAAQ,IACxC,GACH,EACN,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YAChB,KAAC,IAAI,IAAC,QAAQ,kBAAE,YAAY,GAAQ,GAChC,KATE,UAAU,CAUd,CACP,CAAC;YACJ,CAAC,CAAC,EAGF,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,WAAW,EAAC,QAAQ,EAAC,WAAW,EAAC,MAAM,EAAC,QAAQ,EAAE,CAAC,YACpE,KAAC,IAAI,IAAC,QAAQ,wFAAqD,GAC/D,IACF,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * GoogleDocsBrowserView Component
3
+ *
4
+ * File explorer for Google Drive documents with expandable folders.
5
+ * Uses the same bordered layout as the main dashboard.
6
+ */
7
+ import React from "react";
8
+ import type { FlatTreeItem } from "@jacques-ai/core";
9
+ interface GoogleDocsBrowserViewProps {
10
+ items: FlatTreeItem[];
11
+ selectedIndex: number;
12
+ scrollOffset: number;
13
+ terminalWidth: number;
14
+ loading?: boolean;
15
+ error?: string | null;
16
+ }
17
+ export declare const GOOGLE_DOCS_VISIBLE_ITEMS = 6;
18
+ export declare function GoogleDocsBrowserView({ items, selectedIndex, scrollOffset, terminalWidth, loading, error, }: GoogleDocsBrowserViewProps): React.ReactElement;
19
+ export {};
20
+ //# sourceMappingURL=GoogleDocsBrowserView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleDocsBrowserView.d.ts","sourceRoot":"","sources":["../../src/components/GoogleDocsBrowserView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAWrD,UAAU,0BAA0B;IAClC,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAe,EACf,KAAY,GACb,EAAE,0BAA0B,GAAG,KAAK,CAAC,YAAY,CAyIjD"}
@@ -0,0 +1,72 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, ERROR_COLOR, HORIZONTAL_LAYOUT_MIN_WIDTH, FIXED_CONTENT_HEIGHT, } from "./layout/index.js";
4
+ // Visible items in the scrollable area (reserve lines for header/footer)
5
+ export const GOOGLE_DOCS_VISIBLE_ITEMS = 6;
6
+ export function GoogleDocsBrowserView({ items, selectedIndex, scrollOffset, terminalWidth, loading = false, error = null, }) {
7
+ const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
8
+ const showVersion = terminalWidth >= 70;
9
+ // Calculate visible window
10
+ const totalItems = items.length;
11
+ const canScrollUp = scrollOffset > 0;
12
+ const canScrollDown = scrollOffset + GOOGLE_DOCS_VISIBLE_ITEMS < totalItems;
13
+ // Get visible slice
14
+ const visibleItems = items.slice(scrollOffset, scrollOffset + GOOGLE_DOCS_VISIBLE_ITEMS);
15
+ // Build content lines
16
+ const contentLines = [];
17
+ // Title line
18
+ if (canScrollUp) {
19
+ contentLines.push(_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: ["Google Docs", " "] }), _jsx(Text, { color: MUTED_TEXT, children: "\u25B2 more" })] }, "title"));
20
+ }
21
+ else {
22
+ contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Google Docs" }, "title"));
23
+ }
24
+ // Separator
25
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(35) }, "sep"));
26
+ // Loading state
27
+ if (loading) {
28
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "Loading files..." }, "loading"));
29
+ }
30
+ // Error state
31
+ else if (error) {
32
+ contentLines.push(_jsxs(Text, { color: ERROR_COLOR, children: ["\u2717 ", error] }, "error"));
33
+ }
34
+ // Empty state
35
+ else if (items.length === 0) {
36
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "No documents found" }, "empty"));
37
+ }
38
+ // File list
39
+ else {
40
+ for (let i = 0; i < visibleItems.length; i++) {
41
+ const item = visibleItems[i];
42
+ const actualIndex = scrollOffset + i;
43
+ const isSelected = actualIndex === selectedIndex;
44
+ const textColor = isSelected ? ACCENT_COLOR : "white";
45
+ // Indentation based on depth
46
+ const indent = " ".repeat(item.depth);
47
+ // Icon and name
48
+ let icon;
49
+ let suffix = "";
50
+ if (item.type === "folder") {
51
+ icon = item.isExpanded ? "▼ " : "▶ ";
52
+ suffix = ` (${item.fileCount})`;
53
+ }
54
+ else {
55
+ icon = "📄 ";
56
+ }
57
+ contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? ">" : " ", indent, icon, item.name, _jsx(Text, { color: MUTED_TEXT, children: suffix })] }, item.id));
58
+ }
59
+ }
60
+ // Scroll down indicator or footer
61
+ if (canScrollDown) {
62
+ contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: ["\u25BC ", totalItems - scrollOffset - GOOGLE_DOCS_VISIBLE_ITEMS, " more"] }, "more"));
63
+ }
64
+ // Pad to fixed height
65
+ while (contentLines.length < FIXED_CONTENT_HEIGHT) {
66
+ contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
67
+ }
68
+ const bottomControls = (_jsx(Text, { color: MUTED_TEXT, children: "[Enter] Select [Esc] Back" }));
69
+ // Render with layout
70
+ 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 })) }));
71
+ }
72
+ //# sourceMappingURL=GoogleDocsBrowserView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GoogleDocsBrowserView.js","sourceRoot":"","sources":["../../src/components/GoogleDocsBrowserView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * HandoffBrowserView Component
3
+ *
4
+ * Browse and select handoff files from .jacques/handoffs/
5
+ * Similar pattern to ObsidianBrowserView.
6
+ */
7
+ import React from "react";
8
+ import type { HandoffEntry } from "@jacques-ai/core";
9
+ interface HandoffBrowserViewProps {
10
+ entries: HandoffEntry[];
11
+ selectedIndex: number;
12
+ scrollOffset: number;
13
+ terminalWidth: number;
14
+ loading?: boolean;
15
+ error?: string | null;
16
+ }
17
+ declare const VISIBLE_ITEMS = 6;
18
+ export declare function HandoffBrowserView({ entries, selectedIndex, scrollOffset, terminalWidth, loading, error, }: HandoffBrowserViewProps): React.ReactElement;
19
+ export { VISIBLE_ITEMS };
20
+ //# sourceMappingURL=HandoffBrowserView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandoffBrowserView.d.ts","sourceRoot":"","sources":["../../src/components/HandoffBrowserView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYrD,UAAU,uBAAuB;IAC/B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,QAAA,MAAM,aAAa,IAAI,CAAC;AAExB,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAe,EACf,KAAY,GACb,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CAkI9C;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}
@@ -0,0 +1,66 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { formatHandoffDate, formatTokenEstimate } 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 HandoffBrowserView({ entries, 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 = entries.length;
12
+ const canScrollUp = scrollOffset > 0;
13
+ const canScrollDown = scrollOffset + VISIBLE_ITEMS < totalItems;
14
+ // Get visible slice
15
+ const visibleItems = entries.slice(scrollOffset, scrollOffset + VISIBLE_ITEMS);
16
+ // Build content lines
17
+ const contentLines = [];
18
+ // Title line with scroll indicator
19
+ if (canScrollUp) {
20
+ contentLines.push(_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: ["Browse Handoffs", " "] }), _jsx(Text, { color: MUTED_TEXT, children: "\u25B2 more" })] }, "title"));
21
+ }
22
+ else {
23
+ contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Browse Handoffs" }, "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 handoffs..." }, "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 (entries.length === 0) {
37
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "No handoffs found" }, "empty"));
38
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "Press [h] to generate one" }, "hint"));
39
+ }
40
+ // Handoff list
41
+ else {
42
+ for (let i = 0; i < visibleItems.length; i++) {
43
+ const entry = visibleItems[i];
44
+ const actualIndex = scrollOffset + i;
45
+ const isSelected = actualIndex === selectedIndex;
46
+ const textColor = isSelected ? ACCENT_COLOR : "white";
47
+ // Format: "2026-01-31 14:30 - Session Handoff (2.1k tokens)"
48
+ const dateStr = formatHandoffDate(entry.timestamp);
49
+ const tokenStr = formatTokenEstimate(entry.tokenEstimate);
50
+ contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? "> " : " ", dateStr, _jsxs(Text, { color: MUTED_TEXT, children: [" (", tokenStr, " tokens)"] })] }, entry.filename));
51
+ }
52
+ }
53
+ // Scroll down indicator or footer
54
+ if (canScrollDown) {
55
+ contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: ["\u25BC ", totalItems - scrollOffset - VISIBLE_ITEMS, " more"] }, "more"));
56
+ }
57
+ // Pad to fixed height
58
+ while (contentLines.length < FIXED_CONTENT_HEIGHT) {
59
+ contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
60
+ }
61
+ const bottomControls = (_jsx(Text, { color: MUTED_TEXT, children: "[Enter] Copy [Esc] Back" }));
62
+ // Render with layout
63
+ 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 })) }));
64
+ }
65
+ export { VISIBLE_ITEMS };
66
+ //# sourceMappingURL=HandoffBrowserView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HandoffBrowserView.js","sourceRoot":"","sources":["../../src/components/HandoffBrowserView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Header Component
3
+ *
4
+ * Displays the mascot, title, version, and connection status.
5
+ * Layout inspired by Claude Code's header.
6
+ */
7
+ import React from "react";
8
+ interface HeaderProps {
9
+ connected: boolean;
10
+ sessionCount: number;
11
+ }
12
+ export declare function Header({ connected, sessionCount, }: HeaderProps): React.ReactElement;
13
+ export default Header;
14
+ //# sourceMappingURL=Header.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,UAAU,WAAW;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,MAAM,CAAC,EACrB,SAAS,EACT,YAAY,GACb,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAalC;AA4BD,eAAe,MAAM,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { Mascot } from "./Mascot.js";
4
+ import { ACCENT_COLOR, SUCCESS_COLOR, ERROR_COLOR } from "./layout/theme.js";
5
+ const VERSION = "0.1.0";
6
+ export function Header({ connected, sessionCount, }) {
7
+ return (_jsxs(Box, { children: [_jsx(Mascot, { size: "large" }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: ["Jacques ", _jsxs(Text, { color: "gray", children: ["v", VERSION] })] }), _jsx(Text, { color: "gray", children: "Jacques Context Monitor" }), _jsx(ConnectionStatus, { connected: connected, sessionCount: sessionCount })] })] }));
8
+ }
9
+ function ConnectionStatus({ connected, sessionCount, }) {
10
+ if (connected) {
11
+ return (_jsxs(Text, { children: [_jsx(Text, { color: SUCCESS_COLOR, children: "\u25CF Connected" }), sessionCount > 0 && (_jsxs(Text, { color: "gray", children: [" ", "\u00B7 ", sessionCount, " session", sessionCount !== 1 ? "s" : ""] }))] }));
12
+ }
13
+ return _jsx(Text, { color: ERROR_COLOR, children: "\u25CB Disconnected" });
14
+ }
15
+ export default Header;
16
+ //# sourceMappingURL=Header.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Header.js","sourceRoot":"","sources":["../../src/components/Header.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAE7E,MAAM,OAAO,GAAG,OAAO,CAAC;AAOxB,MAAM,UAAU,MAAM,CAAC,EACrB,SAAS,EACT,YAAY,GACA;IACZ,OAAO,CACL,MAAC,GAAG,eACF,KAAC,MAAM,IAAC,IAAI,EAAC,OAAO,GAAG,EACvB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,UAAU,EAAE,CAAC,aACvC,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAE,YAAY,yBACpB,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,kBAAG,OAAO,IAAQ,IACvC,EACP,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wCAA+B,EACjD,KAAC,gBAAgB,IAAC,SAAS,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAI,IAClE,IACF,CACP,CAAC;AACJ,CAAC;AAOD,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,YAAY,GACU;IACtB,IAAI,SAAS,EAAE,CAAC;QACd,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,aAAa,iCAAoB,EAC7C,YAAY,GAAG,CAAC,IAAI,CACnB,MAAC,IAAI,IAAC,KAAK,EAAC,MAAM,aACf,GAAG,aACD,YAAY,cAAU,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IACjD,CACR,IACI,CACR,CAAC;IACJ,CAAC;IAED,OAAO,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,oCAAuB,CAAC;AACzD,CAAC;AAED,eAAe,MAAM,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * HorizontalMenu Component
3
+ *
4
+ * Arrow-navigable horizontal button menu
5
+ */
6
+ import React from "react";
7
+ export interface MenuItem {
8
+ key: string;
9
+ label: string;
10
+ enabled: boolean;
11
+ }
12
+ interface HorizontalMenuProps {
13
+ items: MenuItem[];
14
+ selectedIndex: number;
15
+ }
16
+ /**
17
+ * Horizontal menu with arrow navigation
18
+ * - Selected + enabled: "> Button" (cyan, bold)
19
+ * - Unselected + enabled: " Button" (white)
20
+ * - Disabled: " Button" (gray, dim)
21
+ */
22
+ export declare function HorizontalMenu({ items, selectedIndex }: HorizontalMenuProps): React.ReactElement;
23
+ export default HorizontalMenu;
24
+ //# sourceMappingURL=HorizontalMenu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalMenu.d.ts","sourceRoot":"","sources":["../../src/components/HorizontalMenu.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,mBAAmB;IAC3B,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAqBhG;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text, Box } from "ink";
3
+ import { ACCENT_COLOR } from "./layout/theme.js";
4
+ /**
5
+ * Horizontal menu with arrow navigation
6
+ * - Selected + enabled: "> Button" (cyan, bold)
7
+ * - Unselected + enabled: " Button" (white)
8
+ * - Disabled: " Button" (gray, dim)
9
+ */
10
+ export function HorizontalMenu({ items, selectedIndex }) {
11
+ return (_jsx(Box, { marginLeft: 4, children: items.map((item, index) => {
12
+ const isSelected = index === selectedIndex && item.enabled;
13
+ const prefix = isSelected ? "> " : " ";
14
+ const color = isSelected ? ACCENT_COLOR : item.enabled ? "white" : "gray";
15
+ const bold = isSelected;
16
+ return (_jsxs(Text, { children: [prefix, _jsx(Text, { color: color, bold: bold, dimColor: !item.enabled, children: item.label }), index < items.length - 1 && " "] }, item.key));
17
+ }) }));
18
+ }
19
+ export default HorizontalMenu;
20
+ //# sourceMappingURL=HorizontalMenu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HorizontalMenu.js","sourceRoot":"","sources":["../../src/components/HorizontalMenu.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAajD;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,KAAK,EAAE,aAAa,EAAuB;IAC1E,OAAO,CACL,KAAC,GAAG,IAAC,UAAU,EAAE,CAAC,YACf,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACzB,MAAM,UAAU,GAAG,KAAK,KAAK,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC;YAC3D,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;YACxC,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;YAC1E,MAAM,IAAI,GAAG,UAAU,CAAC;YAExB,OAAO,CACL,MAAC,IAAI,eACF,MAAM,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,OAAO,YACpD,IAAI,CAAC,KAAK,GACN,EACN,KAAK,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,KAL1B,IAAI,CAAC,GAAG,CAMZ,CACR,CAAC;QACJ,CAAC,CAAC,GACE,CACP,CAAC;AACJ,CAAC;AAED,eAAe,cAAc,CAAC"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * ImageMascot Component
3
+ *
4
+ * Displays the ANSI art mascot from assets/jacsub.png
5
+ */
6
+ import React from "react";
7
+ export declare function ImageMascot(): React.ReactElement;
8
+ //# sourceMappingURL=ImageMascot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageMascot.d.ts","sourceRoot":"","sources":["../../src/components/ImageMascot.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,wBAAgB,WAAW,IAAI,KAAK,CAAC,YAAY,CAMhD"}
@@ -0,0 +1,7 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { MASCOT_ANSI } from "../assets/mascot-ansi.js";
4
+ export function ImageMascot() {
5
+ return (_jsx(Box, { flexDirection: "column", children: _jsx(Text, { children: MASCOT_ANSI }) }));
6
+ }
7
+ //# sourceMappingURL=ImageMascot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageMascot.js","sourceRoot":"","sources":["../../src/components/ImageMascot.tsx"],"names":[],"mappings":";AAOA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,MAAM,UAAU,WAAW;IACzB,OAAO,CACL,KAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,YACzB,KAAC,IAAI,cAAE,WAAW,GAAQ,GACtB,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * LLM Working View
3
+ *
4
+ * Displays LLM operation progress with spinner, streaming text preview,
5
+ * and token counts. Handles its own layout (horizontal/vertical).
6
+ */
7
+ import React from "react";
8
+ export interface LLMWorkingViewProps {
9
+ title: string;
10
+ description?: string;
11
+ elapsedSeconds?: number;
12
+ streamingText?: string;
13
+ inputTokens?: number;
14
+ outputTokens?: number;
15
+ currentStage?: string;
16
+ terminalWidth: number;
17
+ }
18
+ export declare function LLMWorkingView({ title, description, elapsedSeconds, streamingText, inputTokens, outputTokens, currentStage, terminalWidth, }: LLMWorkingViewProps): React.ReactElement;
19
+ //# sourceMappingURL=LLMWorkingView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LLMWorkingView.d.ts","sourceRoot":"","sources":["../../src/components/LLMWorkingView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAA8B,MAAM,OAAO,CAAC;AAanD,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,WAAW,EACX,cAAc,EACd,aAAkB,EAClB,WAAe,EACf,YAAgB,EAChB,YAAiB,EACjB,aAAa,GACd,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CA8G1C"}