@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,347 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * SessionsExperimentView Component
4
+ *
5
+ * Active sessions grouped by worktree. Responsive layout:
6
+ * - Wide (≥62): bordered box with mascot column + shortcuts
7
+ * - Narrow (<62): flat vertical with mascot at top, no border
8
+ *
9
+ * Both layouts render at natural/minimum height and scroll
10
+ * when the terminal is shorter than the content.
11
+ */
12
+ import React, { useRef } from "react";
13
+ import { Box, Text } from "ink";
14
+ import { MASCOT_ANSI } from "../assets/mascot-ansi.js";
15
+ import { BORDER_COLOR, ACCENT_COLOR, MUTED_TEXT, SUCCESS_COLOR, WARNING_COLOR, ERROR_COLOR, INVERTED_TEXT, MASCOT_WIDTH, CONTENT_PADDING, FIXED_CONTENT_HEIGHT, HORIZONTAL_LAYOUT_MIN_WIDTH, } from "./layout/theme.js";
16
+ import { formatSessionTitle, APP_ENDEARMENT } from "@jacques-ai/core";
17
+ import { getCliActivity } from "../utils/activity.js";
18
+ import { getSessionModeDisplay } from "../utils/session-mode.js";
19
+ import { buildBottomControls } from "../utils/bottom-controls.js";
20
+ import { ScanningIndicator } from "./shared/ScanningIndicator.js";
21
+ /**
22
+ * Compute a follow-cursor scroll offset.
23
+ * Adjusts the offset only when the selected line is outside the visible window.
24
+ */
25
+ function computeScroll(prevOffset, selectedLine, visibleRows, totalRows) {
26
+ let offset = prevOffset;
27
+ if (selectedLine < offset)
28
+ offset = selectedLine;
29
+ if (selectedLine >= offset + visibleRows)
30
+ offset = selectedLine - visibleRows + 1;
31
+ return Math.max(0, Math.min(offset, totalRows - visibleRows));
32
+ }
33
+ export function SessionsExperimentView({ items, selectableIndices, selectedIndex, selectedIds, showHelp, scrollBias, notification, terminalWidth, terminalHeight, isCreatingWorktree, newWorktreeName, worktreeCreateError, repoRoot, creatingForRepoRoot, projectName, removeDeleteBranch, removeForce, scanning, }) {
34
+ const isWide = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
35
+ const currentItemIndex = selectableIndices[selectedIndex] ?? -1;
36
+ const scrollRef = useRef(0);
37
+ // --- Layout dimensions ---
38
+ const mascotPadding = 3;
39
+ const mascotDisplayWidth = MASCOT_WIDTH + mascotPadding;
40
+ const wideContentWidth = Math.max(30, terminalWidth - mascotDisplayWidth - 3);
41
+ const availableWidth = isWide
42
+ ? wideContentWidth - CONTENT_PADDING * 2
43
+ : terminalWidth;
44
+ // Responsive column visibility
45
+ const showBar = availableWidth >= 45;
46
+ const showActivityLabel = availableWidth >= 30;
47
+ // Mascot
48
+ const mascotLines = MASCOT_ANSI.split("\n").filter((l) => l.trim().length > 0);
49
+ // Shortcut legend (wide layout only)
50
+ const shortcutRows = [
51
+ { key: "\u2191\u2193", label: "nav" },
52
+ { key: "\u23CE", label: "foc" },
53
+ { key: "\u2423", label: "sel" },
54
+ { key: "f", label: "full" },
55
+ { key: "t", label: "tile" },
56
+ ];
57
+ // --- Header ---
58
+ const headerLabel = "Sessions";
59
+ // --- Build session content lines with position tracking ---
60
+ const contentLines = [];
61
+ const itemToContentLine = new Map();
62
+ if (items.length === 0) {
63
+ contentLines.push(scanning
64
+ ? _jsx(ScanningIndicator, {}, "scanning")
65
+ : _jsx(Text, { color: MUTED_TEXT, children: "No active sessions" }, "empty"));
66
+ }
67
+ items.forEach((item, idx) => {
68
+ itemToContentLine.set(idx, contentLines.length);
69
+ switch (item.kind) {
70
+ case "project-header": {
71
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: "~/" }), _jsx(Text, { bold: true, color: ACCENT_COLOR, children: item.projectName }), _jsx(Text, { color: MUTED_TEXT, children: "/" })] }, `ph-${idx}`));
72
+ break;
73
+ }
74
+ case "worktree-header": {
75
+ const dot = item.isMain ? "\u25CF " : "";
76
+ const branchName = item.branch || item.name;
77
+ const { ahead, behind, dirty, merged } = item;
78
+ // Build muted branch status suffix
79
+ const statusParts = [];
80
+ if (!item.isMain && ahead != null && ahead > 0)
81
+ statusParts.push(`\u2191${ahead}`);
82
+ if (!item.isMain && behind != null && behind > 0)
83
+ statusParts.push(`\u2193${behind}`);
84
+ if (dirty)
85
+ statusParts.push("*");
86
+ else if (!item.isMain && merged)
87
+ statusParts.push("\u2713");
88
+ const statusSuffix = statusParts.length > 0 ? ` ${statusParts.join(" ")}` : "";
89
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: ACCENT_COLOR, children: dot }), _jsx(Text, { bold: true, color: "white", children: branchName }), statusSuffix && _jsx(Text, { color: MUTED_TEXT, children: statusSuffix })] }, `wh-${idx}`));
90
+ break;
91
+ }
92
+ case "session": {
93
+ const session = item.session;
94
+ const isSelected = idx === currentItemIndex;
95
+ const isMultiSelected = selectedIds.has(session.session_id);
96
+ const nextItem = items[idx + 1];
97
+ const isLastInGroup = !nextItem || (nextItem.kind !== "session" && nextItem.kind !== "new-session-button");
98
+ const treeCh = isLastInGroup ? "\u2514" : "\u251C";
99
+ const cursor = isSelected ? "\u25B6" : " ";
100
+ const fg = isMultiSelected ? INVERTED_TEXT : undefined;
101
+ const activity = getCliActivity(session.status, session.last_tool_name);
102
+ const { label: modeLabel, color: modeColor } = getSessionModeDisplay(session);
103
+ // Responsive fixed columns budget
104
+ // tree(2) + cursor(2) + icon(1) + activityLabel(10 or 1) + mode(8) + progress(varies)
105
+ const fixedWidth = showBar ? 38 : showActivityLabel ? 29 : 20;
106
+ const maxTitleLen = Math.max(0, availableWidth - fixedWidth);
107
+ const { displayTitle } = formatSessionTitle(session.session_title, maxTitleLen);
108
+ // Progress
109
+ const pct = session.context_metrics?.used_percentage;
110
+ const pctStr = pct != null
111
+ ? `${session.context_metrics.is_estimate ? "~" : ""}${pct.toFixed(0)}%`
112
+ : "N/A";
113
+ let progressNode;
114
+ if (showBar && session.context_metrics) {
115
+ const barW = 7;
116
+ const filled = Math.round((pct / 100) * barW);
117
+ const empty = barW - filled;
118
+ progressNode = (_jsxs(_Fragment, { children: [_jsx(Text, { color: fg || (isSelected ? "white" : ACCENT_COLOR), children: "\u2588".repeat(filled) }), _jsx(Text, { color: fg || (isSelected ? "gray" : MUTED_TEXT), children: "\u2591".repeat(empty) }), _jsxs(Text, { color: fg || (isSelected ? "white" : ACCENT_COLOR), children: [" ", pctStr] })] }));
119
+ }
120
+ else if (showBar) {
121
+ progressNode = _jsxs(Text, { color: fg || (isSelected ? "gray" : MUTED_TEXT), children: ["\u2591".repeat(7), " ", pctStr] });
122
+ }
123
+ else {
124
+ progressNode = _jsxs(Text, { color: fg || (isSelected ? "white" : ACCENT_COLOR), children: [" ", pctStr] });
125
+ }
126
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", backgroundColor: isMultiSelected ? ACCENT_COLOR : undefined, color: isMultiSelected ? INVERTED_TEXT : undefined, children: [_jsxs(Text, { color: fg || MUTED_TEXT, children: [treeCh, " "] }), _jsxs(Text, { color: fg || (isSelected ? ACCENT_COLOR : "white"), children: [cursor, " "] }), _jsx(Text, { color: fg || activity.color, children: activity.icon }), showActivityLabel ? (_jsxs(Text, { color: fg || activity.color, children: [" ", activity.label.padEnd(9)] })) : (_jsx(Text, { children: " " })), _jsx(Text, { color: fg || modeColor, children: modeLabel.padStart(Math.ceil((8 + modeLabel.length) / 2)).padEnd(8) }), maxTitleLen > 0 && _jsx(Text, { color: fg || "white", children: displayTitle }), showBar && _jsx(Text, { children: " " }), progressNode] }, `s-${idx}`));
127
+ break;
128
+ }
129
+ case "new-session-button": {
130
+ const isSelected = idx === currentItemIndex;
131
+ const nsbNext = items[idx + 1];
132
+ const nsbIsLast = !nsbNext || nsbNext.kind === "spacer" || nsbNext.kind === "project-header" || nsbNext.kind === "worktree-header" || nsbNext.kind === "new-worktree-button";
133
+ const nsbTree = nsbIsLast ? "\u2514" : "\u251C";
134
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: MUTED_TEXT, children: [nsbTree, " "] }), _jsxs(Text, { color: isSelected ? ACCENT_COLOR : MUTED_TEXT, children: [isSelected ? "\u25B6" : " ", " "] }), _jsx(Text, { color: isSelected ? ACCENT_COLOR : MUTED_TEXT, children: "+ New Session" })] }, `nsb-${idx}`));
135
+ break;
136
+ }
137
+ case "remove-worktree-button": {
138
+ const isSelected = idx === currentItemIndex;
139
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: MUTED_TEXT, children: ["\u2514", " "] }), _jsxs(Text, { color: isSelected ? ERROR_COLOR : MUTED_TEXT, children: [isSelected ? "\u25B6" : " ", " "] }), _jsxs(Text, { color: isSelected ? ERROR_COLOR : MUTED_TEXT, children: ["\u2717", " Remove worktree"] })] }, `rwb-${idx}`));
140
+ break;
141
+ }
142
+ case "remove-worktree-confirm": {
143
+ // Line 1: Confirmation header
144
+ contentLines.push(_jsx(Text, { wrap: "truncate-end", children: _jsxs(Text, { color: ERROR_COLOR, bold: true, children: ["\u25B6", " Remove \"", item.worktreeName, "\"?"] }) }, `rwc-title-${idx}`));
145
+ // Line 2: Status badges
146
+ const badges = [];
147
+ if (item.hasUncommittedChanges) {
148
+ badges.push(_jsxs(Text, { color: WARNING_COLOR, children: ["\u26A0", " uncommitted changes"] }, "uc"));
149
+ }
150
+ if (item.isMergedToMain) {
151
+ badges.push(_jsxs(Text, { color: SUCCESS_COLOR, children: ["\u2713", " merged"] }, "mg"));
152
+ }
153
+ else {
154
+ badges.push(_jsxs(Text, { color: ERROR_COLOR, children: ["\u2717", " unmerged"] }, "um"));
155
+ }
156
+ if (item.sessionCount > 0) {
157
+ badges.push(_jsxs(Text, { color: ACCENT_COLOR, children: [item.sessionCount, " active ", item.sessionCount === 1 ? "session" : "sessions"] }, "sc"));
158
+ }
159
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { children: " " }), badges.map((badge, i) => (_jsxs(React.Fragment, { children: [i > 0 && _jsx(Text, { color: MUTED_TEXT, children: " " }), badge] }, i)))] }, `rwc-status-${idx}`));
160
+ // Line 3: Toggles
161
+ const branchLabel = item.branch || item.worktreeName;
162
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: ACCENT_COLOR, children: "[b]" }), _jsxs(Text, { color: removeDeleteBranch ? "white" : MUTED_TEXT, children: [removeDeleteBranch ? " \u2611" : " \u2610", " delete branch ", branchLabel] }), item.hasUncommittedChanges && (_jsxs(_Fragment, { children: [_jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: ACCENT_COLOR, children: "[f]" }), _jsxs(Text, { color: removeForce ? ERROR_COLOR : MUTED_TEXT, children: [removeForce ? " \u2611" : " \u2610", " force"] })] }))] }, `rwc-toggles-${idx}`));
163
+ // Line 4: Action hints
164
+ const canConfirm = !item.hasUncommittedChanges || removeForce;
165
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: canConfirm ? ACCENT_COLOR : MUTED_TEXT, children: "[Enter]" }), _jsx(Text, { color: canConfirm ? "white" : MUTED_TEXT, children: " confirm" }), _jsx(Text, { color: MUTED_TEXT, children: " " }), _jsx(Text, { color: ACCENT_COLOR, children: "[Esc]" }), _jsx(Text, { color: "white", children: " cancel" })] }, `rwc-actions-${idx}`));
166
+ break;
167
+ }
168
+ case "new-worktree-button": {
169
+ const isSelected = idx === currentItemIndex;
170
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: isSelected ? ACCENT_COLOR : "white", children: [isSelected ? "\u25B6" : " ", " "] }), _jsx(Text, { bold: true, color: isSelected ? ACCENT_COLOR : "white", children: "+ New Worktree" })] }, `nwb-${idx}`));
171
+ break;
172
+ }
173
+ case "new-worktree-input": {
174
+ const inputRoot = creatingForRepoRoot || repoRoot;
175
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: ACCENT_COLOR, children: ["\u25B6", " New: "] }), _jsx(Text, { color: "white", children: newWorktreeName }), _jsx(Text, { color: ACCENT_COLOR, children: "_" })] }, `nwi-${idx}`));
176
+ if (inputRoot) {
177
+ contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: [" ", inputRoot, "/", newWorktreeName || "..."] }, `nwi-path-${idx}`));
178
+ }
179
+ if (worktreeCreateError) {
180
+ contentLines.push(_jsxs(Text, { color: ERROR_COLOR, children: [" ", worktreeCreateError] }, `nwi-err-${idx}`));
181
+ }
182
+ break;
183
+ }
184
+ case "show-all-worktrees-button": {
185
+ const label = `${item.hiddenCount} more worktree${item.hiddenCount === 1 ? "" : "s"} [d]`;
186
+ contentLines.push(_jsx(Text, { wrap: "truncate-end", children: _jsxs(Text, { color: MUTED_TEXT, children: [" ", label] }) }, `sawb-${idx}`));
187
+ break;
188
+ }
189
+ case "spacer": {
190
+ contentLines.push(_jsx(Text, { children: " " }, `sp-${idx}`));
191
+ break;
192
+ }
193
+ }
194
+ });
195
+ // --- Bottom controls ---
196
+ const { element: bottomControlsElement, width: controlsWidth } = buildBottomControls([
197
+ { key: "Esc", label: "back " },
198
+ { key: "d", label: "etails " },
199
+ { key: "h", label: "elp" },
200
+ ]);
201
+ // --- Notification ---
202
+ let bottomNotificationText = "";
203
+ let bottomIsNotification = false;
204
+ let bottomIsError = false;
205
+ if (notification) {
206
+ const isError = notification.startsWith("!");
207
+ const cleanMsg = isError ? notification.slice(1) : notification;
208
+ const maxLen = terminalWidth - 6;
209
+ const truncated = cleanMsg.length > maxLen ? cleanMsg.substring(0, maxLen - 3) + "..." : cleanMsg;
210
+ bottomNotificationText = isError ? `\u2717 ${truncated}` : `\u2713 ${truncated}`;
211
+ bottomIsNotification = true;
212
+ bottomIsError = isError;
213
+ }
214
+ // ========== WIDE LAYOUT (≥62) ==========
215
+ if (isWide) {
216
+ const showVersion = terminalWidth >= 70;
217
+ // Right column: header + spacer + session content
218
+ const allLines = [
219
+ _jsx(Text, { bold: true, color: ACCENT_COLOR, children: headerLabel }, "header"),
220
+ _jsx(Text, { children: " " }, "header-spacer"),
221
+ ...contentLines,
222
+ ];
223
+ const mascotTopPad = Math.floor((FIXED_CONTENT_HEIGHT - mascotLines.length) / 2);
224
+ const shortcutsStart = mascotTopPad + mascotLines.length + 1;
225
+ const minMascotColumnHeight = showHelp
226
+ ? shortcutsStart + shortcutRows.length
227
+ : mascotTopPad + mascotLines.length;
228
+ const totalRows = Math.max(minMascotColumnHeight, allLines.length);
229
+ // --- Scroll ---
230
+ const totalWideHeight = totalRows + 2; // +2 for top/bottom borders
231
+ const needsScroll = totalWideHeight > terminalHeight;
232
+ const visibleRows = needsScroll ? Math.max(1, terminalHeight - 2) : totalRows;
233
+ // Find which row the selected item is at in allLines (offset by 2 for header + spacer)
234
+ const selContentIdx = itemToContentLine.get(currentItemIndex);
235
+ const selRow = selContentIdx != null ? selContentIdx + 2 : 0;
236
+ if (needsScroll) {
237
+ scrollRef.current = computeScroll(scrollRef.current, selRow, visibleRows, totalRows);
238
+ }
239
+ else {
240
+ scrollRef.current = 0;
241
+ }
242
+ // Apply scroll bias for rendering (positive = scroll up toward top, negative = scroll down)
243
+ // scrollRef tracks pure cursor-follow; bias is only for display
244
+ const scrollStart = needsScroll
245
+ ? Math.max(0, Math.min(scrollRef.current - scrollBias, totalRows - visibleRows))
246
+ : 0;
247
+ const canScrollUp = needsScroll && scrollStart > 0;
248
+ const canScrollDown = needsScroll && scrollStart + visibleRows < totalRows;
249
+ // Top border
250
+ const borderTitle = "\u2500 Jacques";
251
+ const borderVersion = showVersion ? " v0.1.0 " : " ";
252
+ const scrollUpInd = canScrollUp ? " \u25B2" : "";
253
+ const topRemaining = Math.max(0, terminalWidth - borderTitle.length - borderVersion.length - scrollUpInd.length - 2);
254
+ // Bottom border
255
+ const scrollDownInd = canScrollDown ? "\u25BC " : "";
256
+ const bottomTextWidth = bottomIsNotification ? bottomNotificationText.length : controlsWidth;
257
+ const totalBottomDashes = Math.max(0, terminalWidth - bottomTextWidth - scrollDownInd.length - 2);
258
+ const bottomLeftBorder = Math.max(1, Math.floor(totalBottomDashes / 2));
259
+ const bottomRightBorder = Math.max(1, totalBottomDashes - bottomLeftBorder);
260
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: BORDER_COLOR, children: "\u256D" }), _jsx(Text, { color: ACCENT_COLOR, children: borderTitle }), _jsx(Text, { color: MUTED_TEXT, children: borderVersion }), _jsx(Text, { color: BORDER_COLOR, children: "\u2500".repeat(topRemaining) }), canScrollUp && _jsx(Text, { color: MUTED_TEXT, children: scrollUpInd }), _jsx(Text, { color: BORDER_COLOR, children: "\u256E" })] }), Array.from({ length: visibleRows }).map((_, i) => {
261
+ const rowIndex = scrollStart + i;
262
+ const mascotIdx = rowIndex - mascotTopPad;
263
+ let leftCell = _jsx(Text, { children: " " });
264
+ if (mascotIdx >= 0 && mascotIdx < mascotLines.length) {
265
+ leftCell = _jsx(Text, { wrap: "truncate-end", children: mascotLines[mascotIdx] });
266
+ }
267
+ else if (showHelp) {
268
+ const scIdx = rowIndex - shortcutsStart;
269
+ if (scIdx >= 0 && scIdx < shortcutRows.length) {
270
+ const sc = shortcutRows[scIdx];
271
+ leftCell = (_jsxs(Text, { wrap: "truncate-end", children: [_jsxs(Text, { color: MUTED_TEXT, children: [" ", sc.key.padEnd(3)] }), _jsxs(Text, { color: MUTED_TEXT, children: [" ", sc.label] })] }));
272
+ }
273
+ }
274
+ const contentLine = allLines[rowIndex];
275
+ return (_jsxs(Box, { flexDirection: "row", height: 1, children: [_jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: mascotDisplayWidth, justifyContent: "center", flexShrink: 0, children: leftCell }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: wideContentWidth, paddingLeft: CONTENT_PADDING, paddingRight: CONTENT_PADDING, flexShrink: 0, children: contentLine || _jsx(Text, { children: " " }) }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" })] }, rowIndex));
276
+ }), _jsxs(Box, { children: [_jsxs(Text, { color: BORDER_COLOR, children: ["\u2570", "\u2500".repeat(bottomLeftBorder)] }), bottomIsNotification ? (_jsx(Text, { color: bottomIsError ? ERROR_COLOR : SUCCESS_COLOR, children: bottomNotificationText })) : (bottomControlsElement), _jsx(Text, { color: BORDER_COLOR, children: "\u2500".repeat(bottomRightBorder) }), canScrollDown && _jsx(Text, { color: MUTED_TEXT, children: scrollDownInd }), _jsx(Text, { color: BORDER_COLOR, children: "\u256F" })] })] }));
277
+ }
278
+ // ========== NARROW LAYOUT (<62) ==========
279
+ // Build flat line array for scroll support
280
+ const showNarrowVersion = terminalWidth >= 30;
281
+ const narrowLines = [];
282
+ // Spacer (marginTop=1)
283
+ narrowLines.push(_jsx(Text, { children: " " }, "n-mt"));
284
+ // Mascot + name rendered line-by-line (ANSI mascot must be per-line in row contexts)
285
+ const mascotCenter = Math.floor((mascotLines.length - 1) / 2);
286
+ for (let mi = 0; mi < mascotLines.length; mi++) {
287
+ const textLineIndex = mi - mascotCenter;
288
+ if (textLineIndex >= 0 && textLineIndex <= 2) {
289
+ let textContent;
290
+ if (textLineIndex === 0) {
291
+ textContent = _jsx(Text, { color: MUTED_TEXT, children: APP_ENDEARMENT });
292
+ }
293
+ else if (textLineIndex === 1) {
294
+ textContent = _jsxs(Text, { bold: true, color: ACCENT_COLOR, children: ["Jacques", showNarrowVersion ? _jsx(Text, { color: MUTED_TEXT, children: " v0.1.0" }) : ""] });
295
+ }
296
+ else {
297
+ textContent = _jsx(Text, { color: "white", children: "Sessions Manager" });
298
+ }
299
+ narrowLines.push(_jsxs(Box, { flexDirection: "row", children: [_jsx(Box, { flexDirection: "column", flexShrink: 0, children: _jsx(Text, { wrap: "truncate-end", children: mascotLines[mi] }) }), _jsx(Box, { marginLeft: 2, children: textContent })] }, `n-m-${mi}`));
300
+ }
301
+ else {
302
+ narrowLines.push(_jsx(Text, { wrap: "truncate-end", children: mascotLines[mi] }, `n-m-${mi}`));
303
+ }
304
+ }
305
+ // Spacer (marginBottom=1)
306
+ narrowLines.push(_jsx(Text, { children: " " }, "n-mb"));
307
+ // Shortcuts (toggled with h)
308
+ if (showHelp) {
309
+ shortcutRows.forEach((sc, i) => {
310
+ narrowLines.push(_jsxs(Text, { color: MUTED_TEXT, children: [" ", sc.key.padEnd(3), " ", sc.label] }, `n-sc-${i}`));
311
+ });
312
+ }
313
+ // Spacer before header
314
+ narrowLines.push(_jsx(Text, { children: " " }, "n-hs"));
315
+ // Header
316
+ narrowLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: headerLabel }, "n-hdr"));
317
+ // Spacer before content
318
+ narrowLines.push(_jsx(Text, { children: " " }, "n-cs"));
319
+ // Content lines start index (for mapping selected item to line number)
320
+ const narrowContentStart = narrowLines.length;
321
+ contentLines.forEach((line, i) => {
322
+ narrowLines.push(_jsx(Box, { children: line }, `n-cl-${i}`));
323
+ });
324
+ // Spacer before controls
325
+ narrowLines.push(_jsx(Text, { children: " " }, "n-bs"));
326
+ // Controls
327
+ narrowLines.push(_jsx(Box, { children: bottomIsNotification ? (_jsx(Text, { color: bottomIsError ? ERROR_COLOR : SUCCESS_COLOR, children: bottomNotificationText })) : (bottomControlsElement) }, "n-ctrl"));
328
+ // --- Narrow scroll ---
329
+ const narrowTotal = narrowLines.length;
330
+ const narrowNeedsScroll = narrowTotal > terminalHeight;
331
+ const narrowVisible = narrowNeedsScroll ? terminalHeight : narrowTotal;
332
+ const narrowSelIdx = itemToContentLine.get(currentItemIndex);
333
+ const narrowSelLine = narrowSelIdx != null ? narrowContentStart + narrowSelIdx : 0;
334
+ if (narrowNeedsScroll) {
335
+ scrollRef.current = computeScroll(scrollRef.current, narrowSelLine, narrowVisible, narrowTotal);
336
+ }
337
+ else {
338
+ scrollRef.current = 0;
339
+ }
340
+ // Apply scroll bias for rendering
341
+ const narrowStart = narrowNeedsScroll
342
+ ? Math.max(0, Math.min(scrollRef.current - scrollBias, narrowTotal - narrowVisible))
343
+ : 0;
344
+ const narrowSlice = narrowLines.slice(narrowStart, narrowStart + narrowVisible);
345
+ return (_jsx(Box, { flexDirection: "column", children: narrowSlice }));
346
+ }
347
+ //# sourceMappingURL=SessionsExperimentView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionsExperimentView.js","sourceRoot":"","sources":["../../src/components/SessionsExperimentView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * SessionsList Component
3
+ *
4
+ * Displays all active sessions with status icons and context usage
5
+ */
6
+ import React from "react";
7
+ import type { Session } from "@jacques-ai/core";
8
+ interface SessionsListProps {
9
+ sessions: Session[];
10
+ focusedSessionId: string | null;
11
+ }
12
+ /**
13
+ * Sessions list with status icons
14
+ * - 🟢 for focused session
15
+ * - 💤 for idle/background sessions
16
+ * Sorted: focused first, then by last_activity
17
+ */
18
+ export declare function SessionsList({ sessions, focusedSessionId }: SessionsListProps): React.ReactElement;
19
+ export default SessionsList;
20
+ //# sourceMappingURL=SessionsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionsList.d.ts","sourceRoot":"","sources":["../../src/components/SessionsList.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAgDD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,gBAAgB,EAAE,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA8ClG;AAED,eAAe,YAAY,CAAC"}
@@ -0,0 +1,75 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Text, Box } from "ink";
3
+ import { MUTED_TEXT, ERROR_COLOR, WARNING_COLOR, SUCCESS_COLOR } from "./layout/theme.js";
4
+ import { getCliActivity } from "../utils/activity.js";
5
+ /**
6
+ * Format session name as "project / terminal"
7
+ */
8
+ function formatSessionName(session) {
9
+ const project = session.project || "unknown";
10
+ const terminal = session.terminal?.term_program || "Terminal";
11
+ const branch = session.git_branch;
12
+ const maxLength = 50;
13
+ let formatted;
14
+ if (branch) {
15
+ formatted = `${project} @${branch} / ${terminal}`;
16
+ }
17
+ else {
18
+ formatted = `${project} / ${terminal}`;
19
+ }
20
+ if (formatted.length > maxLength) {
21
+ return formatted.substring(0, maxLength - 3) + "...";
22
+ }
23
+ return formatted;
24
+ }
25
+ /**
26
+ * Format percentage with fallback
27
+ */
28
+ function formatPercentage(percentage) {
29
+ if (percentage === undefined || percentage === null) {
30
+ return "N/A";
31
+ }
32
+ return `${percentage.toFixed(1)}%`;
33
+ }
34
+ /**
35
+ * Get color for context percentage
36
+ */
37
+ function getContextColor(percentage) {
38
+ if (percentage === undefined || percentage === null) {
39
+ return MUTED_TEXT;
40
+ }
41
+ if (percentage < 50)
42
+ return SUCCESS_COLOR;
43
+ if (percentage < 70)
44
+ return WARNING_COLOR;
45
+ return ERROR_COLOR;
46
+ }
47
+ // Activity label now provided by shared getCliActivity() utility
48
+ /**
49
+ * Sessions list with status icons
50
+ * - 🟢 for focused session
51
+ * - 💤 for idle/background sessions
52
+ * Sorted: focused first, then by last_activity
53
+ */
54
+ export function SessionsList({ sessions, focusedSessionId }) {
55
+ // Sort sessions: focused first, then by last_activity (most recent)
56
+ const sortedSessions = [...sessions].sort((a, b) => {
57
+ if (a.session_id === focusedSessionId)
58
+ return -1;
59
+ if (b.session_id === focusedSessionId)
60
+ return 1;
61
+ return b.last_activity - a.last_activity;
62
+ });
63
+ // Limit to first 10 sessions
64
+ const displaySessions = sortedSessions.slice(0, 10);
65
+ const remainingCount = sortedSessions.length - displaySessions.length;
66
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { color: MUTED_TEXT, children: ["Active Sessions (", sessions.length, "):"] }), displaySessions.map((session) => {
67
+ const isFocused = session.session_id === focusedSessionId;
68
+ const icon = isFocused ? "🟢" : "💤";
69
+ const percentage = session.context_metrics?.used_percentage;
70
+ const activity = getCliActivity(session.status, session.last_tool_name);
71
+ return (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { children: [icon, " ", formatSessionName(session), " ", _jsx(Text, { color: getContextColor(percentage), children: formatPercentage(percentage) }), " ", _jsx(Text, { color: activity.color, children: activity.label })] }) }, session.session_id));
72
+ }), remainingCount > 0 && (_jsx(Box, { marginLeft: 2, children: _jsxs(Text, { color: MUTED_TEXT, children: ["... and ", remainingCount, " more"] }) }))] }));
73
+ }
74
+ export default SessionsList;
75
+ //# sourceMappingURL=SessionsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionsList.js","sourceRoot":"","sources":["../../src/components/SessionsList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Settings View Component
3
+ *
4
+ * Displays and allows configuration of settings:
5
+ * - Claude Code connection
6
+ * - Auto-archive toggle
7
+ * - Skip permissions toggle
8
+ * - Sync controls (Sync New / Re-sync All)
9
+ * - Subscription usage visualization
10
+ * - Browse Archive
11
+ */
12
+ import React from "react";
13
+ import type { UsageLimits } from "../hooks/useUsageLimits.js";
14
+ import type { NotificationSettings } from "@jacques-ai/core/notifications";
15
+ export interface ArchiveStatsData {
16
+ totalConversations: number;
17
+ totalProjects: number;
18
+ totalSize: string;
19
+ archivePath: string;
20
+ }
21
+ interface SettingsViewProps {
22
+ terminalWidth: number;
23
+ selectedIndex: number;
24
+ autoArchive: boolean;
25
+ skipPermissions: boolean;
26
+ stats: ArchiveStatsData | null;
27
+ loading?: boolean;
28
+ scrollOffset?: number;
29
+ syncProgress?: string | null;
30
+ usageLimits?: UsageLimits | null;
31
+ usageLoading?: boolean;
32
+ claudeConnected?: boolean;
33
+ claudeTokenMasked?: string | null;
34
+ claudeTokenInput?: string;
35
+ claudeTokenError?: string | null;
36
+ isTokenInputMode?: boolean;
37
+ isTokenVerifying?: boolean;
38
+ showConnectionSuccess?: boolean;
39
+ notificationSettings?: NotificationSettings;
40
+ notificationsLoading?: boolean;
41
+ }
42
+ declare const TOTAL_ITEMS = 13;
43
+ /** Indices that should be skipped during navigation (disabled categories) */
44
+ declare const DISABLED_INDICES: Set<number>;
45
+ export { TOTAL_ITEMS as SETTINGS_TOTAL_ITEMS, DISABLED_INDICES as SETTINGS_DISABLED_INDICES };
46
+ export declare function SettingsView({ terminalWidth, selectedIndex, autoArchive, skipPermissions, stats, loading, scrollOffset, syncProgress, usageLimits, usageLoading, claudeConnected, claudeTokenMasked, claudeTokenInput, claudeTokenError, isTokenInputMode, isTokenVerifying, showConnectionSuccess, notificationSettings, notificationsLoading, }: SettingsViewProps): React.ReactElement;
47
+ export default SettingsView;
48
+ //# sourceMappingURL=SettingsView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SettingsView.d.ts","sourceRoot":"","sources":["../../src/components/SettingsView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAc1B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,oBAAoB,EAAwB,MAAM,gCAAgC,CAAC;AAGjG,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,iBAAiB;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,eAAe,EAAE,OAAO,CAAC;IACzB,KAAK,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC/B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC,oBAAoB,CAAC,EAAE,oBAAoB,CAAC;IAC5C,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC;AAWD,QAAA,MAAM,WAAW,KAAK,CAAC;AAEvB,6EAA6E;AAC7E,QAAA,MAAM,gBAAgB,aAAmB,CAAC;AAW1C,OAAO,EAAE,WAAW,IAAI,oBAAoB,EAAE,gBAAgB,IAAI,yBAAyB,EAAE,CAAC;AAe9F,wBAAgB,YAAY,CAAC,EAC3B,aAAa,EACb,aAAa,EACb,WAAW,EACX,eAAe,EACf,KAAK,EACL,OAAe,EACf,YAAgB,EAChB,YAAmB,EACnB,WAAkB,EAClB,YAAoB,EACpB,eAAuB,EACvB,iBAAwB,EACxB,gBAAqB,EACrB,gBAAuB,EACvB,gBAAwB,EACxB,gBAAwB,EACxB,qBAA6B,EAC7B,oBAAoB,EACpB,oBAA4B,GAC7B,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CA+OxC;AAED,eAAe,YAAY,CAAC"}