@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,72 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * LLM Working View
4
+ *
5
+ * Displays LLM operation progress with spinner, streaming text preview,
6
+ * and token counts. Handles its own layout (horizontal/vertical).
7
+ */
8
+ import { useState, useEffect } from "react";
9
+ import { Text } from "ink";
10
+ import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, HORIZONTAL_LAYOUT_MIN_WIDTH, } from "./layout/index.js";
11
+ import { formatTokens, formatElapsedTime } from "../utils/format.js";
12
+ const SPINNER_FRAMES = ["⠋", "⠙", "⠹", "⠸", "⠼", "⠴", "⠦", "⠧", "⠇", "⠏"];
13
+ export function LLMWorkingView({ title, description, elapsedSeconds, streamingText = "", inputTokens = 0, outputTokens = 0, currentStage = "", terminalWidth, }) {
14
+ const [spinnerIndex, setSpinnerIndex] = useState(0);
15
+ const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
16
+ const showVersion = terminalWidth >= 70;
17
+ useEffect(() => {
18
+ const interval = setInterval(() => {
19
+ setSpinnerIndex((prev) => (prev + 1) % SPINNER_FRAMES.length);
20
+ }, 80);
21
+ return () => clearInterval(interval);
22
+ }, []);
23
+ const contentLines = [];
24
+ // Line 1: Title with spinner and token counts
25
+ const hasTokens = inputTokens > 0 || outputTokens > 0;
26
+ contentLines.push(_jsxs(Text, { children: [_jsxs(Text, { color: ACCENT_COLOR, bold: true, children: [SPINNER_FRAMES[spinnerIndex], " ", title] }), hasTokens && (_jsxs(Text, { color: MUTED_TEXT, children: [" ", "| ", formatTokens(inputTokens), " in / ", formatTokens(outputTokens), " out"] }))] }, "title"));
27
+ // Line 2: Empty spacer
28
+ contentLines.push(_jsx(Text, { children: " " }, "spacer1"));
29
+ // Line 3: Current stage or description
30
+ const displayStage = currentStage || description || "";
31
+ contentLines.push(_jsx(Text, { color: displayStage ? MUTED_TEXT : undefined, children: displayStage || " " }, "stage"));
32
+ // Lines 4-6: Live streaming output preview (last 3 lines)
33
+ if (streamingText.length > 0) {
34
+ const streamLines = streamingText.split("\n").filter(l => l.trim());
35
+ const lastLines = streamLines.slice(-3);
36
+ const maxLineWidth = Math.min(50, terminalWidth - 20);
37
+ lastLines.forEach((line, i) => {
38
+ const truncatedLine = line.length > maxLineWidth
39
+ ? line.substring(0, maxLineWidth - 3) + "..."
40
+ : line;
41
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: truncatedLine }, `stream${i}`));
42
+ });
43
+ // Pad to have 3 streaming lines
44
+ while (contentLines.length < 6) {
45
+ contentLines.push(_jsx(Text, { children: " " }, `streampad${contentLines.length}`));
46
+ }
47
+ }
48
+ else {
49
+ contentLines.push(_jsx(Text, { children: " " }, "spacer2"));
50
+ contentLines.push(_jsx(Text, { children: " " }, "spacer3"));
51
+ contentLines.push(_jsx(Text, { children: " " }, "spacer4"));
52
+ }
53
+ // Line 7: Stats line (elapsed time and char count)
54
+ const statsLine = [];
55
+ if (elapsedSeconds !== undefined) {
56
+ statsLine.push(`Elapsed: ${formatElapsedTime(elapsedSeconds)}`);
57
+ }
58
+ if (streamingText.length > 0) {
59
+ statsLine.push(`${streamingText.length.toLocaleString()} chars`);
60
+ }
61
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: statsLine.join(" | ") || " " }, "stats"));
62
+ // Line 8: Empty spacer
63
+ contentLines.push(_jsx(Text, { children: " " }, "spacer6"));
64
+ // Line 9: Tip
65
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, dimColor: true, children: "Press Esc to cancel" }, "tip"));
66
+ // Pad to 10 lines
67
+ while (contentLines.length < 10) {
68
+ contentLines.push(_jsx(Text, { children: " " }, `pad${contentLines.length}`));
69
+ }
70
+ return useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion }));
71
+ }
72
+ //# sourceMappingURL=LLMWorkingView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LLMWorkingView.js","sourceRoot":"","sources":["../../src/components/LLMWorkingView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * LoadContextView Component
3
+ *
4
+ * First screen when user selects "Load Context" from main menu.
5
+ * Uses the same bordered layout with mascot as the main dashboard.
6
+ */
7
+ import React from "react";
8
+ interface LoadContextViewProps {
9
+ selectedIndex: number;
10
+ terminalWidth: number;
11
+ }
12
+ interface LoadOption {
13
+ key: string;
14
+ label: string;
15
+ description: string;
16
+ enabled: boolean;
17
+ }
18
+ declare const LOAD_OPTIONS: LoadOption[];
19
+ export declare function LoadContextView({ selectedIndex, terminalWidth, }: LoadContextViewProps): React.ReactElement;
20
+ export { LOAD_OPTIONS };
21
+ export type { LoadOption };
22
+ //# sourceMappingURL=LoadContextView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadContextView.d.ts","sourceRoot":"","sources":["../../src/components/LoadContextView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,UAAU,oBAAoB;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,UAAU,UAAU;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,QAAA,MAAM,YAAY,EAAE,UAAU,EAa7B,CAAC;AAEF,wBAAgB,eAAe,CAAC,EAC9B,aAAa,EACb,aAAa,GACd,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAiE3C;AA6HD,OAAO,EAAE,YAAY,EAAE,CAAC;AACxB,YAAY,EAAE,UAAU,EAAE,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { MASCOT_ANSI } from "../assets/mascot-ansi.js";
4
+ import { ACCENT_COLOR, MUTED_TEXT, BORDER_COLOR } from "./layout/index.js";
5
+ const MASCOT_WIDTH = 14;
6
+ const MIN_CONTENT_WIDTH = 42;
7
+ const CONTENT_PADDING = 2;
8
+ const HORIZONTAL_LAYOUT_MIN_WIDTH = 62;
9
+ const FIXED_CONTENT_HEIGHT = 10;
10
+ const LOAD_OPTIONS = [
11
+ {
12
+ key: "saved",
13
+ label: "Load from saved conversations",
14
+ description: "Load from .context/saved/",
15
+ enabled: false, // Not implemented yet
16
+ },
17
+ {
18
+ key: "sources",
19
+ label: "Load from other sources",
20
+ description: "Import from Obsidian, Docs, Notion",
21
+ enabled: true,
22
+ },
23
+ ];
24
+ export function LoadContextView({ selectedIndex, terminalWidth, }) {
25
+ const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
26
+ const showVersion = terminalWidth >= 70;
27
+ // Build content lines
28
+ const contentLines = [];
29
+ // Title
30
+ contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: "Load Context" }, "title"));
31
+ // Separator
32
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(35) }, "sep"));
33
+ // Options
34
+ for (let i = 0; i < LOAD_OPTIONS.length; i++) {
35
+ const option = LOAD_OPTIONS[i];
36
+ const isSelected = i === selectedIndex;
37
+ const textColor = option.enabled
38
+ ? isSelected
39
+ ? ACCENT_COLOR
40
+ : "white"
41
+ : MUTED_TEXT;
42
+ contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? "> " : " ", option.label, !option.enabled && _jsx(Text, { color: MUTED_TEXT, children: " (soon)" })] }, option.key));
43
+ contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: [" ", option.description] }, `${option.key}-desc`));
44
+ }
45
+ // Pad to fixed height
46
+ while (contentLines.length < FIXED_CONTENT_HEIGHT) {
47
+ contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
48
+ }
49
+ return (_jsx(Box, { width: terminalWidth, flexDirection: "column", children: useHorizontalLayout ? (_jsx(LoadHorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, showVersion: showVersion })) : (_jsx(LoadVerticalLayout, { content: contentLines, showVersion: showVersion })) }));
50
+ }
51
+ function LoadVerticalLayout({ content, showVersion, }) {
52
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: ["Jacques", showVersion && _jsx(Text, { color: MUTED_TEXT, children: " v0.1.0" })] }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { wrap: "truncate-end", children: MASCOT_ANSI }) }), _jsx(Box, { flexDirection: "column", marginTop: 1, children: content.map((line, index) => (_jsx(Box, { children: line }, index))) }), _jsx(Box, { marginTop: 1, children: _jsx(Text, { color: MUTED_TEXT, children: "[\u2191\u2193] Navigate [Enter] Select [Esc] Back" }) })] }));
53
+ }
54
+ function LoadHorizontalLayout({ content, terminalWidth = 80, showVersion, }) {
55
+ const mascotVisualWidth = MASCOT_WIDTH;
56
+ const mascotPadding = 3;
57
+ const mascotDisplayWidth = mascotVisualWidth + mascotPadding;
58
+ const contentWidth = Math.max(MIN_CONTENT_WIDTH, terminalWidth - mascotDisplayWidth - 3);
59
+ const mascotLines = MASCOT_ANSI.split("\n").filter((line) => line.trim().length > 0);
60
+ const mascotHeight = mascotLines.length;
61
+ const totalHeight = FIXED_CONTENT_HEIGHT;
62
+ const mascotTopPadding = Math.floor((totalHeight - mascotHeight) / 2);
63
+ const visibleContent = content.slice(0, totalHeight);
64
+ const titlePart = "─ Jacques";
65
+ const versionPart = showVersion ? " v0.1.0" : "";
66
+ const titleLength = titlePart.length + versionPart.length;
67
+ const remainingBorder = Math.max(0, terminalWidth - titleLength - 3);
68
+ const bottomControlsText = "[Enter] Select [Esc] Back";
69
+ const bottomControlsLength = bottomControlsText.length;
70
+ const totalBottomDashes = terminalWidth - bottomControlsLength - 2;
71
+ const bottomLeftBorder = Math.max(0, Math.floor(totalBottomDashes / 2));
72
+ const bottomRightBorder = Math.max(0, totalBottomDashes - bottomLeftBorder);
73
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { children: [_jsx(Text, { color: BORDER_COLOR, children: "\u256D" }), _jsx(Text, { color: ACCENT_COLOR, children: titlePart }), showVersion && _jsx(Text, { color: MUTED_TEXT, children: versionPart }), _jsxs(Text, { color: BORDER_COLOR, children: [" ", "─".repeat(remainingBorder), "\u256E"] })] }), Array.from({ length: totalHeight }).map((_, rowIndex) => {
74
+ const mascotLineIndex = rowIndex - mascotTopPadding;
75
+ const mascotLine = mascotLineIndex >= 0 && mascotLineIndex < mascotLines.length
76
+ ? mascotLines[mascotLineIndex]
77
+ : "";
78
+ const contentLine = visibleContent[rowIndex];
79
+ return (_jsxs(Box, { flexDirection: "row", children: [_jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: mascotDisplayWidth, justifyContent: "center", flexShrink: 0, children: _jsx(Text, { wrap: "truncate-end", children: mascotLine }) }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" }), _jsx(Box, { width: contentWidth, paddingLeft: CONTENT_PADDING, paddingRight: CONTENT_PADDING, flexShrink: 0, children: contentLine || _jsx(Text, { children: " " }) }), _jsx(Text, { color: BORDER_COLOR, children: "\u2502" })] }, rowIndex));
80
+ }), _jsxs(Box, { children: [_jsxs(Text, { color: BORDER_COLOR, children: ["\u2570", "─".repeat(bottomLeftBorder)] }), _jsx(Text, { color: ACCENT_COLOR, children: "[Enter]" }), _jsx(Text, { color: MUTED_TEXT, children: " Select " }), _jsx(Text, { color: ACCENT_COLOR, children: "[Esc]" }), _jsx(Text, { color: MUTED_TEXT, children: " Back" }), _jsxs(Text, { color: BORDER_COLOR, children: ["─".repeat(bottomRightBorder), "\u256F"] })] })] }));
81
+ }
82
+ export { LOAD_OPTIONS };
83
+ //# sourceMappingURL=LoadContextView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LoadContextView.js","sourceRoot":"","sources":["../../src/components/LoadContextView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * MainMenuView Component
3
+ *
4
+ * Renders the main menu with project name title, progress bar,
5
+ * status line (mode/state/worktree), and navigation menu.
6
+ */
7
+ import React from "react";
8
+ import type { Session } from "@jacques-ai/core";
9
+ interface MainMenuViewProps {
10
+ sessions: Session[];
11
+ focusedSession: Session | null;
12
+ selectedMenuIndex: number;
13
+ notification: string | null;
14
+ terminalWidth: number;
15
+ selectedProject?: string | null;
16
+ scanning?: boolean;
17
+ }
18
+ export declare function MainMenuView({ sessions, focusedSession, selectedMenuIndex, notification, terminalWidth, selectedProject, scanning, }: MainMenuViewProps): React.ReactElement;
19
+ export {};
20
+ //# sourceMappingURL=MainMenuView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainMenuView.d.ts","sourceRoot":"","sources":["../../src/components/MainMenuView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAGhD,UAAU,iBAAiB;IACzB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,cAAc,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,QAAQ,GACT,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAgFxC"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text } from "ink";
3
+ import { ProgressLine } from "./shared/ProgressLine.js";
4
+ import { StatusLine } from "./shared/StatusLine.js";
5
+ import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, HORIZONTAL_LAYOUT_MIN_WIDTH, } from "./layout/index.js";
6
+ import { MENU_ITEMS } from "../utils/constants.js";
7
+ import { getProjectGroupKey } from "@jacques-ai/core";
8
+ import { ScanningIndicator } from "./shared/ScanningIndicator.js";
9
+ export function MainMenuView({ sessions, focusedSession, selectedMenuIndex, notification, terminalWidth, selectedProject, scanning, }) {
10
+ const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
11
+ const showVersion = terminalWidth >= 70;
12
+ // Derive project name: selected project > git repo root name > session project > fallback
13
+ const projectName = selectedProject
14
+ || (focusedSession ? getProjectGroupKey(focusedSession) : null)
15
+ || "Jacques";
16
+ // Dynamic session count label for menu item 1
17
+ const sessionLabel = `All Sessions${sessions.length > 0 ? ` (${sessions.length})` : ""}`;
18
+ const contentLines = [];
19
+ contentLines.push(_jsx(Text, { children: " " }, "spacer-top"));
20
+ if (focusedSession) {
21
+ const sessionTitle = focusedSession.session_title || "Untitled session";
22
+ const maxTitleLen = Math.max(10, terminalWidth - 4); // 2 for "$ " + some margin
23
+ const truncatedTitle = sessionTitle.length > maxTitleLen
24
+ ? sessionTitle.substring(0, maxTitleLen - 1) + "\u2026"
25
+ : sessionTitle;
26
+ contentLines.push(_jsxs(Text, { children: [_jsx(Text, { color: MUTED_TEXT, children: "> " }), _jsx(Text, { color: ACCENT_COLOR, children: projectName })] }, "project-line"));
27
+ contentLines.push(_jsxs(Text, { wrap: "truncate-end", children: [_jsx(Text, { color: MUTED_TEXT, children: "$ " }), _jsx(Text, { color: "white", children: truncatedTitle })] }, "session-title"));
28
+ contentLines.push(_jsx(ProgressLine, { session: focusedSession }, "progress"));
29
+ contentLines.push(_jsx(StatusLine, { session: focusedSession }, "status"));
30
+ }
31
+ else {
32
+ contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: projectName }, "title"));
33
+ contentLines.push(scanning
34
+ ? _jsx(ScanningIndicator, {}, "scanning")
35
+ : _jsx(Text, { color: MUTED_TEXT, children: "No active sessions" }, "no-session"));
36
+ }
37
+ contentLines.push(_jsx(Text, { children: " " }, "spacer-mid"));
38
+ MENU_ITEMS.forEach((item, index) => {
39
+ const isSelected = index === selectedMenuIndex;
40
+ const textColor = item.enabled
41
+ ? isSelected ? ACCENT_COLOR : "white"
42
+ : MUTED_TEXT;
43
+ const label = item.key === "1" ? sessionLabel : item.label;
44
+ contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? "\u25B8 " : " ", label] }, item.key));
45
+ });
46
+ contentLines.push(_jsx(Text, { children: " " }, "spacer-bot"));
47
+ return useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion, sessionCount: sessions.length, notification: notification })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion, sessionCount: sessions.length, notification: notification }));
48
+ }
49
+ //# sourceMappingURL=MainMenuView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MainMenuView.js","sourceRoot":"","sources":["../../src/components/MainMenuView.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,2BAA2B,GAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAEtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAYlE,MAAM,UAAU,YAAY,CAAC,EAC3B,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,YAAY,EACZ,aAAa,EACb,eAAe,EACf,QAAQ,GACU;IAClB,MAAM,mBAAmB,GAAG,aAAa,IAAI,2BAA2B,CAAC;IACzE,MAAM,WAAW,GAAG,aAAa,IAAI,EAAE,CAAC;IAExC,0FAA0F;IAC1F,MAAM,WAAW,GAAG,eAAe;WAC9B,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;WAC5D,SAAS,CAAC;IAEf,8CAA8C;IAC9C,MAAM,YAAY,GAAG,eAAe,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAEzF,MAAM,YAAY,GAAsB,EAAE,CAAC;IAE3C,YAAY,CAAC,IAAI,CAAC,KAAC,IAAI,qBAAK,YAAY,CAAS,CAAC,CAAC;IAEnD,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,YAAY,GAAG,cAAc,CAAC,aAAa,IAAI,kBAAkB,CAAC;QACxE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,2BAA2B;QAChF,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,GAAG,WAAW;YACtD,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,GAAG,QAAQ;YACvD,CAAC,CAAC,YAAY,CAAC;QACjB,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,mBAAc,EACrC,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,YAAG,WAAW,GAAQ,KAFvC,cAAc,CAGjB,CACR,CAAC;QACF,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,IAAqB,IAAI,EAAC,cAAc,aAC3C,KAAC,IAAI,IAAC,KAAK,EAAE,UAAU,mBAAW,EAClC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,YAAE,cAAc,GAAQ,KAFnC,eAAe,CAGlB,CACR,CAAC;QACF,YAAY,CAAC,IAAI,CAAC,KAAC,YAAY,IAAgB,OAAO,EAAE,cAAc,IAAlC,UAAU,CAA4B,CAAC,CAAC;QAC5E,YAAY,CAAC,IAAI,CAAC,KAAC,UAAU,IAAc,OAAO,EAAE,cAAc,IAAhC,QAAQ,CAA4B,CAAC,CAAC;IAC1E,CAAC;SAAM,CAAC;QACN,YAAY,CAAC,IAAI,CAAC,KAAC,IAAI,IAAa,IAAI,QAAC,KAAK,EAAE,YAAY,YAAG,WAAW,IAA9C,OAAO,CAA+C,CAAC,CAAC;QACpF,YAAY,CAAC,IAAI,CACf,QAAQ;YACN,CAAC,CAAC,KAAC,iBAAiB,MAAK,UAAU,CAAG;YACtC,CAAC,CAAC,KAAC,IAAI,IAAkB,KAAK,EAAE,UAAU,oCAA9B,YAAY,CAA6C,CACxE,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,IAAI,CAAC,KAAC,IAAI,qBAAK,YAAY,CAAS,CAAC,CAAC;IAEnD,UAAU,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,KAAK,KAAK,iBAAiB,CAAC;QAC/C,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO;YAC5B,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO;YACrC,CAAC,CAAC,UAAU,CAAC;QACf,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAC3D,YAAY,CAAC,IAAI,CACf,MAAC,IAAI,IAAgB,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,aACpD,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,KAD5B,IAAI,CAAC,GAAG,CAEZ,CACR,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,YAAY,CAAC,IAAI,CAAC,KAAC,IAAI,qBAAK,YAAY,CAAS,CAAC,CAAC;IAEnD,OAAO,mBAAmB,CAAC,CAAC,CAAC,CAC3B,KAAC,gBAAgB,IACf,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAC,SAAS,EACf,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,QAAQ,CAAC,MAAM,EAC7B,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC,CAAC,CAAC,CACF,KAAC,cAAc,IACb,OAAO,EAAE,YAAY,EACrB,KAAK,EAAC,SAAS,EACf,WAAW,EAAE,WAAW,EACxB,YAAY,EAAE,QAAQ,CAAC,MAAM,EAC7B,YAAY,EAAE,YAAY,GAC1B,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Mascot Component
3
+ *
4
+ * Jacques Derrida mascot - philosopher with white hair and pipe
5
+ * Supports both vertical (standalone) and inline (compact header) variants
6
+ *
7
+ * Design features:
8
+ * - Fuller white hair with gradient shading (░▒▓)
9
+ * - Expressive eyes with clear spacing
10
+ * - Subtle smile for approachable look
11
+ * - Distinctive pipe character
12
+ */
13
+ import React from "react";
14
+ interface MascotProps {
15
+ variant?: "vertical" | "inline";
16
+ size?: "small" | "large";
17
+ }
18
+ /**
19
+ * Jacques Derrida mascot - philosopher with distinctive features
20
+ * Uses Unicode block elements (U+2580-259F) for terminal art
21
+ */
22
+ export declare function Mascot({ variant, size }: MascotProps): React.ReactElement;
23
+ export default Mascot;
24
+ //# sourceMappingURL=Mascot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mascot.d.ts","sourceRoot":"","sources":["../../src/components/Mascot.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,UAAU,WAAW;IACnB,OAAO,CAAC,EAAE,UAAU,GAAG,QAAQ,CAAC;IAChC,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,EAAE,OAAoB,EAAE,IAAc,EAAE,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CAShG;AA6CD,eAAe,MAAM,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Text, Box } from "ink";
3
+ import { ACCENT_COLOR } from "./layout/theme.js";
4
+ /**
5
+ * Jacques Derrida mascot - philosopher with distinctive features
6
+ * Uses Unicode block elements (U+2580-259F) for terminal art
7
+ */
8
+ export function Mascot({ variant = "vertical", size = "large" }) {
9
+ if (variant === "inline") {
10
+ return _jsx(InlineMascot, {});
11
+ }
12
+ if (size === "small") {
13
+ return _jsx(SmallMascot, {});
14
+ }
15
+ return _jsx(LargeMascot, {});
16
+ }
17
+ /**
18
+ * Inline variant for compact header (3 lines, 12 chars width)
19
+ * Enhanced design with fuller hair and expressive eyes
20
+ */
21
+ function InlineMascot() {
22
+ return (_jsxs(Box, { flexDirection: "column", width: 12, children: [_jsx(Text, { color: "white", children: " \u2591\u2592\u2593\u2593\u2593\u2592\u2591 " }), _jsxs(Text, { children: [_jsx(Text, { color: ACCENT_COLOR, children: "\u2590\u259B \u00BA \u00BA \u259C\u258C" }), _jsx(Text, { color: "gray", children: "\u2596 " })] }), _jsx(Text, { color: ACCENT_COLOR, children: " \u2500\u203F\u2500 " })] }));
23
+ }
24
+ function LargeMascot() {
25
+ // Vertical Jacques Derrida with enhanced features
26
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", children: " \u2591\u2592\u2593\u2593\u2593\u2592\u2591" }), _jsxs(Text, { children: [_jsx(Text, { color: ACCENT_COLOR, children: "\u2590\u259B \u00BA \u00BA \u259C\u258C" }), _jsx(Text, { color: "gray", children: "\u2596" })] }), _jsx(Text, { color: ACCENT_COLOR, children: " \u2500\u203F\u2500" })] }));
27
+ }
28
+ function SmallMascot() {
29
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsx(Text, { color: "white", children: "\u2591\u2592\u2593\u2592\u2591" }), _jsxs(Text, { children: [_jsx(Text, { color: ACCENT_COLOR, children: "\u259B\u00BA\u00BA\u259C" }), _jsx(Text, { color: "gray", children: "\u2596" })] })] }));
30
+ }
31
+ export default Mascot;
32
+ //# sourceMappingURL=Mascot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Mascot.js","sourceRoot":"","sources":["../../src/components/Mascot.tsx"],"names":[],"mappings":";AAcA,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAOjD;;;GAGG;AACH,MAAM,UAAU,MAAM,CAAC,EAAE,OAAO,GAAG,UAAU,EAAE,IAAI,GAAG,OAAO,EAAe;IAC1E,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,KAAC,YAAY,KAAG,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,OAAO,KAAC,WAAW,KAAG,CAAC;IACzB,CAAC;IACD,OAAO,KAAC,WAAW,KAAG,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAS,YAAY;IACnB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAE,EAAE,aACnC,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,+DAAmB,EACtC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,wDAAkB,EAC3C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,wBAAU,IACvB,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,0CAAmB,IACxC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,kDAAkD;IAClD,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,4DAAgB,EACnC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,wDAAkB,EAC3C,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,IACtB,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,oCAAa,IAClC,CACP,CAAC;AACJ,CAAC;AAED,SAAS,WAAW;IAClB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,KAAC,IAAI,IAAC,KAAK,EAAC,OAAO,+CAAa,EAChC,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,YAAY,yCAAa,EACtC,KAAC,IAAI,IAAC,KAAK,EAAC,MAAM,uBAAS,IACtB,IACH,CACP,CAAC;AACJ,CAAC;AAED,eAAe,MAAM,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Menu Component
3
+ *
4
+ * 5-button numbered menu for context management actions.
5
+ * Each item can be enabled or disabled.
6
+ */
7
+ import React from "react";
8
+ export interface MenuItem {
9
+ key: string;
10
+ icon: string;
11
+ label: string;
12
+ enabled: boolean;
13
+ }
14
+ interface MenuProps {
15
+ items: MenuItem[];
16
+ selectedKey: string | null;
17
+ onSelect?: (key: string) => void;
18
+ }
19
+ export declare const DEFAULT_MENU_ITEMS: MenuItem[];
20
+ export declare function Menu({ items, selectedKey }: MenuProps): React.ReactElement;
21
+ export default Menu;
22
+ //# sourceMappingURL=Menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../src/components/Menu.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,UAAU,SAAS;IACjB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAGD,eAAO,MAAM,kBAAkB,EAAE,QAAQ,EAMxC,CAAC;AAEF,wBAAgB,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,EAAE,SAAS,GAAG,KAAK,CAAC,YAAY,CAsB1E;AAmCD,eAAe,IAAI,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { ACCENT_COLOR, BORDER_COLOR } from "./layout/theme.js";
4
+ // Default menu items
5
+ export const DEFAULT_MENU_ITEMS = [
6
+ { key: "1", icon: "💾", label: "Save Current Context", enabled: true },
7
+ { key: "2", icon: "📂", label: "Load Context", enabled: false },
8
+ { key: "3", icon: "📝", label: "Create Handoff", enabled: true },
9
+ { key: "4", icon: "⚙️ ", label: "Settings", enabled: false },
10
+ { key: "5", icon: "❌", label: "Quit", enabled: true },
11
+ ];
12
+ export function Menu({ items, selectedKey }) {
13
+ const boxWidth = 43;
14
+ return (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsxs(Text, { color: BORDER_COLOR, children: ["\u256D", "─".repeat(boxWidth), "\u256E"] }), items.map((item) => (_jsx(MenuItemRow, { item: item, isSelected: selectedKey === item.key, boxWidth: boxWidth }, item.key))), _jsxs(Text, { color: BORDER_COLOR, children: ["\u2570", "─".repeat(boxWidth), "\u256F"] })] }));
15
+ }
16
+ function MenuItemRow({ item, isSelected, boxWidth, }) {
17
+ const { key, icon, label, enabled } = item;
18
+ // Build the label with proper spacing
19
+ const content = ` [${key}] ${icon} ${label}`;
20
+ const padding = boxWidth - content.length;
21
+ const paddedContent = content + " ".repeat(Math.max(0, padding));
22
+ // Determine styling
23
+ const textColor = enabled ? (isSelected ? ACCENT_COLOR : "white") : "gray";
24
+ const borderColor = BORDER_COLOR;
25
+ return (_jsxs(Text, { children: [_jsx(Text, { color: borderColor, children: "\u2502" }), _jsx(Text, { color: textColor, bold: isSelected, children: paddedContent }), _jsx(Text, { color: borderColor, children: "\u2502" })] }));
26
+ }
27
+ export default Menu;
28
+ //# sourceMappingURL=Menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Menu.js","sourceRoot":"","sources":["../../src/components/Menu.tsx"],"names":[],"mappings":";AAQA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAe/D,qBAAqB;AACrB,MAAM,CAAC,MAAM,kBAAkB,GAAe;IAC5C,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE;IACtE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE;IAC/D,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,OAAO,EAAE,IAAI,EAAE;IAChE,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE;IAC5D,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE;CACtD,CAAC;AAEF,MAAM,UAAU,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAa;IACpD,MAAM,QAAQ,GAAG,EAAE,CAAC;IAEpB,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aAEtC,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAS,EAGzD,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CACnB,KAAC,WAAW,IAEV,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,EACpC,QAAQ,EAAE,QAAQ,IAHb,IAAI,CAAC,GAAG,CAIb,CACH,CAAC,EAGF,MAAC,IAAI,IAAC,KAAK,EAAE,YAAY,uBAAI,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAS,IACtD,CACP,CAAC;AACJ,CAAC;AAQD,SAAS,WAAW,CAAC,EACnB,IAAI,EACJ,UAAU,EACV,QAAQ,GACS;IACjB,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAE3C,sCAAsC;IACtC,MAAM,OAAO,GAAG,MAAM,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;IAC1C,MAAM,aAAa,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IAEjE,oBAAoB;IACpB,MAAM,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3E,MAAM,WAAW,GAAG,YAAY,CAAC;IAEjC,OAAO,CACL,MAAC,IAAI,eACH,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,uBAAU,EAClC,KAAC,IAAI,IAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,YACrC,aAAa,GACT,EACP,KAAC,IAAI,IAAC,KAAK,EAAE,WAAW,uBAAU,IAC7B,CACR,CAAC;AACJ,CAAC;AAED,eAAe,IAAI,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * NotionBrowserView Component
3
+ *
4
+ * Page explorer for Notion workspace with nested pages.
5
+ * Uses the same bordered layout as the main dashboard.
6
+ */
7
+ import React from "react";
8
+ import type { FlatTreeItem } from "@jacques-ai/core";
9
+ interface NotionBrowserViewProps {
10
+ workspaceName?: string;
11
+ items: FlatTreeItem[];
12
+ selectedIndex: number;
13
+ scrollOffset: number;
14
+ terminalWidth: number;
15
+ loading?: boolean;
16
+ error?: string | null;
17
+ }
18
+ export declare const NOTION_VISIBLE_ITEMS = 6;
19
+ export declare function NotionBrowserView({ workspaceName, items, selectedIndex, scrollOffset, terminalWidth, loading, error, }: NotionBrowserViewProps): React.ReactElement;
20
+ export {};
21
+ //# sourceMappingURL=NotionBrowserView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionBrowserView.d.ts","sourceRoot":"","sources":["../../src/components/NotionBrowserView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAWrD,UAAU,sBAAsB;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,eAAO,MAAM,oBAAoB,IAAI,CAAC;AAEtC,wBAAgB,iBAAiB,CAAC,EAChC,aAAa,EACb,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAe,EACf,KAAY,GACb,EAAE,sBAAsB,GAAG,KAAK,CAAC,YAAY,CA4I7C"}
@@ -0,0 +1,75 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text } from "ink";
3
+ import { HorizontalLayout, VerticalLayout, ACCENT_COLOR, MUTED_TEXT, ERROR_COLOR, HORIZONTAL_LAYOUT_MIN_WIDTH, FIXED_CONTENT_HEIGHT, } from "./layout/index.js";
4
+ // Visible items in the scrollable area (reserve lines for header/footer)
5
+ export const NOTION_VISIBLE_ITEMS = 6;
6
+ export function NotionBrowserView({ workspaceName, items, selectedIndex, scrollOffset, terminalWidth, loading = false, error = null, }) {
7
+ const useHorizontalLayout = terminalWidth >= HORIZONTAL_LAYOUT_MIN_WIDTH;
8
+ const showVersion = terminalWidth >= 70;
9
+ // Calculate visible window
10
+ const totalItems = items.length;
11
+ const canScrollUp = scrollOffset > 0;
12
+ const canScrollDown = scrollOffset + NOTION_VISIBLE_ITEMS < totalItems;
13
+ // Get visible slice
14
+ const visibleItems = items.slice(scrollOffset, scrollOffset + NOTION_VISIBLE_ITEMS);
15
+ // Build content lines
16
+ const contentLines = [];
17
+ // Title line with workspace name
18
+ const title = workspaceName ? `Notion: ${workspaceName}` : "Notion";
19
+ if (canScrollUp) {
20
+ contentLines.push(_jsxs(Text, { children: [_jsxs(Text, { bold: true, color: ACCENT_COLOR, children: [title, " "] }), _jsx(Text, { color: MUTED_TEXT, children: "\u25B2 more" })] }, "title"));
21
+ }
22
+ else {
23
+ contentLines.push(_jsx(Text, { bold: true, color: ACCENT_COLOR, children: title }, "title"));
24
+ }
25
+ // Separator
26
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "─".repeat(35) }, "sep"));
27
+ // Loading state
28
+ if (loading) {
29
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "Loading pages..." }, "loading"));
30
+ }
31
+ // Error state
32
+ else if (error) {
33
+ contentLines.push(_jsxs(Text, { color: ERROR_COLOR, children: ["\u2717 ", error] }, "error"));
34
+ }
35
+ // Empty state
36
+ else if (items.length === 0) {
37
+ contentLines.push(_jsx(Text, { color: MUTED_TEXT, children: "No pages found" }, "empty"));
38
+ }
39
+ // Page list
40
+ else {
41
+ for (let i = 0; i < visibleItems.length; i++) {
42
+ const item = visibleItems[i];
43
+ const actualIndex = scrollOffset + i;
44
+ const isSelected = actualIndex === selectedIndex;
45
+ const textColor = isSelected ? ACCENT_COLOR : "white";
46
+ // Indentation based on depth
47
+ const indent = " ".repeat(item.depth);
48
+ // Icon and name
49
+ let icon;
50
+ let suffix = "";
51
+ if (item.type === "folder") {
52
+ // Parent page with children
53
+ icon = item.isExpanded ? "▼ " : "▶ ";
54
+ suffix = ` (${item.fileCount})`;
55
+ }
56
+ else {
57
+ // Regular page (the name may already include emoji)
58
+ icon = item.name.match(/^[\p{Emoji}]/u) ? "" : "📄 ";
59
+ }
60
+ contentLines.push(_jsxs(Text, { color: textColor, bold: isSelected, children: [isSelected ? ">" : " ", indent, icon, item.name, _jsx(Text, { color: MUTED_TEXT, children: suffix })] }, item.id));
61
+ }
62
+ }
63
+ // Scroll down indicator or footer
64
+ if (canScrollDown) {
65
+ contentLines.push(_jsxs(Text, { color: MUTED_TEXT, children: ["\u25BC ", totalItems - scrollOffset - NOTION_VISIBLE_ITEMS, " more"] }, "more"));
66
+ }
67
+ // Pad to fixed height
68
+ while (contentLines.length < FIXED_CONTENT_HEIGHT) {
69
+ contentLines.push(_jsx(Box, {}, `pad-${contentLines.length}`));
70
+ }
71
+ const bottomControls = (_jsx(Text, { color: MUTED_TEXT, children: "[Enter] Select [Esc] Back" }));
72
+ // Render with layout
73
+ return (_jsx(Box, { width: terminalWidth, flexDirection: "column", children: useHorizontalLayout ? (_jsx(HorizontalLayout, { content: contentLines, terminalWidth: terminalWidth, title: "Jacques", showVersion: showVersion, bottomControls: bottomControls })) : (_jsx(VerticalLayout, { content: contentLines, title: "Jacques", showVersion: showVersion, bottomControls: bottomControls })) }));
74
+ }
75
+ //# sourceMappingURL=NotionBrowserView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NotionBrowserView.js","sourceRoot":"","sources":["../../src/components/NotionBrowserView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * ObsidianBrowserView Component
3
+ *
4
+ * File explorer for Obsidian vault with expandable folders.
5
+ * Uses the same bordered layout as the main dashboard.
6
+ */
7
+ import React from "react";
8
+ import type { FlatTreeItem } from "@jacques-ai/core";
9
+ interface ObsidianBrowserViewProps {
10
+ vaultName: string;
11
+ items: FlatTreeItem[];
12
+ selectedIndex: number;
13
+ scrollOffset: number;
14
+ terminalWidth: number;
15
+ loading?: boolean;
16
+ error?: string | null;
17
+ }
18
+ declare const VISIBLE_ITEMS = 6;
19
+ export declare function ObsidianBrowserView({ vaultName, items, selectedIndex, scrollOffset, terminalWidth, loading, error, }: ObsidianBrowserViewProps): React.ReactElement;
20
+ export { VISIBLE_ITEMS };
21
+ //# sourceMappingURL=ObsidianBrowserView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ObsidianBrowserView.d.ts","sourceRoot":"","sources":["../../src/components/ObsidianBrowserView.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAYrD,UAAU,wBAAwB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAGD,QAAA,MAAM,aAAa,IAAI,CAAC;AAExB,wBAAgB,mBAAmB,CAAC,EAClC,SAAS,EACT,KAAK,EACL,aAAa,EACb,YAAY,EACZ,aAAa,EACb,OAAe,EACf,KAAY,GACb,EAAE,wBAAwB,GAAG,KAAK,CAAC,YAAY,CA4I/C;AAED,OAAO,EAAE,aAAa,EAAE,CAAC"}