@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,129 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { SCENE_FULL, SCENE_COMPACT, dotLine, sectionLine, progressBar, formatTokens, formatDuration, formatDate, truncate, pad, } from "./ascii-art/index.js";
4
+ import { ACCENT_COLOR, MUTED_TEXT, SUCCESS_COLOR } from "./layout/index.js";
5
+ // Layout constants
6
+ const FULL_LAYOUT_MIN_WIDTH = 90;
7
+ const COMPACT_LAYOUT_MIN_WIDTH = 70;
8
+ const VISIBLE_SESSIONS = 4;
9
+ const VISIBLE_PLANS = 3;
10
+ const SCENE_COLOR = MUTED_TEXT;
11
+ /**
12
+ * Render the full layout (≥90 chars)
13
+ */
14
+ function FullLayout({ projectName, terminalWidth, statistics, sessions, plans, activeSection, selectedIndex, scrollOffset, planProgress, }) {
15
+ // Left side: Scene + Sessions/Plans
16
+ // Right side: Statistics
17
+ const leftWidth = Math.floor(terminalWidth * 0.65);
18
+ const rightWidth = terminalWidth - leftWidth - 2;
19
+ return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Box, { flexDirection: "column", width: 52, children: SCENE_FULL.map((line, i) => (_jsx(Text, { color: SCENE_COLOR, children: line }, i))) }), _jsxs(Box, { flexDirection: "column", justifyContent: "flex-end", marginLeft: 4, children: [_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "PROJECT DASHBOARD" }), _jsx(Text, { color: MUTED_TEXT, children: truncate(projectName, 30) })] })] }), _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsxs(Box, { flexDirection: "column", width: leftWidth, children: [_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: activeSection === "sessions" ? ACCENT_COLOR : MUTED_TEXT, bold: true, children: "SESSIONS" }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(leftWidth - 2) }), _jsx(SessionsList, { sessions: sessions, isActive: activeSection === "sessions", selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxWidth: leftWidth - 2 })] }), _jsx(Box, { height: 1 }), _jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: activeSection === "plans" ? ACCENT_COLOR : MUTED_TEXT, bold: true, children: "PLANS" }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(leftWidth - 2) }), _jsx(PlansList, { plans: plans, isActive: activeSection === "plans", selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxWidth: leftWidth - 2, planProgress: planProgress })] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, width: rightWidth, children: [_jsx(Text, { color: MUTED_TEXT, bold: true, children: "STATISTICS" }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(rightWidth - 2) }), _jsx(StatisticsPanel, { statistics: statistics, width: rightWidth - 2 })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }) }), _jsxs(Text, { color: MUTED_TEXT, children: [" ", "[Tab] Section [\u2191\u2193] Navigate [Enter] View Plan [Esc] Back"] }), _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) })] }));
20
+ }
21
+ /**
22
+ * Render the compact layout (70-89 chars)
23
+ */
24
+ function CompactLayout({ projectName, terminalWidth, statistics, sessions, plans, activeSection, selectedIndex, scrollOffset, planProgress, }) {
25
+ return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsx(Box, { flexDirection: "column", width: 32, children: SCENE_COMPACT.map((line, i) => (_jsx(Text, { color: SCENE_COLOR, children: line }, i))) }), _jsxs(Box, { flexDirection: "column", justifyContent: "center", marginLeft: 2, children: [_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "PROJECT DASHBOARD" }), _jsx(Text, { color: MUTED_TEXT, children: truncate(projectName, 25) })] })] }), _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }), _jsxs(Box, { flexDirection: "row", marginTop: 1, children: [_jsxs(Box, { flexDirection: "column", width: Math.floor(terminalWidth * 0.55), children: [_jsx(Text, { color: activeSection === "sessions" ? ACCENT_COLOR : MUTED_TEXT, bold: true, children: "SESSIONS" }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(Math.floor(terminalWidth * 0.5)) }), _jsx(SessionsList, { sessions: sessions.slice(0, 3), isActive: activeSection === "sessions", selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxWidth: Math.floor(terminalWidth * 0.5), compact: true }), _jsx(Box, { height: 1 }), _jsx(Text, { color: activeSection === "plans" ? ACCENT_COLOR : MUTED_TEXT, bold: true, children: "PLANS" }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(Math.floor(terminalWidth * 0.5)) }), _jsx(PlansList, { plans: plans.slice(0, 2), isActive: activeSection === "plans", selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxWidth: Math.floor(terminalWidth * 0.5), planProgress: planProgress })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, children: [_jsx(Text, { color: MUTED_TEXT, bold: true, children: "STATISTICS" }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(20) }), _jsx(StatisticsPanel, { statistics: statistics, width: 20, compact: true })] })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }) }), _jsxs(Text, { color: MUTED_TEXT, children: [" ", "[Tab] Section [\u2191\u2193] Navigate [Esc] Back"] })] }));
26
+ }
27
+ /**
28
+ * Render the minimal layout (<70 chars)
29
+ */
30
+ function MinimalLayout({ projectName, terminalWidth, statistics, sessions, plans, activeSection, selectedIndex, scrollOffset, planProgress, }) {
31
+ return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { bold: true, color: ACCENT_COLOR, children: "PROJECT DASHBOARD" }) }), _jsx(Text, { color: MUTED_TEXT, children: truncate(projectName, terminalWidth - 2) }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(terminalWidth - 2) }), _jsx(Box, { height: 1 }), _jsx(Text, { color: activeSection === "sessions" ? ACCENT_COLOR : MUTED_TEXT, bold: true, children: "SESSIONS" }), _jsx(SessionsList, { sessions: sessions.slice(0, 3), isActive: activeSection === "sessions", selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxWidth: terminalWidth - 2, compact: true }), _jsx(Box, { height: 1 }), _jsx(Text, { color: activeSection === "plans" ? ACCENT_COLOR : MUTED_TEXT, bold: true, children: "PLANS" }), _jsx(PlansList, { plans: plans.slice(0, 2), isActive: activeSection === "plans", selectedIndex: selectedIndex, scrollOffset: scrollOffset, maxWidth: terminalWidth - 2, planProgress: planProgress }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }) }), _jsx(Text, { color: MUTED_TEXT, children: " [\u2191\u2193] Navigate [Esc] Back" })] }));
32
+ }
33
+ function SessionsList({ sessions, isActive, selectedIndex, scrollOffset, maxWidth, compact = false, }) {
34
+ const visibleCount = compact ? 3 : VISIBLE_SESSIONS;
35
+ const visibleSessions = sessions.slice(scrollOffset, scrollOffset + visibleCount);
36
+ const hasMore = sessions.length > scrollOffset + visibleCount;
37
+ if (sessions.length === 0) {
38
+ return _jsx(Text, { color: MUTED_TEXT, children: "No sessions yet" });
39
+ }
40
+ const titleWidth = compact ? maxWidth - 12 : maxWidth - 20;
41
+ return (_jsxs(Box, { flexDirection: "column", children: [visibleSessions.map((session, i) => {
42
+ const globalIndex = scrollOffset + i;
43
+ const isSelected = isActive && globalIndex === selectedIndex;
44
+ const prefix = session.isActive ? (_jsx(Text, { color: SUCCESS_COLOR, children: "\u25CF " })) : (_jsx(Text, { children: " " }));
45
+ // Format the date
46
+ const dateStr = formatDate(new Date(session.date));
47
+ // Context or duration
48
+ const suffix = session.contextPercent !== undefined
49
+ ? `${session.contextPercent}%`
50
+ : formatDuration(session.durationMinutes);
51
+ return (_jsxs(Text, { color: isSelected ? "white" : MUTED_TEXT, children: [isSelected ? "> " : " ", prefix, session.isActive ? (_jsx(Text, { color: "white", children: "Active" })) : (_jsx(Text, { children: dateStr })), " ", _jsx(Text, { color: isSelected ? "white" : undefined, children: truncate(session.title, titleWidth) }), " ", _jsx(Text, { children: pad(suffix, 5, "right") })] }, session.id));
52
+ }), hasMore && (_jsxs(Text, { color: MUTED_TEXT, children: [" ", "\u25BC ", sessions.length - scrollOffset - visibleCount, " more"] }))] }));
53
+ }
54
+ /** Width reserved for progress display: "████░░░░ 100%" = ~14 chars */
55
+ const PROGRESS_DISPLAY_WIDTH = 14;
56
+ function PlansList({ plans, isActive, selectedIndex, scrollOffset, maxWidth, planProgress, }) {
57
+ const visiblePlans = plans.slice(scrollOffset, scrollOffset + VISIBLE_PLANS);
58
+ const hasMore = plans.length > scrollOffset + VISIBLE_PLANS;
59
+ if (plans.length === 0) {
60
+ return _jsx(Text, { color: MUTED_TEXT, children: "No plans yet" });
61
+ }
62
+ // Calculate title width (reserve space for progress if available)
63
+ const hasProgress = planProgress && planProgress.size > 0;
64
+ const titleWidth = hasProgress ? maxWidth - 4 - PROGRESS_DISPLAY_WIDTH : maxWidth - 4;
65
+ return (_jsxs(Box, { flexDirection: "column", children: [visiblePlans.map((plan, i) => {
66
+ const globalIndex = scrollOffset + i;
67
+ const isSelected = isActive && globalIndex === selectedIndex;
68
+ const progress = planProgress?.get(plan.id);
69
+ // Progress bar display
70
+ let progressDisplay = "";
71
+ let progressColor = MUTED_TEXT;
72
+ if (progress && !progress.loading) {
73
+ const pct = progress.percentage;
74
+ progressDisplay = `${progressBar(pct, 6)} ${pad(pct.toString(), 3, "left")}%`;
75
+ if (pct === 100) {
76
+ progressColor = SUCCESS_COLOR;
77
+ }
78
+ else if (pct > 0) {
79
+ progressColor = ACCENT_COLOR;
80
+ }
81
+ }
82
+ else if (progress?.loading) {
83
+ progressDisplay = "...";
84
+ }
85
+ return (_jsxs(Text, { color: isSelected ? "white" : MUTED_TEXT, children: [isSelected ? "> " : " ", _jsx(Text, { color: isSelected ? "white" : undefined, children: truncate(plan.title, titleWidth) }), hasProgress && (_jsxs(_Fragment, { children: [" ", _jsx(Text, { color: isSelected ? "white" : progressColor, children: progressDisplay })] }))] }, plan.id));
86
+ }), hasMore && (_jsxs(Text, { color: MUTED_TEXT, children: [" ", "\u25BC more"] }))] }));
87
+ }
88
+ function StatisticsPanel({ statistics, width, compact = false, }) {
89
+ if (!statistics) {
90
+ return _jsx(Text, { color: MUTED_TEXT, children: "Loading..." });
91
+ }
92
+ const barWidth = compact ? 8 : 12;
93
+ // Calculate token percentages (assume 200k context window max for visualization)
94
+ const maxTokens = 200_000;
95
+ const inputPercent = Math.min(100, (statistics.totalInputTokens / maxTokens) * 100);
96
+ const outputPercent = Math.min(100, (statistics.totalOutputTokens / maxTokens) * 100);
97
+ // Model usage entries
98
+ const modelEntries = Object.entries(statistics.modelUsage)
99
+ .sort((a, b) => b[1] - a[1])
100
+ .slice(0, compact ? 2 : 4);
101
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: MUTED_TEXT, children: "Tokens" }), _jsxs(Text, { children: ["in ", progressBar(inputPercent, barWidth), " ", formatTokens(statistics.totalInputTokens)] }), _jsxs(Text, { children: ["out ", progressBar(outputPercent, barWidth), " ", formatTokens(statistics.totalOutputTokens)] }), _jsx(Box, { height: 1 }), _jsxs(Text, { color: MUTED_TEXT, children: ["Sessions: ", statistics.totalSessions, " Handoffs: ", statistics.totalHandoffs] }), !compact && modelEntries.length > 0 && (_jsxs(_Fragment, { children: [_jsx(Box, { height: 1 }), _jsx(Text, { color: MUTED_TEXT, bold: true, children: "MODELS" }), _jsx(Text, { color: MUTED_TEXT, children: sectionLine(width) }), modelEntries.map(([model, count]) => {
102
+ const percent = (count / statistics.totalSessions) * 100;
103
+ // Shorten model names
104
+ const shortName = model.replace("Claude ", "").toLowerCase();
105
+ return (_jsxs(Text, { children: [pad(shortName, 7), " ", progressBar(percent, 8), " ", count] }, model));
106
+ })] }))] }));
107
+ }
108
+ /**
109
+ * Main ProjectDashboardView component
110
+ */
111
+ export function ProjectDashboardView(props) {
112
+ const { terminalWidth, loading } = props;
113
+ if (loading) {
114
+ return (_jsxs(Box, { flexDirection: "column", width: terminalWidth, children: [_jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: ACCENT_COLOR, children: "Loading project dashboard..." }) }), _jsx(Text, { color: MUTED_TEXT, children: dotLine(terminalWidth) })] }));
115
+ }
116
+ // Choose layout based on terminal width
117
+ if (terminalWidth >= FULL_LAYOUT_MIN_WIDTH) {
118
+ return _jsx(FullLayout, { ...props });
119
+ }
120
+ else if (terminalWidth >= COMPACT_LAYOUT_MIN_WIDTH) {
121
+ return _jsx(CompactLayout, { ...props });
122
+ }
123
+ else {
124
+ return _jsx(MinimalLayout, { ...props });
125
+ }
126
+ }
127
+ // Export constants for use in App.tsx
128
+ export { VISIBLE_SESSIONS, VISIBLE_PLANS };
129
+ //# sourceMappingURL=ProjectDashboardView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProjectDashboardView.js","sourceRoot":"","sources":["../../src/components/ProjectDashboardView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * Save Context View
3
+ *
4
+ * Displays session preview, label input, and save result.
5
+ * Extracted from Dashboard.tsx.
6
+ */
7
+ import React from "react";
8
+ export interface SavePreviewData {
9
+ sessionSlug: string;
10
+ messageCount: number;
11
+ userMessages: number;
12
+ assistantMessages: number;
13
+ toolCalls: number;
14
+ durationMinutes: number;
15
+ filterLabel?: string;
16
+ }
17
+ export interface SaveSuccessData {
18
+ filename: string;
19
+ filePath: string;
20
+ fileSize: string;
21
+ }
22
+ interface SaveContextViewProps {
23
+ preview?: SavePreviewData | null;
24
+ label?: string;
25
+ error?: string | null;
26
+ success?: SaveSuccessData | null;
27
+ terminalWidth: number;
28
+ scrollOffset?: number;
29
+ }
30
+ export declare function SaveContextView({ preview, label, error, success, terminalWidth, scrollOffset, }: SaveContextViewProps): React.ReactElement;
31
+ export {};
32
+ //# sourceMappingURL=SaveContextView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SaveContextView.d.ts","sourceRoot":"","sources":["../../src/components/SaveContextView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,UAAU,oBAAoB;IAC5B,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,eAAe,CAAC,EAC9B,OAAO,EACP,KAAK,EACL,KAAK,EACL,OAAO,EACP,aAAa,EACb,YAAgB,GACjB,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAqI3C"}
@@ -0,0 +1,41 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, SUCCESS_COLOR, ERROR_COLOR, HORIZONTAL_LAYOUT_MIN_WIDTH, FIXED_CONTENT_HEIGHT, } from "./layout/index.js";
4
+ export function SaveContextView({ preview, label, error, success, terminalWidth, scrollOffset = 0, }) {
5
+ const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
6
+ const showVersion = terminalWidth >= 65;
7
+ const allContentLines = [];
8
+ if (success) {
9
+ allContentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Save Context" }), _jsx(Text, { color: MUTED_TEXT, children: "─".repeat(40) }), _jsx(Box, {}), _jsx(Text, { color: SUCCESS_COLOR, children: "\u2713 Saved successfully!" }), _jsx(Box, {}), _jsx(Text, { bold: true, children: success.filename }), _jsx(Box, {}), _jsx(Text, { color: MUTED_TEXT, children: "Local: .jacques/sessions/" }), _jsx(Text, { color: MUTED_TEXT, children: "Global: ~/.jacques/archive/" }), _jsxs(Text, { color: MUTED_TEXT, children: ["Size: ", success.fileSize] }), _jsx(Box, {}), _jsx(Text, { color: MUTED_TEXT, children: "[Enter] or [Esc] to continue" }));
10
+ }
11
+ else if (error) {
12
+ allContentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Save Context" }), _jsx(Text, { color: MUTED_TEXT, children: "─".repeat(40) }), _jsx(Box, {}), _jsxs(Text, { color: ERROR_COLOR, children: ["\u2717 ", error] }), _jsx(Box, {}), _jsx(Text, { color: MUTED_TEXT, children: "─".repeat(40) }), _jsx(Text, { color: MUTED_TEXT, children: "[Esc] Back" }));
13
+ }
14
+ else if (preview) {
15
+ allContentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Save Context" }), _jsx(Text, { color: MUTED_TEXT, children: "─".repeat(40) }), _jsx(Box, {}), _jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "Session: " }), preview.sessionSlug] }), _jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "Messages: " }), preview.userMessages, " user, ", preview.assistantMessages, " assistant"] }), _jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "Tool calls: " }), preview.toolCalls] }), _jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "Duration: " }), preview.durationMinutes, " min"] }), _jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "Filter: " }), preview.filterLabel || "Without Tools", _jsx(Text, { color: MUTED_TEXT, children: " (from Settings)" })] }), _jsx(Box, {}), _jsx(Text, { color: MUTED_TEXT, children: "Saves to:" }), _jsx(Text, { color: MUTED_TEXT, children: " \u2022 Local: .jacques/sessions/" }), _jsx(Text, { color: MUTED_TEXT, children: " \u2022 Global: ~/.jacques/archive/" }), _jsx(Box, {}), _jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "Label (optional): " }), label || "", "_"] }), _jsx(Box, {}), _jsx(Text, { color: MUTED_TEXT, children: "[Enter] Save [Esc] Back" }));
16
+ }
17
+ else {
18
+ allContentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Save Context" }), _jsx(Text, { color: MUTED_TEXT, children: "─".repeat(40) }), _jsx(Box, {}), _jsx(Text, { color: MUTED_TEXT, children: "Loading session data..." }));
19
+ }
20
+ // Apply scrolling - calculate visible window
21
+ const HEADER_LINES = 2; // title + separator
22
+ const maxVisibleItems = FIXED_CONTENT_HEIGHT - HEADER_LINES;
23
+ const totalItems = allContentLines.length;
24
+ const canScrollUp = scrollOffset > 0;
25
+ const canScrollDown = scrollOffset + maxVisibleItems < totalItems;
26
+ // Get visible slice
27
+ const visibleContent = allContentLines.slice(scrollOffset, scrollOffset + maxVisibleItems);
28
+ // Build final content with scroll indicators
29
+ const contentLines = [];
30
+ // Add scroll-up indicator if needed
31
+ if (canScrollUp) {
32
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "\u25B2 scroll up" }));
33
+ }
34
+ contentLines.push(...visibleContent);
35
+ // Add scroll-down indicator if needed
36
+ if (canScrollDown) {
37
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "\u25BC scroll down" }));
38
+ }
39
+ return useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion }));
40
+ }
41
+ //# sourceMappingURL=SaveContextView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SaveContextView.js","sourceRoot":"","sources":["../../src/components/SaveContextView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * SessionDetails Component
3
+ *
4
+ * Displays detailed information about the focused session.
5
+ * Shows title, model, project, context usage, auto-compact status, and warnings.
6
+ */
7
+ import React from "react";
8
+ import type { Session } from "@jacques-ai/core";
9
+ interface SessionDetailsProps {
10
+ session: Session | undefined;
11
+ }
12
+ export declare function SessionDetails({ session, }: SessionDetailsProps): React.ReactElement;
13
+ export default SessionDetails;
14
+ //# sourceMappingURL=SessionDetails.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionDetails.d.ts","sourceRoot":"","sources":["../../src/components/SessionDetails.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,KAAK,EAAE,OAAO,EAAqB,MAAM,kBAAkB,CAAC;AAEnE,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,GAAG,SAAS,CAAC;CAC9B;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,GACR,EAAE,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAwD1C;AA6JD,eAAe,cAAc,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { ProgressBar } from "./ProgressBar.js";
4
+ import { formatTokens } from "../utils/format.js";
5
+ import { ACCENT_COLOR, WARNING_COLOR, ERROR_COLOR, SUCCESS_COLOR } from "./layout/theme.js";
6
+ export function SessionDetails({ session, }) {
7
+ if (!session) {
8
+ return (_jsx(Box, { flexDirection: "column", paddingLeft: 1, children: _jsx(Text, { color: "gray", children: "No session focused" }) }));
9
+ }
10
+ const title = session.session_title || "Untitled Session";
11
+ const model = session.model?.display_name || session.model?.id || "Unknown";
12
+ const statusIcon = getStatusIcon(session.status);
13
+ return (_jsxs(Box, { flexDirection: "column", paddingLeft: 1, children: [_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: "white", children: ["Active Session:", " "] }), _jsx(Text, { children: title })] }), _jsxs(Text, { children: [_jsxs(Text, { bold: true, color: "white", children: ["Model:", " "] }), _jsxs(Text, { children: [model, " "] }), _jsxs(Text, { children: [statusIcon, " "] }), _jsx(Text, { color: "gray", children: session.status })] }), _jsxs(Text, { children: [_jsxs(Text, { bold: true, color: "white", children: ["Project:", " "] }), _jsx(Text, { color: ACCENT_COLOR, children: session.project })] }), _jsx(Box, { marginTop: 1, children: _jsx(ContextMetricsDisplay, { session: session }) }), _jsx(Box, { marginTop: 1, children: _jsx(AutoCompactDisplay, { autocompact: session.autocompact, contextUsed: session.context_metrics?.used_percentage }) }), _jsxs(Text, { color: "gray", children: ["Last activity: ", formatRelativeTime(session.last_activity)] })] }));
14
+ }
15
+ function ContextMetricsDisplay({ session, }) {
16
+ const metrics = session.context_metrics;
17
+ if (!metrics) {
18
+ return _jsx(Text, { color: "gray", children: "Context metrics not yet available" });
19
+ }
20
+ const pct = metrics.used_percentage;
21
+ const total = formatTokens(metrics.context_window_size, { precise: true });
22
+ const used = formatTokens(metrics.total_input_tokens + metrics.total_output_tokens, { precise: true });
23
+ const isEstimate = metrics.is_estimate ?? false;
24
+ const estimatePrefix = isEstimate ? "~" : "";
25
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: "white", children: ["Context Used:", " "] }), _jsxs(Text, { children: [estimatePrefix, pct.toFixed(1), "%"] })] }), _jsxs(Box, { children: [_jsx(ProgressBar, { percentage: pct, width: 30, showLabel: false, isEstimate: isEstimate }), _jsxs(Text, { color: "gray", children: [" ", estimatePrefix, used, " / ", total] })] }), pct >= 80 && (_jsx(Text, { color: ERROR_COLOR, bold: true, children: "\u26A0\uFE0F Context nearly full! Consider compacting." })), pct >= 60 && pct < 80 && (_jsx(Text, { color: WARNING_COLOR, children: "\u26A0\uFE0F Context usage is moderate" }))] }));
26
+ }
27
+ function AutoCompactDisplay({ autocompact, contextUsed, }) {
28
+ if (!autocompact) {
29
+ return (_jsxs(Text, { color: "gray", children: [_jsxs(Text, { bold: true, color: "white", children: ["Auto-compact:", " "] }), _jsx(Text, { children: "Unknown (press [a] to toggle)" })] }));
30
+ }
31
+ const { enabled, threshold, bug_threshold } = autocompact;
32
+ const pct = contextUsed ?? 0;
33
+ // Determine warning level based on context usage and auto-compact settings
34
+ let warningText = null;
35
+ let warningColor = WARNING_COLOR;
36
+ if (!enabled && bug_threshold) {
37
+ // Auto-compact disabled but bug may trigger at 78%
38
+ // IMPORTANT: Known bug #18264 - setting is IGNORED, triggers at ~78% anyway
39
+ if (pct >= 70) {
40
+ warningText = `⚠️ CRITICAL: Bug #18264 may trigger auto-compact at ~${bug_threshold}%!`;
41
+ warningColor = ERROR_COLOR;
42
+ }
43
+ else if (pct >= 60) {
44
+ warningText = `Warning: Bug #18264 may trigger at ~${bug_threshold}% despite setting`;
45
+ warningColor = WARNING_COLOR;
46
+ }
47
+ }
48
+ else if (enabled) {
49
+ // Auto-compact enabled, warn when approaching threshold
50
+ const warningThreshold = threshold - 15;
51
+ if (pct >= warningThreshold) {
52
+ warningText = `Approaching auto-compact at ${threshold}%`;
53
+ warningColor = pct >= threshold - 5 ? ERROR_COLOR : WARNING_COLOR;
54
+ }
55
+ }
56
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: "white", children: ["Auto-compact:", " "] }), _jsxs(Text, { color: enabled ? SUCCESS_COLOR : WARNING_COLOR, bold: true, children: ["[", enabled ? "ON" : "OFF", "]"] }), enabled ? (_jsxs(Text, { color: "gray", children: [" at ", threshold, "%"] })) : (_jsxs(Text, { color: ERROR_COLOR, children: [" (BUG: still triggers at ~", bug_threshold, "%!)"] })), _jsx(Text, { color: "gray", children: " [a] toggle" })] }), warningText && _jsx(Text, { color: warningColor, children: warningText })] }));
57
+ }
58
+ function getStatusIcon(status) {
59
+ switch (status) {
60
+ case "working":
61
+ return "⚡";
62
+ case "idle":
63
+ return "💤";
64
+ case "active":
65
+ return "●";
66
+ default:
67
+ return "○";
68
+ }
69
+ }
70
+ function formatRelativeTime(timestamp) {
71
+ const now = Date.now() / 1000;
72
+ const diff = now - timestamp;
73
+ if (diff < 60) {
74
+ return `${Math.floor(diff)}s ago`;
75
+ }
76
+ else if (diff < 3600) {
77
+ return `${Math.floor(diff / 60)}m ago`;
78
+ }
79
+ else if (diff < 86400) {
80
+ return `${Math.floor(diff / 3600)}h ago`;
81
+ }
82
+ else {
83
+ return `${Math.floor(diff / 86400)}d ago`;
84
+ }
85
+ }
86
+ export default SessionDetails;
87
+ //# sourceMappingURL=SessionDetails.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionDetails.js","sourceRoot":"","sources":["../../src/components/SessionDetails.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * SessionsExperimentView Component
3
+ *
4
+ * Active sessions grouped by worktree. Responsive layout:
5
+ * - Wide (≥62): bordered box with mascot column + shortcuts
6
+ * - Narrow (<62): flat vertical with mascot at top, no border
7
+ *
8
+ * Both layouts render at natural/minimum height and scroll
9
+ * when the terminal is shorter than the content.
10
+ */
11
+ import React from "react";
12
+ import type { ContentItem } from "../hooks/useSessionsExperiment.js";
13
+ interface SessionsExperimentViewProps {
14
+ items: ContentItem[];
15
+ selectableIndices: number[];
16
+ selectedIndex: number;
17
+ selectedIds: Set<string>;
18
+ showHelp: boolean;
19
+ scrollBias: number;
20
+ notification: string | null;
21
+ terminalWidth: number;
22
+ terminalHeight: number;
23
+ isCreatingWorktree: boolean;
24
+ newWorktreeName: string;
25
+ worktreeCreateError: string | null;
26
+ repoRoot: string | null;
27
+ creatingForRepoRoot: string | null;
28
+ projectName: string | null;
29
+ removeDeleteBranch: boolean;
30
+ removeForce: boolean;
31
+ scanning?: boolean;
32
+ }
33
+ export declare function SessionsExperimentView({ items, selectableIndices, selectedIndex, selectedIds, showHelp, scrollBias, notification, terminalWidth, terminalHeight, isCreatingWorktree, newWorktreeName, worktreeCreateError, repoRoot, creatingForRepoRoot, projectName, removeDeleteBranch, removeForce, scanning, }: SessionsExperimentViewProps): React.ReactElement;
34
+ export {};
35
+ //# sourceMappingURL=SessionsExperimentView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SessionsExperimentView.d.ts","sourceRoot":"","sources":["../../src/components/SessionsExperimentView.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAiB,MAAM,OAAO,CAAC;AAiBtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAMrE,UAAU,2BAA2B;IACnC,KAAK,EAAE,WAAW,EAAE,CAAC;IACrB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACzB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAkBD,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,QAAQ,EACR,UAAU,EACV,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,eAAe,EACf,mBAAmB,EACnB,QAAQ,EACR,mBAAmB,EACnB,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,QAAQ,GACT,EAAE,2BAA2B,GAAG,KAAK,CAAC,YAAY,CAyiBlD"}